Created attachment 565678 [details] [diff] [review]
There are a lot of places in here where pushing the PropertyName distinction lower down in the source (into the scanner, parser, emitter, etc.) would help with de-genericization. I'm working on patches doing that, but they're atop this, and they'll be separate bugs.
Second time's the charm, after a first time backout (this patch wasn't the baddie, tho).