protected static SingleBenchmarkResult createMerge(
      SolverBenchmarkResult solverBenchmarkResult,
      ProblemBenchmarkResult problemBenchmarkResult,
      SingleBenchmarkResult oldResult) {
    SingleBenchmarkResult newResult =
        new SingleBenchmarkResult(solverBenchmarkResult, problemBenchmarkResult);
    newResult.pureSingleStatisticList =
        new ArrayList<PureSingleStatistic>(oldResult.pureSingleStatisticList.size());
    for (PureSingleStatistic oldSingleStatistic : oldResult.pureSingleStatisticList) {
      newResult.pureSingleStatisticList.add(
          oldSingleStatistic.getStatisticType().buildPureSingleStatistic(newResult));
    }

    newResult.initSingleStatisticMap();
    for (SingleStatistic singleStatistic : newResult.effectiveSingleStatisticMap.values()) {
      singleStatistic.setPointList(
          oldResult.getSingleStatistic(singleStatistic.getStatisticType()).getPointList());
    }
    // Skip oldResult.reportDirectory
    // Skip oldResult.usedMemoryAfterInputSolution
    newResult.succeeded = oldResult.succeeded;
    newResult.score = oldResult.score;
    newResult.timeMillisSpent = oldResult.timeMillisSpent;
    newResult.calculateCount = oldResult.calculateCount;

    solverBenchmarkResult.getSingleBenchmarkResultList().add(newResult);
    problemBenchmarkResult.getSingleBenchmarkResultList().add(newResult);
    return newResult;
  }
 public String getSingleReportDirectoryPath() {
   return problemBenchmarkResult.getProblemReportDirectoryPath()
       + "/"
       + solverBenchmarkResult.getName();
 }
 /** @return never null, filename safe */
 public String getName() {
   return problemBenchmarkResult.getName() + "_" + solverBenchmarkResult.getName();
 }