абстрактная запись создаётся в одном модуле. экспортированая LIMITED-реализация с некоторыми расширениями — совсем в другом. в этом другом у нас есть фабрика для производства этих LIMITED. таким образом мы защищаемся от попытки создать LIMITED-запись вне фабрики, но позволяем использовать её (записи) расширеный интерфейс.