program() type File = record fd: Int end Node#[T] = record next: ^Node#[T]; value: ^T end Ref#[T] = ^T Boxed#[V] = record inner: ^Node#[V] end var chain: Node#[File] aliased: Ref#[File] raw: ^File boxed: Boxed#[File] begin chain.next := nil; aliased := raw; raw := aliased; boxed.inner := @chain end.