class Bar { public G g; public Bar (G g) { this.g = g; assert (g == "bar"); } } void bar (Bar g) { var t = (owned) g.g; assert (g.g == null); assert (t == "bar"); } void foo (owned G g) { var t = (owned) g; assert (g == null); assert (t == "foo"); } void main () { { foo ("foo"); } { bar (new Bar ("bar")); } { var bar = new Bar ("bar"); var t = (owned) bar.g; assert (bar.g == null); assert (t == "bar"); } }