public StreamConsumerSettings(
     [NotNull] string streamName,
     [NotNull] IHerculesStreamClient <T> streamClient,
     [NotNull] IStreamEventsHandler <T> eventsHandler,
     [NotNull] IStreamCoordinatesStorage coordinatesStorage,
     [NotNull] Func <StreamShardingSettings> shardingSettingsProvider)
 {
     StreamName               = streamName ?? throw new ArgumentNullException(nameof(streamName));
     StreamClient             = streamClient ?? throw new ArgumentNullException(nameof(streamClient));
     EventsHandler            = eventsHandler ?? throw new ArgumentNullException(nameof(eventsHandler));
     CoordinatesStorage       = coordinatesStorage ?? throw new ArgumentNullException(nameof(coordinatesStorage));
     ShardingSettingsProvider = shardingSettingsProvider ?? throw new ArgumentNullException(nameof(shardingSettingsProvider));
 }
 public StreamConsumerSettings(
     [NotNull] string streamName,
     [NotNull] IHerculesStreamClient streamClient,
     [NotNull] IStreamEventsHandler eventsHandler,
     [NotNull] IStreamCoordinatesStorage coordinatesStorage,
     [NotNull] Func <StreamShardingSettings> shardingSettingsProvider)
     : base(
         streamName,
         streamClient.ToGenericClient(),
         eventsHandler.ToGenericHandler(),
         coordinatesStorage,
         shardingSettingsProvider)
 {
 }
 public GenericAdapter(IStreamEventsHandler streamEventsHandler) =>
 this.streamEventsHandler = streamEventsHandler;
 public static IStreamEventsHandler <HerculesEvent> ToGenericHandler(this IStreamEventsHandler streamEventsHandler) =>
 new GenericAdapter(streamEventsHandler);