+++ /dev/null
-namespace A
-{
- public interface IExtensible<T>
- {
- void AddAll<U> (U u)
- where U : T;
- }
-
- public class ArrayList<T> : IExtensible<T>
- {
- void IExtensible<T>.AddAll<U> (U u)
- {
- InsertAll (u);
- }
-
- void InsertAll (T t)
- { }
- }
-}
-
-namespace B
-{
- public interface IExtensible<S,T>
- {
- void AddAll<U> (U t)
- where U : S;
- }
-
- public class ArrayList<X,Y> : IExtensible<Y,X>
- {
- public void AddAll<Z> (Z z)
- where Z : Y
- {
- InsertAll (z);
- }
-
- void InsertAll (Y y)
- { }
- }
-}
-
-namespace C
-{
- public interface IExtensible<S>
- {
- void AddAll<T> (T t)
- where T : S;
- }
-
- public class Foo<U>
- { }
-
- public class ArrayList<X> : IExtensible<Foo<X>>
- {
- public void AddAll<Y> (Y y)
- where Y : Foo<X>
- {
- InsertAll (y);
- }
-
- void InsertAll (Foo<X> foo)
- { }
- }
-}
-
-class X
-{
- static void Main ()
- { }
-}