Program: 144109
Project: 144109
Buggy source:
public static DomainData parseLabeledDataFromCSVFile(File file,String separator,double[] classificationThresholds){
  BufferedReader br=null;
  String line;
  List<boolean[]> classifiersOutputsList=new ArrayList<>();
  List<Boolean> trueLabelsList=new ArrayList<>();
  try {
    br=new BufferedReader(new FileReader(file));
    br.readLine();
    while ((line=br.readLine()) != null) {
      String[] outputs=line.split(separator);
      trueLabelsList.add(!outputs[0].equals("String_Node_Str"));
      boolean[] booleanOutputs=new boolean[outputs.length - 1];
      for (int i=1; i < outputs.length; i++) {
        if (classificationThresholds == null) {
          booleanOutputs[i - 1]=Double.parseDouble(outputs[i]) >= 0.5;
        }
 else         if (classificationThresholds.length == 1) {
          booleanOutputs[i - 1]=Double.parseDouble(outputs[i]) >= classificationThresholds[0];
        }
 else {
          booleanOutputs[i - 1]=Double.parseDouble(outputs[i]) >= classificationThresholds[i - 1];
        }
      }
      classifiersOutputsList.add(booleanOutputs);
    }
  }
 catch (  IOException e) {
    e.printStackTrace();
  }
 finally {
    if (br != null) {
      try {
        br.close();
      }
 catch (      IOException e) {
        e.printStackTrace();
      }
    }
  }
  boolean[] trueLabels=new boolean[trueLabelsList.size()];
  for (int i=0; i < trueLabels.length; i++)   trueLabels[i]=trueLabelsList.get(i);
  return new DomainData(classifiersOutputsList.toArray(new boolean[classifiersOutputsList.size()][]),trueLabels);
}

Fixed version (ground truth):
public static DomainData parseLabeledDataFromCSVFile(File file,String separator,double[] classificationThresholds,int subSampling){
  BufferedReader br=null;
  String line;
  List<boolean[]> classifiersOutputsList=new ArrayList<>();
  List<Boolean> trueLabelsList=new ArrayList<>();
  try {
    br=new BufferedReader(new FileReader(file));
    br.readLine();
    int numberOfSamplesRead=0;
    while ((line=br.readLine()) != null) {
      if (numberOfSamplesRead % subSampling == 0) {
        String[] outputs=line.split(separator);
        trueLabelsList.add(!outputs[0].equals("String_Node_Str"));
        boolean[] booleanOutputs=new boolean[outputs.length - 1];
        for (int i=1; i < outputs.length; i++) {
          if (classificationThresholds == null) {
            booleanOutputs[i - 1]=Double.parseDouble(outputs[i]) >= 0.5;
          }
 else           if (classificationThresholds.length == 1) {
            booleanOutputs[i - 1]=Double.parseDouble(outputs[i]) >= classificationThresholds[0];
          }
 else {
            booleanOutputs[i - 1]=Double.parseDouble(outputs[i]) >= classificationThresholds[i - 1];
          }
        }
        classifiersOutputsList.add(booleanOutputs);
      }
      numberOfSamplesRead++;
    }
  }
 catch (  IOException e) {
    e.printStackTrace();
  }
 finally {
    if (br != null) {
      try {
        br.close();
      }
 catch (      IOException e) {
        e.printStackTrace();
      }
    }
  }
  boolean[] trueLabels=new boolean[trueLabelsList.size()];
  for (int i=0; i < trueLabels.length; i++)   trueLabels[i]=trueLabelsList.get(i);
  return new DomainData(classifiersOutputsList.toArray(new boolean[classifiersOutputsList.size()][]),trueLabels);
}