code: protected boolean updateCurrentAndBestSolution(SolutionType solution){
          return updateCurrentAndBestSolution(solution, getProblem().evaluate(solution), getProblem().validate(solution));
      }
docs: Update the current and best solution during search. The given solution is evaluated and validated,
  followed by an update of the current solution (also if it is invalid). Conversely, the best solution
  is only updated if the given solution is valid and improves over the best solution found so far.
  
  @param solution new current solution
  @return <code>true</code> if the best solution has been updated