title: Why can't I use a type argument in a type parameter with multiple bounds?
body: <p>So, I understand <i>that</i> the following doesn't work, but <i>why</i> doesn't it work?</p>
  
  <pre><code>interface Adapter&lt;E&gt; {}
  
  class Adaptulator&lt;I&gt; {
      &lt;E, A extends I &amp; Adapter&lt;E&gt;&gt; void add(Class&lt;E&gt; extl, Class&lt;A&gt; intl) {
          addAdapterFactory(new AdapterFactory&lt;E, A&gt;(extl, intl));
      }
  }
  </code></pre>
  
  <p>The <code>add()</code> method gives me a compile error, "Cannot specify any additional bound Adapter&lt;E&gt; when first bound is a type parameter" (in Eclipse), or "Type parameter cannot be followed by other bounds" (in IDEA), take your pick.</p>
  
  <p>Clearly you're just Not Allowed to use the type parameter <code>I</code> there, before the <code>&amp;</code>, and that's that. (And before you ask, it doesn't work if you switch 'em, because there's no guarantee that <code>I</code> isn't a concrete class.) But why not? I've looked through Angelika Langer's FAQ and can't find an answer.</p>
  
  <p>Generally when some generics limitation seems arbitrary, it's because you've created a situation where the type system can't actually enforce correctness. But I don't see what case would break what I'm trying to do here. I'd say maybe it has something to do with method dispatch after type erasure, but there's only one <code>add()</code> method, so it's not like there's any ambiguity...</p>
  
  <p>Can someone demonstrate the problem for me?</p>