title: Method return type contains subclass definition
body: <p>I come up with a code that uses a syntax like this:</p>
  
  <pre><code>public &lt;A extends B&gt; double[][] foo(C arg) {
  .... }
  </code></pre>
  
  <p>I get a couple of questions by viewing it.</p>
  
  <p>a) The return type of <code>foo(C arg)</code> is <code>&lt;A extends B&gt; double[][]</code>? What does this mean? I would understood a return type like <code>double[][]</code> for example, but I cannot determine what does the previous modifier (maybe?) <code>&lt;A extends B&gt;</code> does?</p>
  
  <p>b) Why there is a subclass declaration inside a return type? Since A is a subclass of B where do we override or add any methods/members etc? To me it seems that it's a subclass containing just the same methods/members of the base class A. Isn't so? So is there any difference in writing <code>public &lt;A&gt; double[][] foo(C arg)</code>?</p>
  
  <p>c) Finally I suppose that &lt;> have to do with Java generics but even then I have seen declaration like <code>D&lt;T&gt;</code> which T is used to parametrize the raw type <code>D</code>. Here I tried to remove the &lt;> (since I don't understand what they stand for) but compiler complains.</p>