In most cases element containing a reference knows nothing about its scope and best solution is to forward the request upwards. By implementing ScopeProvider you can intercept such requests from your descendants and have full control over their scopes. As from now baseLanguage follows this strategy, so you can restrict visible elements in embedded statements or expressions.
Reference representation can now vary depending on the reference location as in many existing textual languages. It allows supporting notion of qualified reference when simple name of the target element is not enough. New API requires providing referenceText as a part of Scope implementation (see jetbrains.mps.scope.Scope). All references in baseLanguage now support java-style resolving.
More reliable merge conflict handling with the MPS merge driver: