title: Implement an interface with a method signature whose generic parameters extend an interface
body: <p>Below is an example of what I'm trying to accomplish. I'm trying to create <code>LibraryRunner</code> which implements <code>GenericRunner</code>. However I'm getting an IDE warning that <code>LibraryRunner</code> does not implement the methods in the <code>GenericRunner</code> interface. Which makes sense, the method signature doesn't match, but how can I make the method signature match while still using the <code>LibraryCalculator</code> which extends the <code>GenericCalculator</code>?</p>
  <pre><code>public class LibraryRunner implements GenericRunner {
      @Override
      public &lt;T&gt; T run(LibraryCalculator&lt;T&gt; calculator) {
          return T;
      }
  }
  
  public interface GenericRunner {
      &lt;T, A&gt; T run(GenericCalculator&lt;T, A&gt; calculator);
  }
  
  
  public interface LibraryCalculator&lt;T&gt; extends GenericCalculator&lt;T, LibraryAlgorithm&gt; {
      T calc(LibraryAlgorithm algorithm) throws LibraryException;
  }
  
  public interface GenericCalculator&lt;T, A&gt; {
      T calc(A algorithm) throws Exception;
  }
  
  
  public class LibraryException extends Exception {
      
  }
  </code></pre>