public class T { I a, b; public static I publicStaticFieldOfT = new C(); public I publicFieldOfT; public static I staticMethodA () { return new A(); } public T() { a = null; b = new B(); publicFieldOfT = new D(); } public void setA(I o) { a = o; } public I inout(I arg1, I arg2) { setA(arg1); setA(b); I dummy = arg2; callI(dummy); I newB = new C(); b = newB; I result = methodD(); a = b; methodD(); staticMethodA(); T.staticMethodA(); a = T.publicStaticFieldOfT; a = publicStaticFieldOfT; b = T.staticMethodA(); return a; } public I methodD() { return new D(); } public void callI(I o) { o.foo(); } public class U { I u1, u2; public U() { u1 = T.staticMethodA(); u2 = T.staticMethodA(); } public I inner() { u1 = u2; u1 = methodD(); return a; } public I inner2() { U u = new U(); u.inner(); return inner(); } } }