circe

Cómo decodificar un ADT con circe sin desambiguar objetos

Supongamos que tengo un ADT como este: sealed trait Event case class Foo(i: Int) extends Event case class Bar(s: String) e ... cero)? (Esta pregunta surge con bastante frecuencia-ver por ejemplo esta discusión con Igor Mazor en Gitter esta mañana.)