code: func NewScheme() *Scheme {
  	s := &Scheme{
  		gvkToType:                 map[schema.GroupVersionKind]reflect.Type{},
  		typeToGVK:                 map[reflect.Type][]schema.GroupVersionKind{},
  		unversionedTypes:          map[reflect.Type]schema.GroupVersionKind{},
  		unversionedKinds:          map[string]reflect.Type{},
  		fieldLabelConversionFuncs: map[schema.GroupVersionKind]FieldLabelConversionFunc{},
  		defaulterFuncs:            map[reflect.Type]func(interface{}){},
  		versionPriority:           map[string][]string{},
  		schemeName:                naming.GetNameFromCallsite(internalPackages...),
  	}
  	s.converter = conversion.NewConverter(s.nameFunc)
  
  	utilruntime.Must(s.AddConversionFuncs(DefaultEmbeddedConversions()...))
  
  	// Enable map[string][]string conversions by default
  	utilruntime.Must(s.AddConversionFuncs(DefaultStringConversions...))
  	utilruntime.Must(s.RegisterInputDefaults(&map[string][]string{}, JSONKeyMapper, conversion.AllowDifferentFieldTypeNames|conversion.IgnoreMissingFields))
  	utilruntime.Must(s.RegisterInputDefaults(&url.Values{}, JSONKeyMapper, conversion.AllowDifferentFieldTypeNames|conversion.IgnoreMissingFields))
  	return s
  }
docs: // NewScheme creates a new Scheme. This scheme is pluggable by default.