//prints 5 0 6 6 class C extends Object { var nat n; C identity(C unused) {this;} nat getN(C unused) {this.n;} } main { var C c; printNat( (new C).n=5 ); c = (new C).identity(c).identity(c).identity(c); printNat(c.n); c.identity(c).identity(null).identity(c).identity(null).n = 6; printNat(c.n); printNat(c.identity(c).getN(c)); }