code: func writeNode(w io.Writer, fset *token.FileSet, x interface{}) {
  	// convert trailing tabs into spaces using a tconv filter
  	// to ensure a good outcome in most browsers (there may still
  	// be tabs in comments and strings, but converting those into
  	// the right number of spaces is much harder)
  	//
  	// TODO(gri) rethink printer flags - perhaps tconv can be eliminated
  	//           with an another printer mode (which is more efficiently
  	//           implemented in the printer than here with another layer)
  	mode := printer.TabIndent | printer.UseSpaces
  	err := (&printer.Config{Mode: mode, Tabwidth: tabwidth}).Fprint(&tconv{output: w}, fset, x)
  	if err != nil {
  		log.Print(err)
  	}
  }
docs: // Write an AST node to w.