> -- Цитата:
> Вот чисто теоретически интересно, а откуда Мета узнаёт про тип, который не экспортирован (имею ввиду запись-потомок от Meta.Value), там ведь вроде в документации сказано, что Мета безопасен и работает только с экспортируемыми сущностями? Ну и вообще интересно как он работает.

Чисто теоретически отвечаю
Через сканирование или LookupPath достать неэкспортированные объекты нельзя, после компиляции они не присутствуют в символьном файле и потому по имени недоступны. Но они точно также имеют тэг типа, а значит, можно получить полную информацию об их структуре.

Например, в нашу процедуру приходит ptr: ANYPTR. Мы вызываем Meta.GetItem(ptr) - получаем Item, по которому и работаем. (В Meta, однако, нет процедуры, которая давала бы Item по ANYREC (GetThisItem - это служебная внутренняя процедура - и она делает совсем не то), но это просто мелкая недоработка - такую процедуру легко написать самому, но придется обращаться к Kernel...)

А вообще Meta не делает ничего, кроме как представляет информацию в удобном виде, в Item, позволяет сканировать и т.п.
А всю основную работу делают несколько процедур Kernel - Meta сделан для изоляции от него и для удобства. Поизучайте Kernel - любопытная вещь. Управление динамической типизацией, менеджер памяти и сборщик мусора в 1800 строках

> -- Цитата:
> по идее эта проблема должна затрагивать только экземпляры классов-потомков. Разве нет?
Так и есть. Хрупкость в том смысле, что потомки опираются на нечто ненадежное, что может меняться.
Но, между прочим, это касается и разработчика базового класса. Единожды позволив наследовать реализацию, он очень себя стесняет в развитии, т.к. если много пользователей полагались на какую-нибудь недокументированную особенность, он уже не сможет свободно уйти от этой особенности.