title: Type error with types recursive on their type argument
body: <p>I got something like this :</p>
  <pre><code>interface Quantity&lt;V : PValue&lt;*&gt;&gt;
  class Value&lt;T : Value&lt;T&gt;&gt; : Quantity&lt;T&gt;
  </code></pre>
  <p>The problem is, when I try to pass a <code>Value&lt;*&gt;</code> where a <code>Quantity&lt;Value&lt;*&gt;&gt;</code> is expected, the compiler either issues me a warning, or even an error, depending on something I didn't yet identify. I don't undertstand why this doesn't work, since a <code>Quantity</code>'s type argument has to be a <code>Value</code>, so every <code>Quantity</code> should pratically be a <code>Quantity&lt;Value&lt;*&gt;&gt;</code>, and since <code>Value</code>s implement <code>Quantity</code>, I don't understand why this won't work.</p>
  <p>I tried to replace the <code>T : Value&lt;T&gt;</code> by a <code>T : Value&lt;*&gt;</code> in the <code>Value</code> class declaration, because I am aware that the problem might come from this recursion, but this apparently &quot;violates the finite bound restriction&quot;...</p>
  <p>Last thought, maybe this has something to do with the in/out modifiers, but I can't make V <code>out</code> or <code>in</code> for <code>Quantity</code> because of methods that aren't present here for the purpose of simplicity.</p>