{ %NORUN } program tw22790c; {$MODE DELPHI} type TPredicateMethod = function (const x: TOperand): Boolean of object; TWrapper = class strict private type POperand = ^TOperand; TPredicateMethodForPOperand = TPredicateMethod; TDereferencingAdapter = class function F(const x: POperand): Boolean; end; public procedure Z; end; function TWrapper.TDereferencingAdapter.F(const x: POperand): Boolean; begin end; procedure TWrapper.Z; var pred: TPredicateMethodForPOperand; { Error: Generics without specialization cannot be used as ... } begin with TDereferencingAdapter.Create do begin pred := F; Free; end; end; begin end.