code: func (p *patcher) applyAdmission(ctx context.Context, patchedObject runtime.Object, currentObject runtime.Object) (runtime.Object, error) {
  	p.trace.Step("About to check admission control")
  	var operation admission.Operation
  	if hasUID, err := hasUID(currentObject); err != nil {
  		return nil, err
  	} else if !hasUID {
  		operation = admission.Create
  		currentObject = nil
  	} else {
  		operation = admission.Update
  	}
  	if p.admissionCheck != nil && p.admissionCheck.Handles(operation) {
  		attributes := p.admissionAttributes(ctx, patchedObject, currentObject, operation)
  		return patchedObject, p.admissionCheck.Admit(attributes, p.objectInterfaces)
  	}
  	return patchedObject, nil
  }
docs: // applyAdmission is called every time GuaranteedUpdate asks for the updated object,
  // and is given the currently persisted object and the patched object as input.
  // TODO: rename this function because the name implies it is related to applyPatcher