private void WatchNextPhase() { while (true) { if (_index >= PhaseList.Count) { _index = 0; } if (PhaseList.Count == 0) { return; } var next = PhaseList[_index]; if (next.IsFinished) { PhaseList.Remove(next); continue; } Current = PhaseList[_index]; _index++; break; } }