title: Getting compile error after extending Generic to Comparable<Generic>
body: <pre><code>class A&lt;T extends Comparable&lt;? super T&gt;&gt; {
  
      Supplier&lt;T&gt; supp;
  
      A(Supplier&lt;T&gt; supp) {
          this.supp = supp;
      }
  
      static &lt;T extends Comparable&lt;? super T&gt;&gt; A&lt;T&gt; of(Supplier&lt;T&gt; supp) {
          return new A&lt;T&gt;(supplier);
      }
  
      &lt;U&gt; A&lt;U&gt; map(Function&lt;? super T, ? extends U&gt; mapper) {
          return A.of(() -&gt; mapper.apply(this.supp.get()));
      }
  
  }
  </code></pre>
  <p>When I compile, I get error saying:</p>
  <pre><code>type argument U is not within bounds of type-variable T
  where U,T are type-variables:
      U extends Object declared in method &lt;U&gt;map(Function&lt;? super T,? extends U&gt;)
      T extends Comparable&lt;? super T&gt; declared in class A
  </code></pre>
  <p>I feel that I need to make <code>U</code> in <code>mapper</code> extend something, but I am not really sure how, I have tried U extends Comparable, etc. but they don't work.</p>