code: func (node *Node) Dump() string {
  	str := ""
  	str += node.Value
  
  	if len(node.Flags) > 0 {
  		str += fmt.Sprintf(" %q", node.Flags)
  	}
  
  	for _, n := range node.Children {
  		str += "(" + n.Dump() + ")\n"
  	}
  
  	for n := node.Next; n != nil; n = n.Next {
  		if len(n.Children) > 0 {
  			str += " " + n.Dump()
  		} else {
  			str += " " + strconv.Quote(n.Value)
  		}
  	}
  
  	return strings.TrimSpace(str)
  }
docs: // Dump dumps the AST defined by `node` as a list of sexps.
  // Returns a string suitable for printing.