{ %NORUN } program tw21064b; {$mode delphi} type IGenericIntf = interface function SomeMethod: T; end; TGenericClass = class(TInterfacedObject, IGenericIntf) private type IntfType = IGenericIntf; protected function GenericIntf_SomeMethod: T; function IntfType.SomeMethod = GenericIntf_SomeMethod; end; function TGenericClass.GenericIntf_SomeMethod: T; begin end; type TGenericClassLongInt = TGenericClass; begin end.