A trait that is used to represent a renamed variable. For
renamer_keep_contexts, the syntax contexts of the replacements should be
correct (unique), while for hygiene (which calls renamer), the resulting
syntax contexts are irrelevant. This type is used to handle both cases
without code duplication by using HashMap<Id, impl RenamedVariable>
everywhere:
Create correct (unique) syntax contexts. Use this if you need the syntax
contexts produces by this pass (unlike the default hygiene pass which
removes them anyway.)