using System; public abstract class Foo { public virtual T InsertAll (U u) where U : T { return u; } } public class Bar : Foo { public override T InsertAll (U u) { return u; } } class X { public static void Main () { } }