Mezclando dinámicamente un rasgo.

Tener un rasgo

trait Persisted {
  def id: Long
}

¿Cómo implemento un método que acepte una instancia de cualquier clase de caso y devuelva su copia con el rasgo mezclado?

La firma del método se ve así:

def toPersisted[T](instance: T, id: Long): T with Persisted