public TerminalCommandHandlers(
            IAuthoredEventStore eventStore,
            IInMemoryAuthoredEventStore inMemoryEventStore,
            ITerminalAdapter terminalAdapter,
            ei8.Data.ExternalReference.Port.Adapter.In.InProcess.IItemAdapter externalReferenceAdapter,
            IValidationClient validationClient,
            INeuronGraphQueryClient neuronGraphQueryClient,
            ISettingsService settingsService
            )
        {
            AssertionConcern.AssertArgumentNotNull(eventStore, nameof(eventStore));
            AssertionConcern.AssertArgumentNotNull(inMemoryEventStore, nameof(inMemoryEventStore));
            AssertionConcern.AssertArgumentNotNull(terminalAdapter, nameof(terminalAdapter));
            AssertionConcern.AssertArgumentNotNull(externalReferenceAdapter, nameof(externalReferenceAdapter));
            AssertionConcern.AssertArgumentNotNull(validationClient, nameof(validationClient));
            AssertionConcern.AssertArgumentNotNull(neuronGraphQueryClient, nameof(neuronGraphQueryClient));
            AssertionConcern.AssertArgumentNotNull(settingsService, nameof(settingsService));

            this.eventStore               = (IAuthoredEventStore)eventStore;
            this.inMemoryEventStore       = (IInMemoryAuthoredEventStore)inMemoryEventStore;
            this.terminalAdapter          = terminalAdapter;
            this.externalReferenceAdapter = externalReferenceAdapter;
            this.validationClient         = validationClient;
            this.neuronGraphQueryClient   = neuronGraphQueryClient;
            this.settingsService          = settingsService;
        }
        public NeuronCommandHandlers(
            IAuthoredEventStore eventStore,
            IInMemoryAuthoredEventStore inMemoryEventStore,
            INeuronAdapter neuronAdapter,
            ei8.Data.Tag.Port.Adapter.In.InProcess.IItemAdapter tagItemAdapter,
            ei8.Data.Aggregate.Port.Adapter.In.InProcess.IItemAdapter aggregateItemAdapter,
            ei8.Data.ExternalReference.Port.Adapter.In.InProcess.IItemAdapter externalReferenceAdapter,
            IValidationClient validationClient,
            ISettingsService settingsService
            )
        {
            AssertionConcern.AssertArgumentNotNull(neuronAdapter, nameof(neuronAdapter));
            AssertionConcern.AssertArgumentNotNull(eventStore, nameof(eventStore));
            AssertionConcern.AssertArgumentNotNull(inMemoryEventStore, nameof(inMemoryEventStore));
            AssertionConcern.AssertArgumentNotNull(tagItemAdapter, nameof(tagItemAdapter));
            AssertionConcern.AssertArgumentNotNull(aggregateItemAdapter, nameof(aggregateItemAdapter));
            AssertionConcern.AssertArgumentNotNull(externalReferenceAdapter, nameof(externalReferenceAdapter));
            AssertionConcern.AssertArgumentNotNull(validationClient, nameof(validationClient));
            AssertionConcern.AssertArgumentNotNull(settingsService, nameof(settingsService));

            this.neuronAdapter            = neuronAdapter;
            this.eventStore               = (IAuthoredEventStore)eventStore;
            this.inMemoryEventStore       = (IInMemoryAuthoredEventStore)inMemoryEventStore;
            this.tagItemAdapter           = tagItemAdapter;
            this.aggregateItemAdapter     = aggregateItemAdapter;
            this.externalReferenceAdapter = externalReferenceAdapter;
            this.validationClient         = validationClient;
            this.settingsService          = settingsService;
        }