7 public static void Main()
9 new Foo<string>().DoSomething();
13 public class Foo<T> : Bar<Foo<T>>
17 public class Bar<T> : Baz
19 protected override void DoSomethingElse()
23 throw new Exception();
31 public abstract class Baz
33 protected abstract void DoSomethingElse();
35 public virtual void DoSomething()