unit uw34287b;

{$IFDEF FPC}
 {$MODE OBJFPC}{$H+}
{$ENDIF}

interface

uses
  Classes;

type
  TBase = class(TComponent)
  public
    generic function Bar<T: TComponent>(const P1: string; out P2: T): Boolean;
  end;

  TFoo = class(TBase)
  public
    function Bar(const P1: string): Boolean;
  end;

implementation

generic function TBase.Bar<T>(const P1: string; out P2: T): Boolean;
begin
  Result := False;
end;

function TFoo.Bar(const P1: string): Boolean;
var
  C: TComponent;
begin
  Result := inherited specialize Bar<TComponent>(P1, C);
end;

end.