// Compiler options: -t:library

public interface IA<T>
{
}

public interface IB<T>
{
}

public abstract class A : IA<A>, IB<A>
{
}

public abstract class B : A, IA<B>, IB<B>, IB<C>
{
}

public sealed class C : B, IA<C>
{
}