Program: 64612
Project: 64612
Buggy source:
/** 
 * Runs of the AbYSS algorithm. as a result of the algorithm execution
 */
@Override public void run(){
  try {
    DoubleSolution solution;
    initialListSolution();
    int newSolutions=0;
    while (evaluations < maxEvaluations) {
      referenceSetUpdate(true);
      newSolutions=subSetGeneration();
      while (newSolutions > 0) {
        referenceSetUpdate(false);
        if (evaluations < maxEvaluations) {
          newSolutions=subSetGeneration();
        }
 else {
          newSolutions=0;
        }
      }
      if (evaluations < maxEvaluations) {
        solutionSet.clear();
        for (int i=0; i < refSet1.size(); i++) {
          solution=refSet1.get(i);
          marked.setAttribute(solution,false);
          solution=(DoubleSolution)improvementOperator.execute(solution);
          evaluations+=improvementOperator.getEvaluations();
          solutionSet.add(solution);
        }
        refSet1.clear();
        refSet2.clear();
        archive.computeDistance();
        Collections.sort(archive.getSolutionList(),crowdingDistanceComparator);
        int insert=solutionSetSize / 2;
        if (insert > archive.getSolutionList().size())         insert=archive.getSolutionList().size();
        if (insert > (solutionSetSize - solutionSet.size()))         insert=solutionSetSize - solutionSet.size();
        for (int i=0; i < insert; i++) {
          solution=archive.getSolutionList().get(i);
          marked.setAttribute(solution,false);
          solutionSet.add(solution);
        }
        while (solutionSet.size() < solutionSetSize) {
          solution=diversificationGeneration();
          if (problem instanceof ConstrainedProblem) {
            ((ConstrainedProblem)problem).evaluateConstraints(solution);
          }
          problem.evaluate(solution);
          evaluations++;
          solution=(DoubleSolution)improvementOperator.execute(solution);
          evaluations+=improvementOperator.getEvaluations();
          marked.setAttribute(solution,false);
          solutionSet.add(solution);
        }
      }
    }
  }
 catch (  Exception e) {
    e.printStackTrace();
  }
}

Fixed version (ground truth):
/** 
 * Runs of the AbYSS algorithm. as a result of the algorithm execution
 */
@Override public void run(){
  try {
    DoubleSolution solution;
    initialListSolution();
    int newSolutions=0;
    boolean exit=false;
    while ((evaluations < maxEvaluations) && !exit) {
      referenceSetUpdate(true);
      newSolutions=subSetGeneration();
      while ((newSolutions > 0) && !exit) {
        referenceSetUpdate(false);
        if (evaluations >= maxEvaluations) {
          exit=true;
        }
        if (!exit) {
          newSolutions=subSetGeneration();
        }
      }
      if (evaluations < maxEvaluations) {
        solutionSet.clear();
        for (int i=0; i < refSet1.size(); i++) {
          solution=refSet1.get(i);
          marked.setAttribute(solution,false);
          solution=(DoubleSolution)improvementOperator.execute(solution);
          evaluations+=improvementOperator.getEvaluations();
          solutionSet.add(solution);
        }
        refSet1.clear();
        refSet2.clear();
        archive.computeDistance();
        Collections.sort(archive.getSolutionList(),crowdingDistanceComparator);
        int insert=solutionSetSize / 2;
        if (insert > archive.getSolutionList().size())         insert=archive.getSolutionList().size();
        if (insert > (solutionSetSize - solutionSet.size()))         insert=solutionSetSize - solutionSet.size();
        for (int i=0; i < insert; i++) {
          solution=(DoubleSolution)archive.getSolutionList().get(i).copy();
          marked.setAttribute(solution,false);
          solutionSet.add(solution);
        }
        while (solutionSet.size() < solutionSetSize) {
          solution=diversificationGeneration();
          if (problem instanceof ConstrainedProblem) {
            ((ConstrainedProblem)problem).evaluateConstraints(solution);
          }
          problem.evaluate(solution);
          evaluations++;
          solution=(DoubleSolution)improvementOperator.execute(solution);
          evaluations+=improvementOperator.getEvaluations();
          marked.setAttribute(solution,false);
          solutionSet.add(solution);
        }
      }
    }
  }
 catch (  Exception e) {
    e.printStackTrace();
  }
}