code: func unmarshalToObject(typer runtime.ObjectTyper, creater runtime.ObjectCreater, actual *schema.GroupVersionKind, into runtime.Object, data []byte) (runtime.Object, *schema.GroupVersionKind, error) {
  	// use the target if necessary
  	obj, err := runtime.UseOrCreateObject(typer, creater, *actual, into)
  	if err != nil {
  		return nil, actual, err
  	}
  
  	pb, ok := obj.(proto.Message)
  	if !ok {
  		return nil, actual, errNotMarshalable{reflect.TypeOf(obj)}
  	}
  	if err := proto.Unmarshal(data, pb); err != nil {
  		return nil, actual, err
  	}
  	return obj, actual, nil
  }
docs: // unmarshalToObject is the common code between decode in the raw and normal serializer.