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) begin target^.held := value return proc relay#[T](target: ^Cell#[T]; value: T) begin store(target, value) return program() begin store(@files, @f); relay(@bytes, @b); store(@files, nil) return 0u8 end.