public static JsStatement Process(JsStatement statement)
        {
            var locals  = LocalVariableGatherer.Analyze(statement);
            var globals = ImplicitGlobalsGatherer.Analyze(statement, locals);

            return(IdentifierMinifierRewriter.Process(statement, locals, globals, GenerateName));
        }
            public static JsStatement Process(JsStatement statement, Dictionary <Function, HashSet <string> > locals, Dictionary <Function, HashSet <string> > globals, Func <string, HashSet <string>, string> generateName)
            {
                var obj = new IdentifierMinifierRewriter(locals, globals, generateName);

                return(obj.VisitStatement(statement, obj.BuildMap(null, new Function())));
            }