class Aaa { class Inner {} void doSmth(final Inner inner) {} } class Bbb extends Aaa { class SubInner extends Aaa.Inner {} void doSmth(final SubInner inner) {} void ambiguousCall() { doSmth (new SubInner()); } }