public override void Perform(ParseNode node)
 {
     var functionNodes = node.ExtractFunctionNodes();
     foreach (var functionNode in functionNodes)
     {
         FixDeclarationsNotInFunctionBody(functionNode);
     }
 }
 static ParseNode[] ExtractFunctionNames(ParseNode node, Dictionary<string, bool> functionsWithConflicts)
 {
     var functionNodes = node.ExtractFunctionNodes();
     foreach (var functionNode in functionNodes)
     {
         ExtractFunctionName(functionNode, functionsWithConflicts);
     }
     return functionNodes;
 }
        public override void Perform(ParseNode node)
        {
            var functionNodes = node.ExtractFunctionNodes();

            ResolveRefConflicts(functionNodes);
        }