public bool NewIteration() { PrepareForScheduling(); if (_strategy.Finished) { throw new Exception("Already finished"); } bool result = _strategy.Advance(); MaybeSwitch(); return(result); }