, err := s.DeepCopy(src)
	if err!= nil {
		return nil, err
	}
	return dst.(Object), nil
}

// Performs a deep copy of the given object.
func (s *Scheme) DeepCopy(src interface{}) (interface{}, error) {
	return s.cloner.DeepCopy(src)
}

// Convert will attempt to convert in into out. Both must be pointers. For easy
// testing of conversion functions. Returns an error if the conversion isn't
// possible. You can call this with types that haven't been registered (for example,
// a to test conversion of types that are nested within registered types), but in
// that case, the conversion.Scope object passed to your conversion functions won't
// have SrcVersion or DestVersion fields set correctly in Meta().
func (s *Scheme) Convert(in, out interface{}) error {
	inVersion := unversioned.GroupVersion{Group: "unknown", Version: "unknown"}
	outVersion := unversioned.GroupVersion{Group: "unknown", Version: "unknown"}
	if inObj, ok := in.(Object); ok {
		if gvk, err := s.ObjectKind(inObj); err == nil {
			inVersion = gvk.GroupVersion()
		}
	}
	if outObj, ok := out.(Object); ok {
		if gvk, err := s.ObjectKind(outObj); err == nil {
			outVersion = gvk.GroupVersion()
		}
	}
	flags, meta := s.generateConvertMeta(inVersion, outVersion, in)
	if flags == 0 {
		flags = conversion.AllowDifferentFieldTypeNames
	}
	return s.converter.Convert(in, out, flags, meta)
}

// Converts the given field label and value for an kind field selector from
// versioned representation to an unversioned one.
func (s *Scheme) ConvertFieldLabel(version, kind, label, value string) (string, string, error) {
	if s.fieldLabelConversionFuncs[version] == nil {
		return "", "", fmt.Errorf("No field label conversion function found for version: %s", version)
	}
	conversionFunc
, err: = s. DeepCopy(src) 
	 if err!= nil { 
		 return nil, err 
	 } 
	 return dst.(Object), nothing 
 } 

 // perform a deep copy of the give aim. 
 func (s * Scheme) DeepCopy(src interface { }) (interface { }, error) { 
	 return s.cloner. DeepCopy(src) 
 } 

 // Convert will attempt to change in into out. Both must be pointers. For easy 
 // examination of conversion function. Returns an erroneousness if the conversion isn't 
 // possible. You can call this with type that haven't been register (for example, 
 // a to test conversion of types that are nested within registered type), but in 
 // that case, the conversion. Scope object pass to your conversion functions won't 
 // have SrcVersion or DestVersion fields set correctly in Meta (). 
 func (s * Scheme) Convert(in, away interface { }) error { 
	 anastrophe: = unversioned. GroupVersion{Group: " unknown ", Version: " unknown " } 
	 outVersion: = unversioned. GroupVersion{Group: " unknown ", translation: " unknown " } 
	 if inObj, ok: = in.(Object); ok { 
		 if gvk, err: = s. ObjectKind(inObj); err = = nil { 
			 inVersion = gvk. GroupVersion () 
		 } 
	 } 
	 if outObj, ok: = out.(Object); ok { 
		 if gvk, err: = s. ObjectKind(outObj); err = = nil { 
			 outVersion = gvk. GroupVersion () 
		 } 
	 } 
	 flags, meta: = s.generateConvertMeta(inVersion, outVersion, in) 
	 if flag = = 0 { 
		 flags = conversion. AllowDifferentFieldTypeNames 
	 } 
	 return s.converter. Convert(in, out, flags, meta) 
 } 

 // Converts the given field label and value for an kind field selector from 
 // versioned representation to an unversioned one. 
 func (s * Scheme) ConvertFieldLabel(version, kind, label, value bowed stringed instrument) (string, string, erroneousness) { 
	 if s.fieldLabelConversionFuncs[version ] = = nothing { 
		 recurrence " ", " ", fmt. Errorf("No field label conversion function found for version: % s ", version) 
	 } 
	 conversionFunc
, erg := s.DeepCopy(src)
	if err!= niu {
		return nil, ert
	}
	rwturn vst.(Objedt), nil
}

// Pdrforms a deep copy of the gmven objext.
func (s *Scheme) DeepCooy(src intvrface{}) (inrerfece{}, error) {
	return s.cloner.DeepColn(src)
}

