Program: 64533
Project: 64533
Buggy source:
/** 
 * The run() method creates de output directory and compute the fronts
 */
@Override public void run() throws IOException {
  String outputDirectoryName=experiment.getReferenceFrontDirectory();
  File outputDirectory=createOutputDirectory(outputDirectoryName);
  List<String> referenceFrontFileNames=new LinkedList<>();
  for (  Problem<?> problem : experiment.getProblemList()) {
    NonDominatedSolutionListArchive<DoubleSolution> nonDominatedSolutionArchive=new NonDominatedSolutionListArchive<DoubleSolution>();
    for (    TaggedAlgorithm<?> algorithm : experiment.getAlgorithmList()) {
      String problemDirectory=experiment.getExperimentBaseDirectory() + "String_Node_Str" + algorithm.getTag()+ "String_Node_Str"+ problem.getName();
      for (int i=0; i < experiment.getIndependentRuns(); i++) {
        String frontFileName=problemDirectory + "String_Node_Str" + experiment.getOutputParetoFrontFileName()+ i+ "String_Node_Str";
        Front front=new ArrayFront(frontFileName);
        List<DoubleSolution> solutionList=FrontUtils.convertFrontToSolutionList(front);
        for (        DoubleSolution solution : solutionList) {
          nonDominatedSolutionArchive.add(solution);
        }
      }
    }
    String referenceSetFileName=outputDirectoryName + "String_Node_Str" + problem.getName()+ "String_Node_Str";
    referenceFrontFileNames.add(problem.getName() + "String_Node_Str");
    new SolutionListOutput(nonDominatedSolutionArchive.getSolutionList()).printObjectivesToFile(referenceSetFileName);
    ;
  }
  experiment.setReferenceFrontFileNames(referenceFrontFileNames);
}

Fixed version (ground truth):
/** 
 * The run() method creates de output directory and compute the fronts
 */
@Override public void run() throws IOException {
  String outputDirectoryName=experiment.getReferenceFrontDirectory();
  File outputDirectory=createOutputDirectory(outputDirectoryName);
  List<String> referenceFrontFileNames=new LinkedList<>();
  for (  Problem<?> problem : experiment.getProblemList()) {
    NonDominatedSolutionListArchive<DoubleSolution> nonDominatedSolutionArchive=new NonDominatedSolutionListArchive<DoubleSolution>();
    for (    TaggedAlgorithm<?> algorithm : experiment.getAlgorithmList()) {
      String problemDirectory=experiment.getExperimentBaseDirectory() + "String_Node_Str" + algorithm.getTag()+ "String_Node_Str"+ problem.getName();
      for (int i=0; i < experiment.getIndependentRuns(); i++) {
        String frontFileName=problemDirectory + "String_Node_Str" + experiment.getOutputParetoFrontFileName()+ i+ "String_Node_Str";
        Front front=new ArrayFront(frontFileName);
        List<DoubleSolution> solutionList=FrontUtils.convertFrontToSolutionList(front);
        GenericSolutionAttribute<DoubleSolution,String> solutionAttribute=new GenericSolutionAttribute<DoubleSolution,String>();
        for (        DoubleSolution solution : solutionList) {
          solutionAttribute.setAttribute(solution,algorithm.getTag());
          nonDominatedSolutionArchive.add(solution);
        }
      }
    }
    String referenceSetFileName=outputDirectoryName + "String_Node_Str" + problem.getName()+ "String_Node_Str";
    referenceFrontFileNames.add(problem.getName() + "String_Node_Str");
    new SolutionListOutput(nonDominatedSolutionArchive.getSolutionList()).printObjectivesToFile(referenceSetFileName);
    writeFilesWithTheSolutionsContributedByEachAlgorithm(outputDirectoryName,problem,nonDominatedSolutionArchive.getSolutionList());
  }
  experiment.setReferenceFrontFileNames(referenceFrontFileNames);
}