/// <summary>
        /// Called just before any validation is caused.
        /// </summary>
        /// <param name="instance">
        /// The instance that is about to be validated.
        /// </param>
        /// <param name="previousFieldValidationResults">
        /// The previous field validation results.
        /// </param>
        /// <param name="previousBusinessRuleValidationResults">
        /// The previous business rule validation results.
        /// </param>
        /// <exception cref="ArgumentNullException">
        /// The <paramref name="instance"/> is <c>null</c>.
        /// </exception>
        /// <exception cref="ArgumentNullException">
        /// The <paramref name="previousFieldValidationResults"/> is <c>null</c>.
        /// </exception>
        /// <exception cref="ArgumentNullException">
        /// The <paramref name="previousBusinessRuleValidationResults"/> is <c>null</c>.
        /// </exception>
        public void BeforeValidation(object instance, List <IFieldValidationResult> previousFieldValidationResults, List <IBusinessRuleValidationResult> previousBusinessRuleValidationResults)
        {
            _synchronizationContext.Acquire();

            try
            {
                foreach (IValidator validator in _validators)
                {
                    validator.BeforeValidation(instance, previousFieldValidationResults, previousBusinessRuleValidationResults);
                }
            }
            catch (Exception)
            {
                _synchronizationContext.Release();
                throw;
            }
        }