private static void ValidateConstructionParams(
     IQueryHandler <GetDocumentToProcess, DocumentToProcess> getDocumentHandler,
     IImageProcessingPersistenceConfiguration persistenceConfiguration,
     ICommandHandler <SaveDomainObject <ProcessedDocumentPage> > saveProcessedPageHandler,
     ImageProcessingPreparationSteps imagePreparationSteps,
     IHandwrittenInputRecognizer handwrittenInputRecognizer,
     IHandwrittenChoiceRecognizer handwrittenChoiceRecognizer)
 {
     if (getDocumentHandler == null)
     {
         throw new ArgumentNullException(nameof(getDocumentHandler));
     }
     if (persistenceConfiguration == null)
     {
         throw new ArgumentNullException(nameof(persistenceConfiguration));
     }
     if (saveProcessedPageHandler == null)
     {
         throw new ArgumentNullException(nameof(saveProcessedPageHandler));
     }
     if (imagePreparationSteps == null)
     {
         throw new ArgumentNullException(nameof(imagePreparationSteps));
     }
     if (handwrittenInputRecognizer == null)
     {
         throw new ArgumentNullException(nameof(handwrittenInputRecognizer));
     }
     if (handwrittenChoiceRecognizer == null)
     {
         throw new ArgumentNullException(nameof(handwrittenChoiceRecognizer));
     }
 }
        public DocumentImagesProcessor(IQueryHandler <GetDocumentToProcess, DocumentToProcess> getDocumentHandler,
                                       IImageProcessingPersistenceConfiguration persistenceConfiguration,
                                       ICommandHandler <SaveDomainObject <ProcessedDocumentPage> > saveProcessedPageHandler,
                                       ImageProcessingPreparationSteps imagePreparationSteps,
                                       IHandwrittenInputRecognizer handwrittenInputRecognizer,
                                       IHandwrittenChoiceRecognizer handwrittenChoiceRecognizer)
        {
            ValidateConstructionParams(getDocumentHandler, persistenceConfiguration, saveProcessedPageHandler,
                                       imagePreparationSteps, handwrittenInputRecognizer, handwrittenChoiceRecognizer);

            PersistenceConfiguration     = persistenceConfiguration;
            _getDocumentHandler          = getDocumentHandler;
            _saveProcessedPageHandler    = saveProcessedPageHandler;
            _imagePreparationSteps       = imagePreparationSteps;
            _handwrittenInputRecognizer  = handwrittenInputRecognizer;
            _handwrittenChoiceRecognizer = handwrittenChoiceRecognizer;

            _tokenSource = new CancellationTokenSource();

            Ready();
        }