private EventPool RetrieveChanges(ChangesMonitor source) { if (LostLifeChanges.Count == 0) { return(source.Wait(IsCancel)); } // we failed last time and there are unprocessed changes var changes = new EventPool(LostLifeChanges); LostLifeChanges.Clear(); return(changes); }