title: Overriding return type in extended interface - Bad idea?
body: <p>In Java, you can do the following :</p>
  
  <pre><code>public interface IEngine{}
  public interface ICoolEngine extends IEngine{}
  
  public interface Car
  {
     IEngine getEngine();
  }
  public interface ICoolCar extends ICar
  {
      @Override
      ICoolEngine getEngine();
  }
  </code></pre>
  
  <p>While this nicely solves a problem I've been grappling with, something about it "feels" wrong.</p>
  
  <p>Am I committing some nasty design faux pas here?</p>