program() type File = record fd: Int end Pair#[K, V] = record key: ^K; value: ^V end var entry: Pair#[File, Word8] proc allocate#[T](size: Word) -> ^T extern proc first#[K, V](entry_ptr: ^Pair#[K, V]) -> ^K return entry_ptr^.key begin entry.key := allocate#[File](#size(File)); assert(#size(Pair#[File, Word8]) = #size(^Word8) * 2u); assert(#offset(Pair#[File, Word8], value) = #size(^Word8)); assert(first#[File, Word8](@entry) = entry.key) end.