class Outer { static class StaticInner { StaticInner(int i) {} } class NonStaticInner extends StaticInner { NonStaticInner(int i) { super(i); // no implicit arg, as StaticInner is static } } class Inner { Inner(int i) {} } class ChildInner extends Inner { ChildInner() { this(0); // extra Outer implicit arg } ChildInner(int i) { super(i); // extra Outer implicit arg } } }