code: function printNodes(node, indent) {
              indent = indent || 0;
  
              // This is hacky, but this is just a debugging function anyway
              function print(str, indent, inline) {
                  var lines = str.split("\n");
  
                  for (var i = 0; i < lines.length; i++) {
                      if (lines[i]) {
                          if ((inline && i > 0) || !inline) {
                              for (var j = 0; j < indent; j++) {
                                  util.print(" ");
                              }
                          }
                      }
  
                      if (i === lines.length - 1) {
                          util.print(lines[i]);
                      } else {
                          util.puts(lines[i]);
                      }
                  }
              }
  
              print(node.typename + ": ", indent);
  
              if (node instanceof NodeList) {
                  print('\n');
                  lib.each(node.children, function(n) {
                      printNodes(n, indent + 2);
                  });
              } else if (node instanceof CallExtension) {
                  print(node.extName + '.' + node.prop);
                  print('\n');
  
                  if (node.args) {
                      printNodes(node.args, indent + 2);
                  }
  
                  if (node.contentArgs) {
                      lib.each(node.contentArgs, function(n) {
                          printNodes(n, indent + 2);
                      });
                  }
              } else {
                  var nodes = null;
                  var props = null;
  
                  node.iterFields(function(val, field) {
                      if (val instanceof Node) {
                          nodes = nodes || {};
                          nodes[field] = val;
                      } else {
                          props = props || {};
                          props[field] = val;
                      }
                  });
  
                  if (props) {
                      print(util.inspect(props, true, null) + '\n', null, true);
                  } else {
                      print('\n');
                  }
  
                  if (nodes) {
                      for (var k in nodes) {
                          printNodes(nodes[k], indent + 2);
                      }
                  }
  
              }
          }
docs: Print the AST in a nicely formatted tree format for debuggin