code: func (d *faultDetail) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
  	kind := reflect.TypeOf(d.Fault).Elem().Name()
  	start.Name.Local = kind + "Fault"
  	start.Attr = append(start.Attr,
  		xml.Attr{
  			Name:  xml.Name{Local: "xmlns"},
  			Value: "urn:" + vim25.Namespace,
  		},
  		xml.Attr{
  			Name:  xml.Name{Local: "xsi:type"},
  			Value: kind,
  		})
  	return e.EncodeElement(d.Fault, start)
  }
docs: // MarshalXML renames the start element from "Fault" to "${Type}Fault"