title: rely on methods of case class in trait
body: <p>Is there a way to rely on methods defined in case class in a trait? E.g., copy: the following doesn't work. I'm not sure why, though.</p>
  
  <pre><code>trait K[T &lt;: K[T]] {
    val x: String
    val y: String
    def m: T = copy(x = "hello")
    def copy(x: String = this.x, y: String = this.y): T
  }
  
  case class L(val x: String, val y: String) extends K[L]
  </code></pre>
  
  <p>Gives:</p>
  
  <pre><code>error: class L needs to be abstract, since method copy in trait K of type 
  (x: String,y: String)L is not defined
             case class L(val x: String, val y: String) extends K[L]
                        ^
  </code></pre>