{$MODE OBJFPC} { -*- text -*- } program tests; type generic TFoo1 = class type TFoo2 = class constructor Create(Owner: specialize TFoo1); end; end; constructor TFoo1.TFoo2.Create(Owner: specialize TFoo1); begin end; type TIntegerFoo1 = specialize TFoo1; var Foo1: TIntegerFoo1; Foo2: TIntegerFoo1.TFoo2; begin end.