public void Process(int untilPosition = Int32.MaxValue) { if (untilPosition <= _NextToProcess) { return; } Changes.GoTo(_NextToProcess); while (true) { if (untilPosition == _NextToProcess) { break; } var change = Changes.ReadNext(); if (change == null) { break; } Process(change, null); _NextToProcess = Changes.Position; } }