public bool MoveNext()
        {
            if (_workEnumerators.Count == 0)
            {
                return(false);
            }

            using (_extractionStats.Start())
            {
                var enumerator = _workEnumerators[0];
                for (var index = 1; index < _workEnumerators.Count; index++)
                {
                    if (_workEnumerators[index].Current.Etag < enumerator.Current.Etag)
                    {
                        enumerator = _workEnumerators[index];
                    }
                }

                _item = enumerator.Current;

                if (enumerator.MoveNext() == false)
                {
                    _workEnumerators.Remove(enumerator);
                }

                _extractionStats.RecordExtractedItem(_item.Type);
                return(true);
            }
        }
        public bool MoveNext()
        {
            if (_workEnumerators.Count == 0)
            {
                return(false);
            }

            using (_extractionStats.Start())
            {
                var current = _workEnumerators[0];
                for (var index = 1; index < _workEnumerators.Count; index++)
                {
                    if (_workEnumerators[index].Current.Etag < current.Current.Etag)
                    {
                        current = _workEnumerators[index];
                    }
                }

                _currentItem = current.Current;

                if (current.MoveNext() == false)
                {
                    _workEnumerators.Remove(current);
                }

                _extractionStats.RecordExtractedItem();

                return(true);
            }
        }