public GetStreamEventsObserver(IPipelineFactory pipelineFactory,
                                       IPrimitiveEventRepository primitiveEventRepository)
        {
            Guard.AgainstNull(pipelineFactory, nameof(pipelineFactory));
            Guard.AgainstNull(primitiveEventRepository, nameof(primitiveEventRepository));

            _pipelineFactory          = pipelineFactory;
            _primitiveEventRepository = primitiveEventRepository;
        }
        public ProjectionEventProvider(IEventStoreConfiguration configuration, IEventProcessor eventProcessor,
                                       IPrimitiveEventRepository repository)
        {
            Guard.AgainstNull(configuration, nameof(configuration));
            Guard.AgainstNull(eventProcessor, nameof(eventProcessor));
            Guard.AgainstNull(repository, nameof(repository));

            _configuration  = configuration;
            _eventProcessor = eventProcessor;
            _repository     = repository;
        }
        public SavePrimitiveEventsObserver(IPrimitiveEventRepository primitiveEventRepository, ISerializer serializer,
                                           IConcurrencyExceptionSpecification concurrencyExceptionSpecification)
        {
            Guard.AgainstNull(primitiveEventRepository, nameof(primitiveEventRepository));
            Guard.AgainstNull(serializer, nameof(serializer));
            Guard.AgainstNull(concurrencyExceptionSpecification, nameof(concurrencyExceptionSpecification));

            _primitiveEventRepository = primitiveEventRepository;
            _serializer = serializer;
            _concurrencyExceptionSpecification = concurrencyExceptionSpecification;
        }
        public RemoveEventStreamObserver(IPrimitiveEventRepository primitiveEventRepository)
        {
            Guard.AgainstNull(primitiveEventRepository, nameof(primitiveEventRepository));

            _primitiveEventRepository = primitiveEventRepository;
        }