title: Generic Interface takes self as Parameter. Recursive Generic?
body: <p>Disclaimer: I don't have a whole ton of experience with Java Generics, but my colleagues and I just spent a solid hour trying to decipher an interface that was structured like this:</p>
  
  <pre><code>interface HasAttributes&lt;A extends HasAttributes&lt;A, B&gt;, 
                          B extends HasAttributesType&lt;B&gt;&gt; extends Identification&lt;B&gt; {
  </code></pre>
  
  <p>What exactly does it mean when an interface generic takes a type parameter that is itself?  What does this do?</p>