public bool MoveNext() { if (_readers == null) { if (_files.Count == 0) { return(false); } _readers = new CKSortedArrayList <OneLogReader>(OneLogReader.CompareHeadTime, allowDuplicates: true); foreach (var r in _files.Where(occ => occ.LastEntryTime >= _firstLogTime).Select(occ => new OneLogReader(occ, _firstLogTime))) { _readers.Add(r); } if (_readers.Count == 0) { return(false); } RemoveAllDuplicates(); Debug.Assert(_readers.Count > 0); return(true); } if (_readers.Count == 0) { return(false); } if (!_readers[0].Forward()) { _readers.RemoveAt(0); return(_readers.Count > 0); } else { RemoveDuplicateAround(_readers.CheckPosition(0)); Debug.Assert(_readers.Count > 0); return(true); } }