С виду, все вы верно делаете. Работая с абстрактным объектами, ваш модуль будет знать конкретный тип объектов и вызывать соответствующие методы. Также вы можете еще уточнять алгоритм в зависимости от типа реализации с помощью WITH.

В BlackBox у каждой записи или массива есть тег, в котором содержится дополнительная информация, в том числе, по-видимому, и необходимая для реализации таких механизмов. Этот тег очень важен и для автоматической сборки мусора. А возможно в массиве абстрактных переменных реально уже будут хранится указатели на объекты из реализаций, а различные ограничения на соответствие типов проверяются в момент компиляции... Было бы интересно выяснить точно как это реализовано.