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