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] program() begin wrong := @jobs (* @Error Expected type '\^List#\[\^Socket\]', but got '\^Queue#\[\^File\]' *) return 0u8 end.