code: @Override
      public <ActualSolutionType extends SolutionType> WeightedIndexEvaluation evaluate(Move<? super ActualSolutionType> move,
                                                                                        ActualSolutionType curSolution,
                                                                                        Evaluation curEvaluation,
                                                                                        DataType data) {
          // cast current evaluation object
          WeightedIndexEvaluation curEval = (WeightedIndexEvaluation) curEvaluation;
          // initialize new evaluation object
          WeightedIndexEvaluation newEval = new WeightedIndexEvaluation();
          // compute delta evaluation for each contained objective
          weights.keySet().forEach(obj -> {
              // extract current evaluation
              Evaluation objCurEval = curEval.getEvaluation(obj);
              // delta evaluation of contained objective
              Evaluation objNewEval = obj.evaluate(move, curSolution, objCurEval, data);
              // flip weight sign if minimizing
              double w = weights.get(obj);
              if(obj.isMinimizing()){
                  w = -w;
              }
              // register in new weighted index evaluation
              newEval.addEvaluation(obj, objNewEval, w);
          });
          // return new evaluation
          return newEval;
      }
docs: Delta evaluation. Computes a delta evaluation for each contained objective and wraps
  the obtained modified evaluations in a new weighted index evaluation.
  
  @param move move to be evaluated
  @param curSolution current solution of a local search
  @param curEvaluation evaluation of current solution
  @param data data to be used for evaluation
  @param <ActualSolutionType> the actual solution type of the problem that is being solved;
  a subtype of the solution types of both the objective and the applied move
  @return weighted index evaluation of obtained neighbour when applying the move