code: func parenthesize(ps *printState, val AST) {
  	paren := false
  	switch v := val.(type) {
  	case *Name, *InitializerList, *FunctionParam:
  	case *Qualified:
  		if v.LocalName {
  			paren = true
  		}
  	default:
  		paren = true
  	}
  	if paren {
  		ps.writeByte('(')
  	}
  	ps.print(val)
  	if paren {
  		ps.writeByte(')')
  	}
  }
docs: // The parenthesize function prints the string for val, wrapped in
  // parentheses if necessary.