public void CollectionValidatorResultOfTargetItemChanges_SecondCollectionValidatorReturnsNOK()
        {
            InvalidItemsOfSecondCollectionValidator.Add(TargetItem);
            TargetItem.Revalidate();

            AfterCollectionValidatorResultOf(TargetItem, changedFrom: OK, to: OK, itemIs: NOK, andValidationStateEvent: HasNotOccured);
            AfterCollectionValidatorResultOf(TargetItem, changedFrom: NOK, to: NOK, itemIs: NOK, andValidationStateEvent: HasNotOccured);
            AfterCollectionValidatorResultOf(TargetItem, changedFrom: OK, to: NOK, itemIs: NOK, andValidationStateEvent: Occured);
            AfterCollectionValidatorResultOf(TargetItem, changedFrom: NOK, to: OK, itemIs: NOK, andValidationStateEvent: Occured);
        }
        private void AfterPropertyValidatorResultOf(EmployeeVM item, bool changedFrom, bool to, bool itemIs, bool andValidationStateEvent)
        {
            bool initiallyValidatorResultOK = (changedFrom == OK);
            bool finalValidatorResultOK     = (to == OK);

            bool expectItemIsValid = (itemIs == OK);
            bool expectValidationStateChangedEvent = (andValidationStateEvent == Occured);

            ChangeValidatorResult(InvalidItemsOfPropertyValidator, item, initiallyValidatorResultOK);
            TargetItem.Revalidate();

            item.ValidationStateChangedEvents.Clear();
            ChangeValidatorResult(InvalidItemsOfPropertyValidator, item, finalValidatorResultOK);
            TargetItem.Revalidate();

            AssertValidationState(item, expectItemIsValid);
            AssertValidationStateChangedEvent(item, expectValidationStateChangedEvent);
        }