Program: 54540
Project: 54540
Buggy source:
/** 
 * Used to record (runAsync) split points of a program.
 * @param jprogram
 * @param workDir
 * @param permutationId
 * @param logger
 * @return The file that the dependencies are recorded in
 */
public File recordSplitPoints(JProgram jprogram,File workDir,int permutationId,TreeLogger logger){
  logger=logger.branch(TreeLogger.INFO,"String_Node_Str");
  File splitPointsFile=new File(workDir,"String_Node_Str" + Integer.toString(permutationId) + "String_Node_Str");
  try {
    stream=new FileOutputStream(splitPointsFile,true);
    writer=new OutputStreamWriter(new GZIPOutputStream(stream),"String_Node_Str");
    splitPointsFile.getParentFile().mkdirs();
    pw=new PrintWriter(writer);
    htmlOut=new HtmlTextOutput(pw,false);
    String curLine="String_Node_Str";
    htmlOut.printRaw(curLine);
    htmlOut.newline();
    curLine="String_Node_Str";
    htmlOut.printRaw(curLine);
    htmlOut.newline();
    htmlOut.indentIn();
    htmlOut.indentIn();
    Map<Integer,String> splitPointMap=jprogram.getSplitPointMap();
    if (splitPointMap.size() > 0) {
      curLine="String_Node_Str";
      htmlOut.printRaw(curLine);
      htmlOut.newline();
      htmlOut.indentIn();
      htmlOut.indentIn();
      for (      Integer splitPointCount : splitPointMap.keySet()) {
        curLine="String_Node_Str" + splitPointCount + "String_Node_Str"+ splitPointMap.get(splitPointCount)+ "String_Node_Str";
        htmlOut.printRaw(curLine);
        htmlOut.newline();
      }
      htmlOut.indentOut();
      htmlOut.indentOut();
      curLine="String_Node_Str";
      htmlOut.printRaw(curLine);
      htmlOut.newline();
    }
    htmlOut.indentOut();
    htmlOut.indentOut();
    curLine="String_Node_Str";
    htmlOut.printRaw(curLine);
    htmlOut.newline();
    Utility.close(writer);
    pw.close();
    logger.log(TreeLogger.INFO,"String_Node_Str");
  }
 catch (  Throwable e) {
    logger.log(TreeLogger.ERROR,"String_Node_Str",e);
  }
  return splitPointsFile;
}

Fixed version (ground truth):
/** 
 * Used to record (runAsync) split points of a program.
 * @param jprogram
 * @param workDir
 * @param permutationId
 * @param logger
 * @return The file that the dependencies are recorded in
 */
public File recordSplitPoints(JProgram jprogram,File workDir,int permutationId,TreeLogger logger){
  logger=logger.branch(TreeLogger.INFO,"String_Node_Str");
  File splitPointsFile=new File(workDir,"String_Node_Str" + Integer.toString(permutationId) + "String_Node_Str");
  try {
    splitPointsFile.getParentFile().mkdirs();
    stream=new FileOutputStream(splitPointsFile,true);
    writer=new OutputStreamWriter(new GZIPOutputStream(stream),"String_Node_Str");
    pw=new PrintWriter(writer);
    htmlOut=new HtmlTextOutput(pw,false);
    String curLine="String_Node_Str";
    htmlOut.printRaw(curLine);
    htmlOut.newline();
    curLine="String_Node_Str";
    htmlOut.printRaw(curLine);
    htmlOut.newline();
    htmlOut.indentIn();
    htmlOut.indentIn();
    Map<Integer,String> splitPointMap=jprogram.getSplitPointMap();
    if (splitPointMap.size() > 0) {
      curLine="String_Node_Str";
      htmlOut.printRaw(curLine);
      htmlOut.newline();
      htmlOut.indentIn();
      htmlOut.indentIn();
      for (      Map.Entry<Integer,String> entry : splitPointMap.entrySet()) {
        Integer splitPointCount=entry.getKey();
        curLine="String_Node_Str" + splitPointCount + "String_Node_Str"+ entry.getValue()+ "String_Node_Str";
        htmlOut.printRaw(curLine);
        htmlOut.newline();
      }
      htmlOut.indentOut();
      htmlOut.indentOut();
      curLine="String_Node_Str";
      htmlOut.printRaw(curLine);
      htmlOut.newline();
    }
    htmlOut.indentOut();
    htmlOut.indentOut();
    curLine="String_Node_Str";
    htmlOut.printRaw(curLine);
    htmlOut.newline();
    Utility.close(writer);
    pw.close();
    logger.log(TreeLogger.INFO,"String_Node_Str");
  }
 catch (  Throwable e) {
    logger.log(TreeLogger.ERROR,"String_Node_Str",e);
  }
  return splitPointsFile;
}