func (rr *retrieveResult) collectFields(rval reflect.Value, fields []string, content *types.ObjectContent) []types.ManagedObjectReference { var refs []types.ManagedObjectReference for _, name := range fields { val, err := fieldValue(rval, name) if err == nil { if rr.recurse[name] { refs = append(refs, fieldRefs(val)...) } prop := types.DynamicProperty{ Name: name, Val: val, } content.PropSet = append(content.PropSet, prop) continue } switch err { case errEmptyField: // ok case errMissingField: content.MissingSet = append(content.MissingSet, types.MissingProperty{ Path: name, Fault: types.LocalizedMethodFault{Fault: &types.InvalidProperty{ Name: name, }}, }) } } return refs }