type Thing = ( int a int when(a>2) b ) func f() return ref takeown Thing { rwref Thing ret = alloc() ret.a = 3 # b does not need to be initialized! return ret } func g() return ref takeown Thing { rwref Thing ret = f() # FIXME how to resolve this! --ret.a return ret } --- or use some kind of (special?) enum type?