program() type File = record fd: Int end Cell#[T] = record held: ^T end var files: Cell#[File] bytes: Cell#[Word8] f: File b: Word8 proc store#[T](target: ^Cell#[T]; value: ^T) target^.held := value return proc relay#[T](target: ^Cell#[T]; value: ^T) store(target, value) return begin store(@files, @f); relay(@bytes, @b); store(@files, cast(0u: ^File)) end.