title: What methods are generated for Scala case classes?
body: <p>What methods are generated for Scala case classes?</p>
  
  <p>I know that some methods are generated specifically for case classes: </p>
  
  <ul>
  <li>equals</li>
  <li>canEqual</li>
  </ul>
  
  <p>What are the others?</p>
  
  <p>Also, I see that I can call productArity() on any case class. How does this work? In other words, why the following code is valid?</p>
  
  <pre><code>case class CaseClass()
  
  object CaseClass {
    val cc = new CaseClass()
    cc.productArity
  }
  </code></pre>