class A { } class B() class C() {} public class D class E1<T> class E2<T, R> class E3<T,R> class F1 : A class F2 : A, B class F3 : A<T>