class Test1 { interface A { void foo(String x); } interface C extends A { default void foo(T x) { } } class D implements C { } interface E extends C { } } class Test2 { interface A { default void foo(String x) {} } interface C extends A { void foo(T x); } class D implements C {} interface E extends C {} } class Test3 { interface A { default void foo(String x) {} } interface C extends A { default void foo(T x) {} } class D implements C { } interface E extends C { } } class Test4 { interface A { void foo(String x); } interface C extends A { void foo(T x); } abstract class D implements C, A { } interface E extends C, A {} } class Test5 { interface A { void foo(String x); } abstract class B implements A { } interface C extends A { default void foo(T x) { } } class D extends B implements C { } } class Test6 { interface A { default void foo(String s) { } } interface B extends A {} interface C extends A { default void foo(T t) {} } abstract static class D implements C, B { } static class E extends D {} }