code: func ValidateResourceQuotaUpdate(newResourceQuota, oldResourceQuota *core.ResourceQuota) field.ErrorList {
  	allErrs := ValidateObjectMetaUpdate(&newResourceQuota.ObjectMeta, &oldResourceQuota.ObjectMeta, field.NewPath("metadata"))
  	allErrs = append(allErrs, ValidateResourceQuotaSpec(&newResourceQuota.Spec, field.NewPath("spec"))...)
  
  	// ensure scopes cannot change, and that resources are still valid for scope
  	fldPath := field.NewPath("spec", "scopes")
  	oldScopes := sets.NewString()
  	newScopes := sets.NewString()
  	for _, scope := range newResourceQuota.Spec.Scopes {
  		newScopes.Insert(string(scope))
  	}
  	for _, scope := range oldResourceQuota.Spec.Scopes {
  		oldScopes.Insert(string(scope))
  	}
  	if !oldScopes.Equal(newScopes) {
  		allErrs = append(allErrs, field.Invalid(fldPath, newResourceQuota.Spec.Scopes, fieldImmutableErrorMsg))
  	}
  
  	newResourceQuota.Status = oldResourceQuota.Status
  	return allErrs
  }
docs: // ValidateResourceQuotaUpdate tests to see if the update is legal for an end user to make.
  // newResourceQuota is updated with fields that cannot be changed.