Wouldn’t this allow an other encoding of opaque types? Like e.g.
trait Example { type Log }
trait ExampleImpl extends Example {
type Log = Double
}
object Example extends Example with private ExampleImpl
And this regardless of how this translated to JVM-Bytecode?