Of course by the same argument, we could debate whether extracting `TypeAdaptingTransformer` was the right approach. It now looks like reusable code, but in fact it can only be run with types as-at erasure phase, and must have post-erasure run after it. If we just called the erasure transformer, rather than the factored out `adaptToType`, this might have been more evident.