title: How do I implement two interfaces that have methods with the same name?
body: <p>I am trying to declare a custom list of interfaces from which I want to inherit in order to get list of specific interfaces (I am aware of IInterfaceList, this is just an example). I'm using Delphi 2007 so I don't have access to actual generics (pity me).</p>
  
  <p>Here is a simplified example:</p>
  
  <pre><code>   ICustomInterfaceList = interface
        procedure Add(AInterface: IInterface);
        function GetFirst: IInterface;
     end;
  
     TCustomInterfaceList = class(TInterfacedObject, ICustomInterfaceList)
     public
        procedure Add(AInterface: IInterface);
        function GetFirst: IInterface;
     end;
  
     ISpecificInterface = interface(IInterface)
     end;
  
     ISpecificInterfaceList = interface(ICustomInterfaceList)
        function GetFirst: ISpecificInterface;
     end;
  
     TSpecificInterfaceList = class(TCustomInterfaceList, ISpecificInterfaceList)
     public
        function GetFirst: ISpecificInterface;
     end;
  </code></pre>
  
  <p>TSpecificInterfaceList will not compile:</p>
  
  <blockquote>
    <p>E2211 Declaration of 'GetFirst' differs from declaration in interface 'ISpecificInterfaceList'</p>
  </blockquote>
  
  <p>I guess I could theoretically use TCustomInterfaceList but I don't want to have to cast "GetFirst" every time I use it. My goal is to have a specific class that both inherits the behavior of the base class and wraps "GetFirst".</p>
  
  <p>How can I achieve this?</p>
  
  <p>Thanks!</p>