I think this should use ErasureMap:

Experimenting in :power using a slightly contrived example shows where the substitution-approach gives unexpected results (TypeBounds).
```
scala> class C { def x: T forSome {type T <: S; type S <: String} = ??? }
scala> val x = intp("C").info.decls.toList(1)
scala> x.info
=> T forSome { type T <: String; type S <: String }

scala> erasure.erasure(x)(x.info)
=> String

scala> x.info.resultType match {
     |   case ExistentialType(tparams, result) =>
     |     result.subst(tparams, tparams map (_.info))
     |   case tp => tp
     | }
  <: String

scala> res12.getClass
class scala.reflect.internal.Types$UniqueTypeBounds
```