code: func ReorganizeTaints(node *v1.Node, overwrite bool, taintsToAdd []v1.Taint, taintsToRemove []v1.Taint) (string, []v1.Taint, error) {
  	newTaints := append([]v1.Taint{}, taintsToAdd...)
  	oldTaints := node.Spec.Taints
  	// add taints that already existing but not updated to newTaints
  	added := addTaints(oldTaints, &newTaints)
  	allErrs, deleted := deleteTaints(taintsToRemove, &newTaints)
  	if (added && deleted) || overwrite {
  		return MODIFIED, newTaints, utilerrors.NewAggregate(allErrs)
  	} else if added {
  		return TAINTED, newTaints, utilerrors.NewAggregate(allErrs)
  	}
  	return UNTAINTED, newTaints, utilerrors.NewAggregate(allErrs)
  }
docs: // ReorganizeTaints returns the updated set of taints, taking into account old taints that were not updated,
  // old taints that were updated, old taints that were deleted, and new taints.