Perform Step 1 in the inline classes SIP: Creates extension methods for all methods in a value class, except parameter or super accessors, or constructors.
Additionally, for a value class V, let U be the underlying type after erasure. We add
to the companion module of V two cast methods:
def u2evt$(x0: U): ErasedValueType(V, U)
def evt2u$(x0: ErasedValueType(V, U)): U
The casts are used in [[Erasure]] to make it typecheck, they are then removed
This is different from the implementation of value classes in Scala 2
(see SIP-15) which uses
asInstanceOf which does not typecheck.
Finally, if the constructor of a value class is private pr protected it is widened to public.
Also, drop the Local flag from all private[this] and protected[this] members that will be moved to the companion object.
Can this transform create or delete non-private members?
the following two members override abstract members in Transform
If references to original symbol
referenced from within fully parameterized method
derived should be rewired to some fully parameterized method, the rewiring target symbol,
List of names of phases that should precede this phase
List of names of phases that should have finished their processing of all compilation units before this phase starts
The transformation method