Suppose I have multiple types of ids defined as follows.
sealed trait Id { val value: String } case class IdA(value: String) extends Id case class IdB(value: St