code: func Simplify(n Node) bool {
  	s := simplifier{}
  	Walk(n, s.visit)
  	return s.modified
  }
docs: // TODO(v3): replace bool with a Node return, like in SplitBraces.
  // Simplify simplifies a given program and returns whether any changes
  // were made.
  //
  // The changes currently applied are:
  //
  //     Remove clearly useless parentheses       $(( (expr) ))
  //     Remove dollars from vars in exprs        (($var))
  //     Remove duplicate subshells               $( (stmts) )
  //     Remove redundant quotes                  [[ "$var" == str ]]
  //     Merge negations with unary operators     [[ ! -n $var ]]
  //     Use single quotes to shorten literals    "\$foo"