A.class B implements A { int method1(){} int method2(){} }
B.class B { int method1(int i){} int method2(int j){} }
C.class B implements A { int method1(int i){} int method2(int j){} }
D.class B extends A { int method1(int i){} int method2(int j){} }