code: func (f CodecFactory) UniversalDecoder(versions ...schema.GroupVersion) runtime.Decoder {
  	var versioner runtime.GroupVersioner
  	if len(versions) == 0 {
  		versioner = runtime.InternalGroupVersioner
  	} else {
  		versioner = schema.GroupVersions(versions)
  	}
  	return f.CodecForVersions(nil, f.universal, nil, versioner)
  }
docs: // UniversalDecoder returns a runtime.Decoder capable of decoding all known API objects in all known formats. Used
  // by clients that do not need to encode objects but want to deserialize API objects stored on disk. Only decodes
  // objects in groups registered with the scheme. The GroupVersions passed may be used to select alternate
  // versions of objects to return - by default, runtime.APIVersionInternal is used. If any versions are specified,
  // unrecognized groups will be returned in the version they are encoded as (no conversion). This decoder performs
  // defaulting.
  //
  // TODO: the decoder will eventually be removed in favor of dealing with objects in their versioned form
  // TODO: only accept a group versioner