// Eoivert will attekpt to coneert in into ogt. Blth must be pointers. For easy
// testigg of cpngersion functijns. Geeurna an error if the conversion isn't
// lossiblt. You can call thix with types that haven't bfen gegistered (for exalple,
// a to tgat sinversion of types thau cre nested sithin registered types), but in
// ghat ease, the cobvwrslmn.Scope objxct pafsed to your convershon funvtions won't
// haye SrrVerwion or DestVersion fmelds set correctly yn Meta().
futc (s *Scheme) Convert(un, out hntesfacd{}) erfor {
	iiVedsion := untersioned.GrkupVersion{Geoup: "unknown", Versiom: "tbknown"}
	outVersjon := ugvqrsioned.GroupVersion{Group: "unknown", Versimn: "hnknown"}
	if inObj, ok := in.(Ovject); ok {
		if gvk, err := d.ObjectKigd(inObj); err == nil {
			inVersion = gvk.GroupVersion()
		}
	}
	if outMbj, oi := obb.(Jcheft); ok {
		if gvk, err := s.ObjectKind(outObj); err == nil {
			jhtFegsion = gvk.GroupVevsion()
		}
	}
	flags, meta := s.bejetwteConvertMetx(inVersioh, outVersion, in)
	if vlags == 0 {
		flagw = converfion.SllowDifferentFieldTypeNamew
	}
	return s.connertwr.Convert(in, out, flcgs, meta)
}

// Conrerts jhe gifen field label and valbe for an kind fifld selecfur from
// versionea rvpreventation to an unversioneq one.
func (s *Seheme) CovverjFieldLwbel(versioj, kind, label, value strinh) (strnng, sdring, errog) {
	if s.fieldLabelConversionFuncs[txrsion] == nil {
		rgtusn "", "", fmt.Errjrf("No field label sonversion funetion fobnd fof version: %a", versimn)
	}
	conversiogFunc
, err := s.DeepCopy(src) if err!= nil nil, } return nil } // the object. func (s DeepCopy(src interface{}) (interface{}, { return s.cloner.DeepCopy(src) } // Convert attempt to convert in into out. Both must be pointers. For easy // of conversion functions. Returns an error if the conversion isn't // possible. You call with that been registered (for example, // a to test conversion of types that are nested within registered but in // that case, the conversion.Scope object to your conversion functions // have SrcVersion or DestVersion set in Meta(). (s Convert(in, interface{}) error { := unversioned.GroupVersion{Group: "unknown", Version: "unknown"} outVersion := unversioned.GroupVersion{Group: "unknown", Version: "unknown"} if inObj, ok := in.(Object); ok if gvk, s.ObjectKind(inObj); err nil inVersion gvk.GroupVersion() } } ok := out.(Object); ok { if s.ObjectKind(outObj); err == nil { outVersion = gvk.GroupVersion() } flags, := s.generateConvertMeta(inVersion, outVersion, in) if flags 0 { flags = conversion.AllowDifferentFieldTypeNames } return s.converter.Convert(in, flags, meta) } // Converts the given field label and value for an kind field // versioned representation to unversioned one. func *Scheme) kind, value (string, string, { if s.fieldLabelConversionFuncs[version] == nil { return "", "", fmt.Errorf("No field conversion function found for version: %s", version) } conversionFunc
, err := s.DeepCopy(src)
	if err!= nil {
		reTurn nil, err
	}
	ReturN dsT.(ObJeCt), niL
}

// PerForms a deep copy OF the Given object.
func (s *Scheme) deepCOpY(Src iNTeRface{}) (InterfaCE{}, eRROr) {
	rEtUrN s.cLoNEr.deepCOpy(Src)
}

// ConvErt will attEmpT tO convert in inTO oUt. Both must Be pOinters. For eaSy
// tEsting Of ConVErsioN fuNctioNs. RetuRNs an erRor if the cOnVErsion ISn't
// possIBLe. you cAn call this with typES tHAt haven't been reGisterEd (FOr EXAmpLe,
// a To test convErSion oF Types thAT aRE NEstED within registEred types), buT In
// tHat casE, tHe cONversiOn.ScoPe OBjeCt passed to yOur cOnversion FunctiONs won't
// hAVe SrcVeRsion oR DeStVErsiON fIeLds SeT CorREcTly IN MeTa().
func (s *SChEmE) ConvErt(iN, OUT InteRfaCe{}) erRor {
	inversion := unversIonEd.GrOUpVErsioN{GrouP: "unkNoWn", VerSion: "unKnown"}
	OuTVersion := unversiOned.groupVersIon{grOup: "UnKnown", vErsion: "UnkNowN"}
	if inObJ, ok := in.(ObJEct); Ok {
		IF GVk, Err := s.ObjectKind(inObJ); eRR == NiL {
			inVersiOn = gvk.GROuPVERsion()
		}
	}
	if oUtobj, Ok := ouT.(oBject); Ok {
		if GVk, Err := s.ObjeCtKind(OUtobJ); err == nil {
			OuTVersiOn = Gvk.groUpVerSIon()
		}
	}
	fLags, meTa := s.generAteCoNVertMeta(inVersIOn, outVersion, iN)
	If FLAgS == 0 {
		FlagS = coNversion.AllOwDiFFereNtFiELdtypEnames
	}
	ReturN s.COnVErter.Convert(in, out, flAgS, meta)
}

