public bool Next()
        {
            if (_source == null)
            {
                _source = _sources.Dequeue();
            }

            if (_source.Next())
            {
                return(true);
            }

            _consumed.Enqueue(_source);
            if (_sources.Count <= 0)
            {
                return(false);
            }

            _source = _sources.Dequeue();
            if (_source == null)
            {
                return(false);
            }

            return(_source.Next());
        }