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()); }