/// <summary>
 /// Initializes a new instance of the <see cref="FuturesChainUniverseSubscriptionEnumeratorFactory"/> class
 /// </summary>
 /// <param name="symbolUniverse">Symbol universe provider of the data queue</param>
 public FuturesChainUniverseSubscriptionEnumeratorFactory(IDataQueueUniverseProvider symbolUniverse, ITimeProvider timeProvider)
 {
     _isLiveMode             = true;
     _symbolUniverse         = symbolUniverse;
     _timeProvider           = timeProvider;
     _enumeratorConfigurator = (sr, input) => input;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="OptionChainUniverseSubscriptionEnumeratorFactory"/> class
 /// </summary>
 /// <param name="enumeratorConfigurator">Function used to configure the sub-enumerators before sync (fill-forward/filter/ect...)</param>
 /// <param name="symbolUniverse">Symbol universe provider of the data queue</param>
 /// <param name="timeProvider">The time provider instance used to determine when bars are completed and can be emitted</param>
 public OptionChainUniverseSubscriptionEnumeratorFactory(Func <SubscriptionRequest, IEnumerator <BaseData> > enumeratorConfigurator,
                                                         IDataQueueUniverseProvider symbolUniverse, ITimeProvider timeProvider)
 {
     _isLiveMode             = true;
     _symbolUniverse         = symbolUniverse;
     _timeProvider           = timeProvider;
     _enumeratorConfigurator = enumeratorConfigurator;
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="DataQueueFuturesChainUniverseDataCollectionEnumerator"/> class.
        /// </summary>
        /// <param name="subscriptionRequest">The subscription request to be used</param>
        /// <param name="universeProvider">Symbol universe provider of the data queue</param>
        /// <param name="timeProvider">The time provider to be used</param>
        public DataQueueFuturesChainUniverseDataCollectionEnumerator(
            SubscriptionRequest subscriptionRequest,
            IDataQueueUniverseProvider universeProvider,
            ITimeProvider timeProvider)
        {
            _subscriptionRequest = subscriptionRequest;
            _universeProvider    = universeProvider;
            _timeProvider        = timeProvider;

            _needNewCurrent = true;
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="DataQueueOptionChainUniverseDataCollectionEnumerator"/> class.
        /// </summary>
        /// <param name="subscriptionRequest">The subscription request to be used</param>
        /// <param name="underlying">Underlying enumerator</param>
        /// <param name="universeProvider">Symbol universe provider of the data queue</param>
        /// <param name="timeProvider">The time provider to be used</param>
        public DataQueueOptionChainUniverseDataCollectionEnumerator(
            SubscriptionRequest subscriptionRequest,
            IEnumerator <BaseData> underlying,
            IDataQueueUniverseProvider universeProvider,
            ITimeProvider timeProvider)
        {
            _subscriptionRequest = subscriptionRequest;
            Underlying           = underlying;
            _universeProvider    = universeProvider;
            _timeProvider        = timeProvider;

            _needNewCurrent = true;
        }