Клиент может использовать родовой класс для объявления собственных сущностей, задающих стек. В этом случае в момент объявления следует задать фактический тип элементов стека - фактический родовой параметр, например:
sp: STACK [POINT]
Если у класса несколько родовых параметров, то соответственно столько же необходимо задать и фактических параметров.
Предоставление фактических родовых параметров родовому классу для создания типа называется родовым порождением (generic derivation), а полученный в результате класс, такой как STACK [POINT], называют параметрически порожденным классом.
Родовому порождению требуется тип, родовое порождение создает новый тип:
Фактический параметр может быть произвольным типом. Ничто не мешает выбрать тип, который сам по себе параметрически порожден. Предположим, что мы определили другой родовой класс LIST [G], тогда можно определить стек, элементы которого являются списками точек:
slp: STACK [LIST [POINT]]
или, используя STACK [POINT] как фактический родовой параметр, - стек стеков точек:
ssp: STACK [STACK [POINT]]
Нет предела глубины таких вложений, кроме естественной необходимости сохранять простоту программного текста.