3 public abstract class A<T>
5 public abstract G Foo<G> () where G : T;
7 public virtual G Foo2<G> () where G : T
13 public class B : A<int?>
15 public override G Foo<G> ()
20 public override G Foo2<G> ()
22 return base.Foo2<G> ();
28 public abstract void Foo<U> () where U : struct, T;
31 class B2 : A2<System.ValueType>
33 public override void Foo<Y> ()
40 public abstract void Foo<U> () where U : class, T;
43 class B3 : A3<System.Object>
45 public override void Foo<Y> ()
52 public static int Main ()
55 if (b.Foo<int?> () == null)