If this is intended to run on the JVM, I hope you aren’t putting a class as a key in a map.
Instead, use the jdk’s ClassValue to associate a jvm type to a value.
Is the ClassTag for an opaque type identical to its underlying type’s ClassTag? If it is supposed to be purely compiler side fiction, I would assume so. But in some sense ClassTag is ‘compiler side’ reflection, where the difference is visible.