// Compare this to gcs0695-*.cs: these are the allowed cases. namespace A { interface I<X> { } interface J<X,Y> : I<X> { } class A<X> : I<X>, I<A<X>> { } class B<X> : I<B<X>>, I<X>, I<A<X>> { } class C<X> : I<int>, I<A<X>> { } class D<X> : I<A<float>>, I<B<X>> { } class E<X,Y> : J<X,Y>, J<I<X>,I<Y>> { } class F<X> : J<X,I<X>>, J<X,X> { } } // bug #69057 namespace B { struct KeyValuePair<K,V> { } interface ITest<T> { } interface ITest2<K,V> : ITest<KeyValuePair<K,V>> { } class MyTest<K,V> : ITest2<K,V>, ITest<KeyValuePair<K,V>> { } } // bug #58303 namespace C { class S <K> { } interface Z<T> { } interface I<K> : Z<S<K>> { } class C <K> : I<K>, Z<S<K>> { } } class Test { public static void Main () { } }