program() type File = record fd: Int end Socket = record handle: Int end List#[T] = record head: ^T end Queue#[T] = record(List#[T]) tail: ^T end var jobs: Queue#[File] wrong: ^List#[Socket] begin wrong := @jobs (* @Error Expected type '\^List#\[Socket\]', but got '\^Queue#\[File\]' *) end.