using System;
using System.Collections.Generic;
class BaseClass<T>
where T : IList<string>
{
}
class DerivedClass<T, U>
: BaseClass<List<string>>
where T : U
class AnotherDerivedClass
: DerivedClass<Exception, OverflowException>