anchor.diff:  More advanced implementations push the best solutions directly to the UI or a messaging queue.
   
   If the user is satisfied with the intermediate best solution
  -and does not want to wait for a better one, call `SolverManager.terminateEarly(problemId)`.
  +and does not want to wait any longer for a better one, call `SolverManager.terminateEarly(problemId)`.
  
positive.code: [[solverManagerSolveAndListen]]
  === Solve and listen to show progress to the end-user
  
  When the solver is running and an end-user is waiting for that solution,
  it's vital to show progress to the end-user.
  Display the best score so far and visualize the best solution so far.
  
  To handle intermediate best solutions, use `solveAndListen(...)`:
  
  
negative.code: SolverManager<CloudBalance, UUID> solverManager = SolverManager.create(solverConfig, new SolverManagerConfig());
  ----
  
  Each problem submitted to the `SolverManager.solve(...)` methods needs a unique problem ID.
  Later calls to `getSolverStatus(problemId)` or `terminateEarly(problemId)` use that problem ID
  to distinguish between the planning problems.
  The problem ID must be an immutable class, such as `Long`, `String` or `java.util.UUID`.
  
  The `SolverManagerConfig` class has a `parallelSolverCount` property,
  