code: private void fireNewBestSolution(SolutionType newBestSolution,
                                       Evaluation newBestSolutionEvaluation,
                                       Validation newBestSolutionValidation){
          for(SearchListener<? super SolutionType> l : searchListeners){
              l.newBestSolution(this, newBestSolution,
                                      newBestSolutionEvaluation,
                                      newBestSolutionValidation);
          }
      }
docs: Calls {@link SearchListener#newBestSolution(Search, Solution, Evaluation, Validation)}
  on every attached search listener. Should only be executed when search is active
  (initializing, running or terminating).
  
  @param newBestSolution new best solution
  @param newBestSolutionEvaluation evaluation of new best solution
  @param newBestSolutionValidation validation of new best solution