class A { void foo(Object a) {} } class B extends A { void foo(Unknown b) {} } interface Iiii { void bar(); } class C extends Unknown implements UnknownI, Iiii { void foo(Object a) {} void bar() {} void notAnywhere() {} } class D extends A { void foo(Object a) {} void doesNotOverride() {} } class E { void foo(Unknown a, Object b) {} void foo(Object a, Unknown b) {} } class F extends E { void foo(UnknownF a, UnknownF2 b) {} }