Program: 72383
Project: 72383
Buggy source:
/** 
 * Find some property lines in a file.
 * @param file The file that is going to be searched.
 * @param propertyLines The line that is going be be found.
 * @return A two-dimensional array with the length of the @param propertyLines increased by 1 and 2 columns. The first onerepresents the information written on the file after the one property line and before the next one. The second column represents the property lines with the same indentation as they were found on the file. The second column of the last line contains nothing but "", as there's no property left to be written.
 */
private static String[][] _findPropertyLines(ArrayList<String> file,String[] propertyLines){
  int numberOfLines=file.size();
  int numberOfProperties=propertyLines.length;
  String[][] result=new String[numberOfProperties + 1][2];
  int linesFound=0;
  String content="String_Node_Str";
  result[0][0]="String_Node_Str";
  for (int i=0; i < numberOfLines; i++) {
    content=file.get(i);
    if (linesFound < numberOfProperties) {
      if (content.contains(propertyLines[linesFound])) {
        String line=content.substring(0,content.length() - 2);
        line=line.substring(line.lastIndexOf("String_Node_Str") + 1);
        try {
          Double.valueOf(line);
          result[linesFound][1]=content.substring(0,content.indexOf(line));
          linesFound++;
          result[linesFound][0]="String_Node_Str";
        }
 catch (        Exception e) {
          if (!result[linesFound][0].equals("String_Node_Str")) {
            content="String_Node_Str" + content;
          }
          result[linesFound][0]=result[linesFound][0] + content;
        }
      }
 else {
        if (!result[linesFound][0].equals("String_Node_Str")) {
          content="String_Node_Str" + content;
        }
        result[linesFound][0]=result[linesFound][0] + content;
      }
    }
 else {
      if (!result[linesFound][0].equals("String_Node_Str")) {
        content="String_Node_Str" + content;
      }
      result[linesFound][0]=result[linesFound][0] + content;
    }
  }
  result[linesFound][1]="String_Node_Str";
  if (result[numberOfProperties][0] == null || result[numberOfProperties][0].equals("String_Node_Str")) {
    System.out.println("String_Node_Str");
    System.exit(0);
  }
  return result;
}

Fixed version (ground truth):
/** 
 * Find some property lines in a file.
 * @param file The file that is going to be searched.
 * @param propertyLines The line that is going be be found.
 * @return A two-dimensional array with the length of the @param propertyLines increased by 1 and 2 columns. The first onerepresents the information written on the file after the one property line and before the next one. The second column represents the property lines with the same indentation as they were found on the file. The second column of the last line contains nothing but "", as there's no property left to be written.
 */
private static String[][] _findPropertyLines(ArrayList<String> file,String[] propertyLines){
  int numberOfLines=file.size();
  int numberOfProperties=propertyLines.length;
  String[][] result=new String[numberOfProperties + 1][2];
  int linesFound=0;
  String content="String_Node_Str";
  result[0][0]="String_Node_Str";
  for (int i=0; i < numberOfLines; i++) {
    content=file.get(i);
    if (linesFound < numberOfProperties) {
      if (content.contains(propertyLines[linesFound])) {
        String line=content.substring(0,content.length() - 2);
        line=line.substring(line.lastIndexOf("String_Node_Str") + 1);
        try {
          result[linesFound][1]=content.substring(0,content.indexOf(line));
          linesFound++;
          result[linesFound][0]="String_Node_Str";
        }
 catch (        Exception e) {
          if (!result[linesFound][0].equals("String_Node_Str")) {
            content="String_Node_Str" + content;
          }
          result[linesFound][0]=result[linesFound][0] + content;
        }
      }
 else {
        if (!result[linesFound][0].equals("String_Node_Str")) {
          content="String_Node_Str" + content;
        }
        result[linesFound][0]=result[linesFound][0] + content;
      }
    }
 else {
      if (!result[linesFound][0].equals("String_Node_Str")) {
        content="String_Node_Str" + content;
      }
      result[linesFound][0]=result[linesFound][0] + content;
    }
  }
  result[linesFound][1]="String_Node_Str";
  if (result[numberOfProperties][0] == null || result[numberOfProperties][0].equals("String_Node_Str")) {
    System.out.println("String_Node_Str");
    System.exit(0);
  }
  return result;
}