interface A { void foo(E item); } interface B1 extends A { @Override default void foo(E item) {} } interface B2 extends A { @Override default void foo(E item) {} } interface C1 extends B1 {} interface C2 extends B2 {} interface Bottom1 extends C2, C1 { @Override default void foo(E item) {} } interface Bottom2 extends C2, C1 { @Override void foo(E item); } interface Bottom3 extends C2, C1 {}