Тип Integers.Integer непрозрачный:

Integer = POINTER TO IntegerDesc;

и тип IntegerDesc не экспортируется.

Однако, зная что IntegerDesc представлен массивом, я могу написать:

n[0] := 1;(* здесь n: Integers.Integer *)

и компилятор со мной соглашается. По моему, это не правильно.