An inner class that extends another type can call methods from both the outer class and parent type directly, without prepending
super.
or Outer.this.
.
When both the outer and parent classes contain a method with the same name, the compiler will resolve an unqualified call to the parent type’s
implementation. The maintainer or a future reader may confuse the method call as calling the outer class’s implementation, even though it really calls
the super type’s.
To make matters worse, the maintainer sees the outer class’s implementation in the same file as the call in the inner class, while the parent type
is often declared in another file. The maintainer may not even be aware of the ambiguity present, as they do not see the parent’s implementation.