code: func NewScheme(internalGroupVersions ...unversioned.GroupVersion) *Scheme {
  	s := &Scheme{conversion.NewScheme(), map[string]map[string]FieldLabelConversionFunc{}}
  
  	for _, internalGV := range internalGroupVersions {
  		s.raw.InternalVersions[internalGV.Group] = internalGV
  	}
  
  	s.raw.MetaFactory = conversion.SimpleMetaFactory{BaseFields: []string{"TypeMeta"}, VersionField: "APIVersion", KindField: "Kind"}
  	if err := s.raw.AddConversionFuncs(
  		s.embeddedObjectToRawExtension,
  		s.rawExtensionToEmbeddedObject,
  		s.runtimeObjectToRawExtensionArray,
  		s.rawExtensionToRuntimeObjectArray,
  	); err != nil {
  		panic(err)
  	}
  	// Enable map[string][]string conversions by default
  	if err := s.raw.AddConversionFuncs(DefaultStringConversions...); err != nil {
  		panic(err)
  	}
  	if err := s.raw.RegisterInputDefaults(&map[string][]string{}, JSONKeyMapper, conversion.AllowDifferentFieldTypeNames|conversion.IgnoreMissingFields); err != nil {
  		panic(err)
  	}
  	if err := s.raw.RegisterInputDefaults(&url.Values{}, JSONKeyMapper, conversion.AllowDifferentFieldTypeNames|conversion.IgnoreMissingFields); err != nil {
  		panic(err)
  	}
  	return s
  }
docs: // NewScheme creates a new Scheme. This scheme is pluggable by default.