This is an initial implementation that we can API-compatibly improve in the future by providing more accurate information. However, to do that, we would have to rewrite the entity definition parser with e.g. megaparsec. This is a reasonable course of action but rewriting it is going to be more work and we can ship position info we could improve later with the existing parser.
It winds up making a lot more sense legibility wise to just move the entire module. Maybe the API could be shifted back later (but it uses a pile of internals that really are probably more bothersome to have in a different file?), but this is at least easiest to review since it is quite literally just copy pasting the entire content of the module.