// @Override
  public double getFitnessOld(Chromosome individual) {
    logger.trace("Calculating defuse fitness");

    TestSuiteChromosome suite = (TestSuiteChromosome) individual;
    List<ExecutionResult> results = runTestSuite(suite);
    double fitness = 0.0;

    if (DefUseCoverageFactory.detectAliasingGoals(results)) {
      goals = DefUseCoverageFactory.getDUGoals();
      logger.debug("New total number of goals: " + goals.size());
      totalGoals = initTotalGoals();
      for (DefUsePairType type : totalGoals.keySet()) {
        logger.info(type + ":" + totalGoals.get(type));
      }
    }

    Set<DefUseCoverageTestFitness> coveredGoalsSet =
        DefUseExecutionTraceAnalyzer.getCoveredGoals(results);

    initCoverageMaps();

    for (DefUseCoverageTestFitness goal : goals) {
      if (coveredGoalsSet.contains(goal)) {
        goal.setCovered(true);
        continue;
      }

      double goalFitness = 2.0;
      for (ExecutionResult result : results) {
        TestChromosome tc = new TestChromosome();
        tc.setTestCase(result.test);
        double resultFitness = goal.getFitness(tc, result);
        if (resultFitness < goalFitness) goalFitness = resultFitness;
        if (goalFitness == 0.0) {
          result.test.addCoveredGoal(goal);
          coveredGoalsSet.add(goal);
          goal.setCovered(true);
          break;
        }
      }
      fitness += goalFitness;
    }

    countCoveredGoals(coveredGoalsSet);
    trackCoverageStatistics(suite);
    updateIndividual(this, suite, fitness);

    int coveredGoalCount = countCoveredGoals();
    int totalGoalCount = countTotalGoals();
    if (fitness == 0.0 && coveredGoalCount < totalGoalCount)
      throw new IllegalStateException(
          "Fitness 0 implies 100% coverage "
              + coveredGoalCount
              + " / "
              + totalGoals
              + " (covered / total)");

    return fitness;
  }