title: Safely copying fields between case classes of different types
body: <p>Assuming you have case classes like the following</p>
  
  <pre><code>case class Test1(a:String,b:Int,c:Char)
  
  case class Test2(a:String,b:Int)
  </code></pre>
  
  <p>And you instantiate the classes with the following variables</p>
  
  <pre><code>val test1 = Test1("first",2,'3')
  
  val test2 = Test2("1st",20)
  </code></pre>
  
  <p>Is there a way to use the <code>.copy</code> method (or otherwise), to apply the variables inside Test2 to Test1, something like</p>
  
  <pre><code>val test3 = test1.copy(test2) //Note this isn't valid scala code
  // Result should be ("1st",20,'3')
  </code></pre>
  
  <p>If this isn't possible in pure scala, how would it be done in Shapeless 1/2 (current code is in Shapeless 1, however we are planning to upgrade to Shapeless 2 at some point in time)</p>