```scala import io.circe._ case class Foo(id: Foo.Id) derives Codec.AsObject // Cannot find encoder/decoder of Id object Foo { opaque type Id = Long } ``` The above very common opaque type use case won't compile. Seems compiler don't know `Id` is `Long` while deriving. Note, if opaque type defined in top level, it compiles just fine. ```scala import io.circe._ opaque type FooId = Long case class Foo(id: FooId) derives Codec.AsObject // Compiles ok ```