// reference before ctr called import java.io.*; import java.net.*; class a { a(int i) {} a(a a) {} int f() { return 0; } int fi; } class b extends a { int bi; b(int h) { super(bi); } b() { this(bi); } b(String s) { super(db(1) ); } b(int i, int j) { super(f()); } b(int i, int j, int k) { super(super.f()); } b(String s, int i) { super(s.length()); } b(int s, int i, char j) { super(super.fi ); } b(double d) { super(new inner() ); } class inner extends a {inner(){super(1);}} int db(int j) { return 0; } } class enc { int ienc; class bb extends a { int ibb; bb() { super(ienc); } bb(int i) { super(i); } bb(int i, int j) { super(enc.bb.this.ibb ); } bb(int i, String s) { super(enc.this.ienc); } bb(int i, char j) { super(this ); } } enc() { this(new bb()); } enc(bb b) {} } // static are OK class c2 extends a { static final int fi = 4; c2() { super(fi); } c2(int i) { super(sf()); } static int sf() { return 0; } c2(int i, int j) { super(new sc().i); } static class sc { int i; } } interface Callback { void call(); } class Base { Callback callback; public Base(final Callback callback) { this.callback = callback; } } class YellinBug extends Base { public YellinBug() { super(new Callback() { public void call() { YellinBug.this.f(); } }); } private void f() {} { new Callback() { public void call() { YellinBug.this.f(); } }; } } class Outer { class Inner extends Outer{} class UseIt extends Inner{ Outer o; UseIt() { o.super(); } Outer geto() { return null; } UseIt(int x) { geto().super(); } UseIt(Outer x) { this.super(); } } }