Variable shadowing occurs when a variable declared within a certain scope (e.g., a method) has the same name as a variable declared in an outer scope (e.g., an instance variable or class variable).
The env proposal would add information about scopes and bindings in the original source to a sourcemap. That proposal satisfies all the scenarios listed here but there is one scenario it doesn't ...