public static ImmutableMap <SyntaxNode, Binder> BuildMap(MethodSymbol method, SyntaxNode syntax, Binder enclosing, ImmutableMap <SyntaxNode, Binder> map = null)
            {
                var builder = new BinderMapBuilder(method, map);

                builder.Visit(syntax, enclosing);
                return(builder.map);
            }
            public static ImmutableMap <SyntaxNode, Binder> BuildGlobalStatementsMap(MethodSymbol method, CompilationUnitSyntax compilationUnitSyntax, Binder enclosing)
            {
                Debug.Assert(method.ContainingType.IsScriptClass && method.MethodKind == MethodKind.Constructor);

                var builder = new BinderMapBuilder(method, null);

                // This loop is inlined (instead of overriding VisitCompilationUnit) because
                // it is not a general implementation of building a map for a compilation unit -
                // it is specific to the global statement case.
                foreach (MemberDeclarationSyntax member in compilationUnitSyntax.Members)
                {
                    if (member.Kind == SyntaxKind.GlobalStatement)
                    {
                        builder.Visit(member, enclosing);
                    }
                }
                return(builder.map);
            }