type Ref[T] = object when T is ptr: reference: T else: reference: ptr T