anchor.diff:  
   Now you are ready to put everything together and create a REST service.
   But solving planning problems on REST threads causes HTTP timeout issues.
  -Therefore, the Spring Boot starter injects a `SolverManager` class,
  +Therefore, the Spring Boot starter injects a `SolverManager` instance,
   which runs solvers in a separate thread pool
   and can solve multiple datasets in parallel.
   
  
positive.code: It also verifies that it found a feasible solution (no hard constraints broken).
  
  Normally, the solver finds a feasible solution in less than 200 milliseconds.
  Notice how the `@SpringBootTest` annotation's properties overwrites the solver termination
  to terminate as soon as a feasible solution (`0hard/*soft`) is found.
  This avoids hard coding a solver time, because the unit test might run on arbitrary hardware.
  This approach ensures that the test runs long enough to find a feasible solution, even on slow machines.
  
negative.code: * A teacher prefers to teach every lesson in a single room.
  * A teacher prefers to teach sequential lessons and dislikes gaps between lessons.
  
  Mathematically speaking, school timetabling is an _NP-hard_ problem.
  This means it is difficult to scale.
  Simply using brute force to iterate through all possible combinations would take millions of years for a non-trivial data set, even on a supercomputer.
  Luckily, AI constraint solvers such as OptaPlanner have advanced algorithms
  that deliver a near-optimal solution in a reasonable amount of time.
  
  