anchor.diff:  
   Ah, this brings us to incremental score calculation. The key to performance.
   It is the rocket science at the heart of OptaPlanner that brings massive scalability.
  -And - for the few that have seen them - the cause of the notorious score corruption exception.
  +And -- for the few that have seen them -- the cause of the notorious score corruption exception.
   
   What is incremental score calculation?
   For each move, we calculate the score of the solution state after applying that move.
  
positive.code: Cloning either is too expensive.
  To evaluate a move on a move thread, with incremental score calculation,
  we must reuse the score calculator of the previous evaluation.
  This implies that the solution state must be in the exact same state to begin with.
  But because the outer step iterations change the solution state permanently,
  the move threads must sync up with the main solver thread after every step.
  
  It's kinda like a multiplayer game of StarCraft.
  
negative.code: ** Doesn't do horizontal scaling on 1 dataset.
  
  * *Multi bet solving*: Solve one dataset in multiple ways, completely independent of each other. Take the best result.
  ** Works since the first OptaPlanner version.
  ** It's usually a waste of resources: use the Benchmarker during development instead to find the best algorithm in advance.
  ** Doesn't scale horizontally: the best result is marginally better than a single-threaded result and takes equally long.
  
  