using System; public interface IFoo { } public class ArrayList { public virtual int InsertAll (IFoo foo) { return 0; } public virtual int InsertAll (IFoo foo) where U : T { return 1; } public virtual int AddAll (IFoo foo) { return InsertAll (foo); } } class X { public static int Main () { ArrayList list = new ArrayList (); return list.AddAll (null); } }