title: Type equivalence issue when using dependent method types and the type projections
body: <p>I'm trying the following with Scala 2.10.0-M1:</p>
  
  <pre><code>trait Container {
    type X
  }
  
  class Test[C &lt;: Container](val c: C) {
    def foo(x: c.X): C#X = x // this compiles fine
    def bar(x: C#X): c.X = x // this does not compile
  }
  </code></pre>
  
  <p>The problem is the same when using this form:</p>
  
  <pre><code>def bar[C &lt;: Container](c: C)(x: C#X): c.X = x
  </code></pre>
  
  <p>I don't really see why <code>foo</code> compiles while <code>bar</code> does not.</p>
  
  <p>I believe that <code>c.X</code> and <code>C#X</code> should be the same here.</p>
  
  <p>Also, I don't understand the error message:</p>
  
  <pre><code>[error]  found   : x.type (with underlying type C#X)
  [error]  required: Test.this.c.X
  [error]  possible cause: missing arguments for method or constructor
  [error]   def bar(x: C#X): c.X = x // this does not compile
  </code></pre>
  
  <p>Any idea?</p>