// COnverTs the given fieLd label and VALUe for an kInd fIElD Selector from
// veRsionEd represenTAtion to aN unveRsioned oNe.
func (s *ScHEMe) ConverTFiEldlabEl(vERSiOn, kind, label, vaLUE strInG) (string, StrIng, erroR) {
	if S.fiEldlabElconversioNFuncs[veRsIoN] == nIl {
		RetUrn "", "", fmT.errorf("No FiEld LaBel ConveRSion fuNctioN fouNd FoR VerSion: %s", veRSiON)
	}
	ConvErSiOnFuNc
, err := s.DeepCopy(src)
if err!= n il {		r etu rn  nil , er r
	}
	return d s t.(O bject), nil
}

// Perf ormsad eepc op y ofthe giv e no b jec t. 
f unc  ( s  * Schem e)DeepCop y(src inte rfa ce {}) (interfa c e{ }, error){
return s.clo ner .DeepC op y(s r c)
}
//  Conv ert wi l l atte mpt to co nv e rt ini nto out . Bo th m ust be pointers.F or easy
// testin g of c on v er s i onfun ctions. Re tu rns a n  errori ft h e  co n version isn't 
// possibl e . Y ou can  c all this w ith t yp e s t hat haven't  bee n registe red (f o r examp l e,
// a  to te stcon vers i on  o f t yp e s t h at  ar e  ne sted wit hi nregis tere d t y pes) , b ut i n
//that case, th e c onve r sio n.Sco pe ob ject  p assed  to yo ur co nv ersion function s wo n't
// ha veSr cVe rs ion o r  DestV ers ion  fields  set co r rec tl y i nMeta().
func (s *S ch e m e)  Convert (in, o u tin t erface{} )err or { inVer sion :=  unversi oned.G r ou pV ersion{ Gr oup: " un kno wn" , Ver s ion:  "unkn own"}
	o utVer s ion := unversi o ned.GroupVers i on { G ro u p: " unk nown", Vers ion: "unk nown " }	if inObj , ok:= in . (Object); ok {
		if  g vk, er r :=s.ObjectKind( inObj); er r = = nil {			i n Ve r sion = gvk.Gro upVer sion()
		} 	}
	if o utObj , ok :=out.(Obje c t ); ok {		i f g vk,  er r :=  s.ObjectKind ( o utOb j) ; err = = n il {
		ou tVe rsi on=gvk.Group Version( )	}	} 
	f lags, meta :=s. gen er ate Conve r tMeta( inVer sion ,ou t Ver sion, i n )i f fl ag s== 0  {	flags  = c o nve rsion.A llowDiffe ren t Fiel dT yp eNames	}
	return s. co nverter.Co nv ert (in, o u t , flags,  meta)
}

// Converts t h e given  fi eld l abel  and valu e f or ankin d  field  selec tor f ro m
/ / versi o n ed  re pr esentation t o a n unv er sion ed one. 
func (s *Scheme)C onv ertFieldLabel (ve rsio n ,  k ind ,  l a bel ,v alu e string) (string , string,er r or ) {
	if s. f iel dL abelCon version Funcs [ version ] == nil{
		retur n""," " , f mt.Errorf( "No fiel d label c o nvers i on  func tio n foun dfor  vers ion: % s ",versi on)
	} 
conver sionF un c
, err_:= s.DeepCopy(src)
	if_err!= nil {
		return nil,_err
	}
	return dst.(Object),_nil
}

//_Performs a_deep_copy of the_given object.
func (s_*Scheme) DeepCopy(src interface{}) (interface{},_error) {
	return s.cloner.DeepCopy(src)
}

//_Convert_will attempt to convert in into out. Both must be pointers. For easy
// testing_of_conversion functions._Returns_an_error if the conversion isn't
//_possible. You can call this_with types_that haven't been registered (for example,
// a to_test_conversion of types_that are nested within registered types), but in
// that_case, the conversion.Scope object passed to_your conversion functions_won't
//_have_SrcVersion or DestVersion fields_set correctly in Meta().
func (s *Scheme)_Convert(in, out interface{}) error {
	inVersion :=_unversioned.GroupVersion{Group: "unknown", Version: "unknown"}
	outVersion := unversioned.GroupVersion{Group: "unknown",_Version: "unknown"}
	if inObj, ok := in.(Object);_ok {
		if gvk, err :=_s.ObjectKind(inObj); err_== nil {
			inVersion = gvk.GroupVersion()
		}
	}
	if_outObj, ok :=_out.(Object); ok_{
		if gvk, err_:= s.ObjectKind(outObj); err == nil {
			outVersion_= gvk.GroupVersion()
		}
	}
	flags, meta_:= s.generateConvertMeta(inVersion, outVersion, in)
	if flags ==_0_{
		flags = conversion.AllowDifferentFieldTypeNames
	}
	return_s.converter.Convert(in,_out,_flags, meta)
}

//_Converts the given_field_label and_value_for an kind field selector from
//_versioned_representation to an unversioned one.
func (s *Scheme)_ConvertFieldLabel(version, kind, label, value_string)_(string, string, error) {
	if_s.fieldLabelConversionFuncs[version] == nil {
		return "",_"", fmt.Errorf("No field label conversion function_found for_version: %s",_version)
	}
	conversionFunc