Sem forma - transforme uma classe de caso em outra com campos em ordem diferente

Estou pensando em fazer algo parecido comCopiar campos com segurança entre classes de casos de diferentes tipos mas com campos reordenados, ou seja,

case class A(foo: Int, bar: Int)
case class B(bar: Int, foo: Int)

E eu gostaria de ter algo para transformarA(3, 4) dentro deB(4, 3) - sem forma »LabelledGeneric vem à mente, no entanto

LabelledGeneric[B].from(LabelledGeneric[A].to(A(12, 13)))

resulta em

<console>:15: error: type mismatch;
 found   : shapeless.::[shapeless.record.FieldType[shapeless.tag.@@[Symbol,String("foo")],Int],shapeless.::[shapeless.record.FieldType[shapeless.tag.@@[Symbol,String("bar")],Int],shapeless.HNil]]
    (which expands to)  shapeless.::[Int with shapeless.record.KeyTag[Symbol with shapeless.tag.Tagged[String("foo")],Int],shapeless.::[Int with shapeless.record.KeyTag[Symbol with shapeless.tag.Tagged[String("bar")],Int],shapeless.HNil]]
 required: shapeless.::[shapeless.record.FieldType[shapeless.tag.@@[Symbol,String("bar")],Int],shapeless.::[shapeless.record.FieldType[shapeless.tag.@@[Symbol,String("foo")],Int],shapeless.HNil]]
    (which expands to)  shapeless.::[Int with shapeless.record.KeyTag[Symbol with shapeless.tag.Tagged[String("bar")],Int],shapeless.::[Int with shapeless.record.KeyTag[Symbol with shapeless.tag.Tagged[String("foo")],Int],shapeless.HNil]]
              LabelledGeneric[B].from(LabelledGeneric[A].to(A(12, 13)))
                                                           ^

Como reordenar os campos no registro (?) Para que isso funcione com um mínimo de clichê?