code: func (p *GoTemplatePrinter) PrintObj(obj runtime.Object, w io.Writer) error {
  	if InternalObjectPreventer.IsForbidden(reflect.Indirect(reflect.ValueOf(obj)).Type().PkgPath()) {
  		return fmt.Errorf(InternalObjectPrinterErr)
  	}
  
  	var data []byte
  	var err error
  	data, err = json.Marshal(obj)
  	if err != nil {
  		return err
  	}
  
  	out := map[string]interface{}{}
  	if err := json.Unmarshal(data, &out); err != nil {
  		return err
  	}
  	if err = p.safeExecute(w, out); err != nil {
  		// It is way easier to debug this stuff when it shows up in
  		// stdout instead of just stdin. So in addition to returning
  		// a nice error, also print useful stuff with the writer.
  		fmt.Fprintf(w, "Error executing template: %v. Printing more information for debugging the template:\n", err)
  		fmt.Fprintf(w, "\ttemplate was:\n\t\t%v\n", p.rawTemplate)
  		fmt.Fprintf(w, "\traw data was:\n\t\t%v\n", string(data))
  		fmt.Fprintf(w, "\tobject given to template engine was:\n\t\t%+v\n\n", out)
  		return fmt.Errorf("error executing template %q: %v", p.rawTemplate, err)
  	}
  	return nil
  }
docs: // PrintObj formats the obj with the Go Template.