/// <summary>
        /// Deletes those allowed errors whose context have changed. In the base implementation this means
        /// where any involved row has changed since the error creation. Additional context change situations
        /// such as a change in the quality condition can be detected by the sub-repository.
        /// </summary>
        /// <param name="qualityConditions">The quality conditions.</param>
        /// <param name="invalidateAllowedErrorsIfAnyInvolvedObjectChanged">
        /// if set to <c>true</c> allowed errors are invalidated if any involved object changed.</param>
        /// <param name="invalidateAllowedErrorsIfQualityConditionWasUpdated">
        /// if set to <c>true</c> allowed errors are invalidated if the quality condition was updated.</param>
        public void DeleteInvalidAllowedErrors(
            [NotNull] IEnumerable <QualityCondition> qualityConditions,
            bool invalidateAllowedErrorsIfAnyInvolvedObjectChanged,
            bool invalidateAllowedErrorsIfQualityConditionWasUpdated)
        {
            // TODO: consider using AllowedErrorList property, remove qualityConditions parameter
            Assert.ArgumentNotNull(qualityConditions, nameof(qualityConditions));

            ICollection <QualityCondition> qualityConditionCollection =
                CollectionUtils.GetCollection(qualityConditions);

            var allowedErrors =
                new List <AllowedError>(GetAllowedErrors(qualityConditionCollection));

            AllowedErrorUtils.InvalidateAllowedErrors(
                allowedErrors,
                qualityConditionCollection,
                _verificationContext,
                invalidateAllowedErrorsIfAnyInvolvedObjectChanged,
                invalidateAllowedErrorsIfQualityConditionWasUpdated);

            List <AllowedError> invalidErrors =
                allowedErrors.Where(error => error.Invalidated).ToList();

            AllowedErrorUtils.DeleteAllowedErrors(invalidErrors);
        }
 /// <summary>
 /// Deletes all allowed errors where the Used property is false. The used property is set to true
 /// in a verification if the error was found and the allowed error was used as an exception.
 /// If the error was corrected in the mean while the allowed error is not needed any more.
 /// </summary>
 public void DeleteUnusedAllowedErrors()
 {
     AllowedErrorUtils.DeleteAllowedErrors(GetUnusedAllowedErrors());
 }