type File = record fd: Int end List#[T] = record head: T; count: Word end Queue#[T] = record(List#[T]) tail: T end var jobs: Queue#[^File] seen: ^List#[^File] f: File proc push#[T](target: ^List#[T]; value: T) begin target^.head := value; target^.count := target^.count + 1u return proc enqueue#[T](target: ^Queue#[T]; value: T) begin push(target, value); target^.tail := value return program() begin seen := @jobs; enqueue(@jobs, @f); assert(jobs.count = 1u); assert(jobs.head = @f); assert(jobs.tail = @f); assert(#size(Queue#[^File]) = #size(Pointer) * 3u) return 0u8 end.