{ %NORUN } program tw31033; {$MODESWITCH RESULT} {$MODESWITCH ADVANCEDRECORDS} {$MODESWITCH OUT} Type generic TGData = record public type PGData = ^specialize TGData; public b: T; n: PGData; end; generic Procedure DoSomething(out p: specialize TGData.PGData); forward; generic Procedure DoSomething(out p: specialize TGData.PGData); Begin new(p); p^.b := default(T); p^.n := nil End; var pl: specialize TGData.PGData; ps: specialize TGData.PGData; begin specialize DoSomething(pl); specialize DoSomething(pl); end.