title: Multilevel Java generic inheritance using extends on generic parameters
body: <p>I have</p>
  
  <pre><code>public class First&lt;T&gt; {}
  
  public class Second&lt;T extends SomeConcreteClass&gt; extends First&lt;T&gt; {}
  
  public class Third&lt;T&gt; extends Second&lt;T&gt; {} //Compile-time error
  </code></pre>
  
  <p>I get the compile-time error</p>
  
  <pre><code>Type argument T is not with bounds of type-variable T.
  </code></pre>
  
  <p>When I contruct a <code>Third</code>, I want to be able to give the generic parameter as <code>SomeConcreteClass</code> (or derived class thereof), and for a run-time error to be thrown if I've offered up a type that is not part of <code>SomeConcreteClass</code>'s inheritance hierarchy.</p>
  
  <p>I would think that the specification in <code>Second</code>'s declaration would simply propagate downward, i.e. it should be implicit in the declaration (and any instantiations) of <code>Third</code>.</p>
  
  <p>What's with the error?</p>