namespace A { typedef here = int; () do_stuff(A this) { } () do_pointer_stuff(A^ this) { } A copy(A this) { return this; } A defval = 0; } (A a) b; A c() { return 2; } () test() { A localvar = 1; A^ localptr = @localvar; localvar->do_stuff(); b.a->do_stuff(); c()->do_stuff(); localptr->do_pointer_stuff(); A other = :defval->copy(); }