Копирование в контейнерах
Материал из Deeptown Manual
При записи объекта в контейнер, у целевого объекта вызывается метод Object:dup, результат которого помещается в контейнер. Для простых типов (таких как базовые типы данных, вроде int, real или string) метод dup просто клонирует объект. Однако, в некоторых случаях: объект не может быть продублирован автоматически. Примером такого объекта может послужить инстанция класса Stream. В таком случае, объект помещается в контейнер "как есть", то есть без копирования. Если по логике работы вашего класса требуется выполнить копирование объекта, вам необходимо определить у себя метод dup, который будет выполнять копирование и возвращать копию объекта.