{ %NORUN } program tw20871; {$MODE delphi} {$DEFINE CAUSE_ERROR} type TInterior = class end; TExterior = class strict private FInterior: TInterior; public constructor Create; destructor Destroy; override; end; constructor TExterior.Create; {$IFDEF CAUSE_ERROR} begin FInterior := TInterior.Create; { ^ Compiler reports here that “<” is expected } {$ELSE} type TSpecializedInterior = TInterior; begin FInterior := TSpecializedInterior.Create; {$ENDIF} end; destructor TExterior.Destroy; begin FInterior.Free; end; begin TExterior.Create.Free; end.