Iterator<CustomSolverPhaseCommand> commandIterator = customSolverPhaseCommandList.iterator();
while (!termination.isPhaseTerminated(customSolverPhaseScope) && commandIterator.hasNext()) {
CustomSolverPhaseCommand customSolverPhaseCommand = commandIterator.next();
stepStarted(stepScope);
customSolverPhaseCommand.changeWorkingSolution(solverScope.getScoreDirector());
Score score = customSolverPhaseScope.calculateScore();
stepScope.setScore(score);
stepEnded(stepScope);
stepScope = createNextStepScope(customSolverPhaseScope, stepScope);
}
phaseEnded(customSolverPhaseScope);