code: func (s *Scheme) Convert(in, out interface{}) error {
  	inVersion := unversioned.GroupVersion{Group: "unknown", Version: "unknown"}
  	outVersion := unversioned.GroupVersion{Group: "unknown", Version: "unknown"}
  	if gvk, err := s.ObjectKind(in); err == nil {
  		inVersion = gvk.GroupVersion()
  	}
  	if gvk, err := s.ObjectKind(out); err == nil {
  		outVersion = gvk.GroupVersion()
  	}
  	flags, meta := s.generateConvertMeta(inVersion, outVersion, in)
  	if flags == 0 {
  		flags = AllowDifferentFieldTypeNames
  	}
  	return s.converter.Convert(in, out, flags, meta)
  }
docs: // 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().