public void PerformValidation <TOwnerVM, TTargetVM>(
     ViewModelValidationArgs <TOwnerVM, TTargetVM> args,
     object validatorKey = null
     )
     where TOwnerVM : IViewModel
     where TTargetVM : IViewModel
 {
     PerformValidation(
         errorMessage => args.AddError(errorMessage),
         ValidatorType.ViewModel,
         args.Owner,
         args.Target,
         validatorKey
         );
 }
        private static ViewModelValidationArgs <IViewModel, EmployeeVM> CreateArgs(
            IViewModel owner,
            EmployeeVM target,
            IValidator validator = null
            )
        {
            validator = validator ?? Mock <IValidator>();

            var path = Path.Empty.Append(owner);

            if (target != owner)
            {
                path = path.Append(target);
            }

            return(ViewModelValidationArgs <IViewModel, EmployeeVM> .Create(
                       validator,
                       new ValidationRequest(ValidationStep.ViewModel, path)
                       ));
        }