public DefaultImpatientQueryProcessor(
     IImpatientQueryCache queryCache,
     IQueryProcessingContextFactory queryProcessingContextFactory,
     IQueryableInliningExpressionVisitorFactory queryableInliningExpressionVisitorFactory,
     IOptimizingExpressionVisitorProvider optimizingExpressionVisitorProvider,
     IComposingExpressionVisitorProvider composingExpressionVisitorProvider,
     ICompilingExpressionVisitorProvider compilingExpressionVisitorProvider,
     IDbCommandExecutorFactory dbCommandExecutorFactory)
 {
     this.queryCache = queryCache ?? throw new ArgumentNullException(nameof(queryCache));
     this.queryProcessingContextFactory             = queryProcessingContextFactory ?? throw new ArgumentNullException(nameof(queryProcessingContextFactory));
     this.queryableInliningExpressionVisitorFactory = queryableInliningExpressionVisitorFactory ?? throw new ArgumentNullException(nameof(queryableInliningExpressionVisitorFactory));
     this.optimizingExpressionVisitorProvider       = optimizingExpressionVisitorProvider ?? throw new ArgumentNullException(nameof(optimizingExpressionVisitorProvider));
     this.composingExpressionVisitorProvider        = composingExpressionVisitorProvider ?? throw new ArgumentNullException(nameof(composingExpressionVisitorProvider));
     this.compilingExpressionVisitorProvider        = compilingExpressionVisitorProvider ?? throw new ArgumentNullException(nameof(compilingExpressionVisitorProvider));
     this.dbCommandExecutorFactory = dbCommandExecutorFactory ?? throw new ArgumentNullException(nameof(dbCommandExecutorFactory));
 }