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++) {
                          process.stdout.write(' ');
                      }
                  }
              }
  
              if(i === lines.length-1) {
                  process.stdout.write(lines[i]);
              }
              else {
                  process.stdout.write(lines[i] + '\n');
              }
          }
      }
  
      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(JSON.stringify(props, null, 2) + '\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