class Outer {
class Inner1 extends Outer {
Inner1() {}
Inner1(Outer o) {}
}
class Inner2 extends Inner1 {
public Inner2(Object o) {
o.super();
}
public Inner2(int o) {
Outer.this.super();
}
public Inner2(Outer o) {
o.super(Outer.this);
}
public Inner2(Outer o, int par) {
o.super(this);
}
public Inner2(Outer o, Object par) {
this.super(o);
}
}
class BadInner extends Inner1 {
BadInner() {}
}
class BadInner2 extends Inner1 {
}
class s {
void f(Object o) {
new s();
Outer.this.new s();
}
}
}
class Outer2 {
class Inner {}
}
class Ext extends Outer2 {
class ExtInner extends Inner {
ExtInner() {
super();
}
}
}
class C {
C(int i) {
}
int x() {
return 1;
}
}
class D extends C {
D() {
super(D.super.x());
}
}