code: function addVisitFunction(type) {
      ASTVisitor.prototype['visit' + type] = function(node) {
          var self = this;
          var extraArgs = Array.prototype.slice.call(arguments, 1);
  
          if (DEBUG) {
              checkNode(node);
          }
  
          NODE_CHILDREN[type].forEach(function(property) {
              var value = node[property];
  
              if (_.isArray(value)) {
                  value.forEach(function(item) {
                      if (item !== null) {
                          self.visit.apply(self, [item].concat(extraArgs));
                      }
                  });
              } else if (value !== null && value !== undefined) {
                  self.visit.apply(self, [value].concat(extraArgs));
              }
          });
      };
  }
docs: END DEBUGGING FUNCTIONS