code: protected boolean updateBestSolution(SolutionType newSolution,
                                           Evaluation newSolutionEvaluation,
                                           Validation newSolutionValidation){
          // check: valid solution
          if(newSolutionValidation.passed()){
              // check: improvement or no best solution set
              Double delta = null;
              if(bestSolution == null
                      || (delta = computeDelta(newSolutionEvaluation, getBestSolutionEvaluation())) > 0){
                  // flag improvement
                  improvementDuringCurrentStep = true;
                  // store last improvement time
                  lastImprovementTime = System.currentTimeMillis();
                  // update minimum delta if applicable (only if first delta or smaller than current minimum delta)
                  if(delta != null && (minDelta == JamesConstants.INVALID_DELTA || delta < minDelta)){
                      minDelta = delta;
                  }
                  // update best solution (create copy!)
                  bestSolution = Solution.checkedCopy(newSolution);
                  bestSolutionEvaluation = newSolutionEvaluation;
                  bestSolutionValidation = newSolutionValidation;
                  // fire callback
                  fireNewBestSolution(bestSolution, bestSolutionEvaluation, bestSolutionValidation);
                  // found improvement
                  return true;
              } else {
                  // no improvement
                  return false;
              }
          } else {
              // invalid solution
              return false;
          }
      }
docs: <p>
  Checks whether a new best solution has been found and updates it accordingly,
  given that the solution has already been evaluated and validated. The best
  solution is updated only if the presented solution is valid and
  </p>
  <ul>
  <li>no best solution had been set before, or</li>
  <li>the new solution has a better evaluation</li>
  </ul>
  <p>
  If the new solution is invalid or has a worse evaluation than the current best
  solution, calling this method has no effect. Note that the best solution is
  <b>retained</b> across subsequent runs of the same search.
  </p>
  
  @param newSolution newly presented solution
  @param newSolutionEvaluation evaluation of given solution
  @param newSolutionValidation validation of given solution
  @return <code>true</code> if the given solution is accepted as the new best solution