let c = @int(0); let d = @int(0); class foo { foo() { c = c + 1; } foo(foo x) { c = c + 1; } ~foo() { d = d + 1; } }; fun bar() -> foo@ { return @foo(); /* 1: for the temporary */ } fun zow() { let f = bar(); /* 1: for f */ let b = bar; let g = b(); /* 1: for g */ } fun main() -> int@ { zow(); return c - d; }