Program: 107775
Project: 107775
Buggy source:
/** 
 * Updates the performance per class table
 * @param target variable
 */
private void updateOverview(String target){
  performancePerClassTable.setRedraw(false);
  for (  final TableItem i : performancePerClassTable.getItems()) {
    i.dispose();
  }
  performancePerClassTable.setRedraw(true);
  if (!originalRocCurves.containsKey(target)) {
    return;
  }
  List<String> values=new ArrayList<>(originalRocCurves.get(target).keySet());
  Collections.sort(values);
  List<Double> sensitivities=new ArrayList<Double>();
  List<Double> specificities=new ArrayList<Double>();
  List<Double> brierscores=new ArrayList<Double>();
  for (  String clazz : values) {
    ROCCurve c;
    if (isOutput) {
      c=rocCurves.get(target).get(clazz);
    }
 else {
      c=originalRocCurves.get(target).get(clazz);
    }
    TableItem item=new TableItem(performancePerClassTable,SWT.NONE);
    item.setText(0,clazz);
    item.setData("String_Node_Str",c.getSensitivity());
    item.setData("String_Node_Str",c.getSpecificity());
    item.setData("String_Node_Str",c.getBrierScore());
    sensitivities.add(c.getSensitivity());
    specificities.add(c.getSpecificity());
    brierscores.add(c.getBrierScore());
  }
  double[] min=new double[3];
  double[] avg=new double[3];
  double[] max=new double[3];
  for (int i=0; i < sensitivities.size(); i++) {
    double sensitivity=sensitivities.get(i);
    min[0]=min[0] == 0d ? sensitivity : Math.min(min[0],sensitivity);
    max[0]=Math.max(max[0],sensitivity);
    avg[0]+=sensitivity;
    double specificity=specificities.get(i);
    min[1]=min[1] == 0d ? specificity : Math.min(min[1],specificity);
    max[1]=Math.max(max[1],specificity);
    avg[1]+=specificity;
    double brierscore=brierscores.get(i);
    min[2]=min[2] == 0d ? brierscore : Math.min(min[2],brierscore);
    max[2]=Math.max(max[2],brierscore);
    avg[2]+=brierscore;
  }
  TableItem item=new TableItem(performancePerClassTable,SWT.NONE);
  item.setText(0,Resources.getMessage("String_Node_Str"));
  item.setData("String_Node_Str",min[0]);
  item.setData("String_Node_Str",min[1]);
  item.setData("String_Node_Str",min[2]);
  item=new TableItem(performancePerClassTable,SWT.NONE);
  item.setText(0,Resources.getMessage("String_Node_Str"));
  item.setData("String_Node_Str",avg[0] / values.size());
  item.setData("String_Node_Str",avg[1] / values.size());
  item.setData("String_Node_Str",avg[2] / values.size());
  item=new TableItem(performancePerClassTable,SWT.NONE);
  item.setText(0,Resources.getMessage("String_Node_Str"));
  item.setData("String_Node_Str",max[0]);
  item.setData("String_Node_Str",max[1]);
  item.setData("String_Node_Str",max[2]);
}

Fixed version (ground truth):
/** 
 * Updates the performance per class table
 * @param target variable
 */
private void updateOverview(String target){
  performanceTableSensitivitySpecificity.setRedraw(false);
  for (  final TableItem i : performanceTableSensitivitySpecificity.getItems()) {
    i.dispose();
  }
  performanceTableSensitivitySpecificity.setRedraw(true);
  if (!originalRocCurves.containsKey(target)) {
    return;
  }
  List<String> values=new ArrayList<>(originalRocCurves.get(target).keySet());
  Collections.sort(values);
  List<Double> sensitivities=new ArrayList<Double>();
  List<Double> specificities=new ArrayList<Double>();
  List<Double> brierscores=new ArrayList<Double>();
  for (  String clazz : values) {
    ROCCurve c;
    if (isOutput) {
      c=rocCurves.get(target).get(clazz);
    }
 else {
      c=originalRocCurves.get(target).get(clazz);
    }
    TableItem item=new TableItem(performanceTableSensitivitySpecificity,SWT.NONE);
    item.setText(0,clazz);
    item.setData("String_Node_Str",c.getSensitivity());
    item.setData("String_Node_Str",c.getSpecificity());
    item.setData("String_Node_Str",c.getBrierScore());
    sensitivities.add(c.getSensitivity());
    specificities.add(c.getSpecificity());
    brierscores.add(c.getBrierScore());
  }
  double[] min=new double[3];
  double[] avg=new double[3];
  double[] max=new double[3];
  for (int i=0; i < sensitivities.size(); i++) {
    double sensitivity=sensitivities.get(i);
    min[0]=min[0] == 0d ? sensitivity : Math.min(min[0],sensitivity);
    max[0]=Math.max(max[0],sensitivity);
    avg[0]+=sensitivity;
    double specificity=specificities.get(i);
    min[1]=min[1] == 0d ? specificity : Math.min(min[1],specificity);
    max[1]=Math.max(max[1],specificity);
    avg[1]+=specificity;
    double brierscore=brierscores.get(i);
    min[2]=min[2] == 0d ? brierscore : Math.min(min[2],brierscore);
    max[2]=Math.max(max[2],brierscore);
    avg[2]+=brierscore;
  }
  TableItem item=new TableItem(performanceTableSensitivitySpecificity,SWT.NONE);
  item.setText(0,Resources.getMessage("String_Node_Str"));
  item.setData("String_Node_Str",min[0]);
  item.setData("String_Node_Str",min[1]);
  item.setData("String_Node_Str",min[2]);
  item=new TableItem(performanceTableSensitivitySpecificity,SWT.NONE);
  item.setText(0,Resources.getMessage("String_Node_Str"));
  item.setData("String_Node_Str",avg[0] / values.size());
  item.setData("String_Node_Str",avg[1] / values.size());
  item.setData("String_Node_Str",avg[2] / values.size());
  item=new TableItem(performanceTableSensitivitySpecificity,SWT.NONE);
  item.setText(0,Resources.getMessage("String_Node_Str"));
  item.setData("String_Node_Str",max[0]);
  item.setData("String_Node_Str",max[1]);
  item.setData("String_Node_Str",max[2]);
}