// Test field declarations and initializers

class A { }
class B extends A { }
class C extends A { }
class D extends A { }
class E extends A { }


class X { 
    X(int x) { 
	g = new C();
    }
    X(boolean b) { 
	g = new D();
    }

    A f = new B();
    A g;
    A h;
    {
	this.h = new E();
    }

    static A sf = new B();
    static A sg;
    static {
	X.sg = new C();
    }

}

class Main {
    static public void main(String[] args) /*throws Exception*/ {
	X c = new X(5); // c.f should have disjoint pointsto set from d.f, and from e.f.
	X d = new X(true);
	X e = new X(7);
    }
}
