// Bug #79984 using System; class X { public static int Main () { new Derived ().Method<Foo> (); return 0; } } class Foo { public int X; } abstract class Base { public abstract void Method<R> () where R : Foo, new (); } class Derived : Base { public override void Method<S> () { Method2<S> (); // S s = new S (); // Console.WriteLine (s.X); } public void Method2<T> () where T : Foo, new () { T t = new T (); Console.WriteLine (t.X); } }