public void solve(DefaultSolverScope solverScope) {
    BruteForceSolverPhaseScope bruteForceSolverPhaseScope =
        new BruteForceSolverPhaseScope(solverScope);
    phaseStarted(bruteForceSolverPhaseScope);

    BruteForceStepScope bruteForceStepScope = createNextStepScope(bruteForceSolverPhaseScope, null);
    while (!termination.isPhaseTerminated(bruteForceSolverPhaseScope)
        && bruteForceEntityWalker.hasWalk()) {
      bruteForceEntityWalker.walk();
      Score score = bruteForceSolverPhaseScope.calculateScoreFromWorkingMemory();
      bruteForceStepScope.setScore(score);
      stepTaken(bruteForceStepScope);
      bruteForceStepScope = createNextStepScope(bruteForceSolverPhaseScope, bruteForceStepScope);
    }
    phaseEnded(bruteForceSolverPhaseScope);
  }