Program: 81574
Project: 81574
Buggy source:
@Override protected BufferedDataTable[] execute(BufferedDataTable[] inData,ExecutionContext exec) throws Exception {
  BufferedDataTable input=inData[0];
  Attribute treatmentAttribute=new InputTableAttribute(this.treatmentAttribute.getStringValue(),input);
  String libraryName=AbstractScreenTrafoModel.getAndValidateTreatment(reference);
  String referenceName=AbstractScreenTrafoModel.getAndValidateTreatment(library);
  List<Attribute> parameters=getParameterList(input);
  Map<String,List<DataRow>> groupedRows=AttributeUtils.splitRows(input,treatmentAttribute);
  List<DataRow> libraryRows=groupedRows.get(libraryName);
  List<DataRow> referenceRows=groupedRows.get(referenceName);
  int progress=parameters.size();
  BufTableUtils.updateProgress(exec,progress / 2,progress);
  BufferedDataContainer container=exec.createDataContainer(new DataTableSpec(getListSpec()));
  MutualInformation mutualinfo=new MutualInformation();
  mutualinfo.set_base(logbase.getDoubleValue());
  mutualinfo.set_method(method.getStringValue());
  DataCell[] cells=new DataCell[8];
  int p=0;
  for (  Attribute parameter : parameters) {
    Double[] x=getDataVec(libraryRows,parameter);
    Double[] y=getDataVec(referenceRows,parameter);
    mutualinfo.set_vectors(x,y);
    Double[] res=mutualinfo.calculate();
    if (binning.getIntValue() == 0) {
      mutualinfo.set_binning();
    }
 else {
      mutualinfo.set_binning(binning.getIntValue());
    }
    int[] bins=mutualinfo.get_binning();
    cells[0]=new StringCell(parameter.getName());
    cells[1]=new DoubleCell(res[0]);
    cells[2]=new DoubleCell(res[1]);
    cells[3]=new DoubleCell(res[2]);
    cells[4]=new IntCell(bins[0]);
    cells[5]=new IntCell(bins[1]);
    cells[6]=new DoubleCell(mutualinfo.get_logbase());
    cells[7]=new StringCell(mutualinfo.get_method());
    container.addRowToTable(new DefaultRow("String_Node_Str" + p,cells));
    BufTableUtils.updateProgress(exec,(progress + p++) / 2,progress);
    exec.checkCanceled();
  }
  container.close();
  return new BufferedDataTable[]{container.getTable()};
}

Fixed version (ground truth):
@Override protected BufferedDataTable[] execute(BufferedDataTable[] inData,ExecutionContext exec) throws Exception {
  BufferedDataTable input=inData[0];
  Attribute treatmentAttribute=new InputTableAttribute(this.treatmentAttribute.getStringValue(),input);
  String libraryName=AbstractScreenTrafoModel.getAndValidateTreatment(reference);
  String referenceName=AbstractScreenTrafoModel.getAndValidateTreatment(library);
  List<Attribute> parameters=getParameterList(input);
  Map<String,List<DataRow>> groupedRows=AttributeUtils.splitRows(input,treatmentAttribute);
  List<DataRow> libraryRows=groupedRows.get(libraryName);
  List<DataRow> referenceRows=groupedRows.get(referenceName);
  int progress=parameters.size();
  BufTableUtils.updateProgress(exec,progress / 2,progress);
  BufferedDataContainer container=exec.createDataContainer(new DataTableSpec(getListSpec()));
  MutualInformation mutualinfo=new MutualInformation();
  mutualinfo.set_base(logbase.getDoubleValue());
  mutualinfo.set_method(method.getStringValue());
  DataCell[] cells=new DataCell[8];
  int p=0;
  for (  Attribute parameter : parameters) {
    Double[] x=getDataVec(libraryRows,parameter);
    Double[] y=getDataVec(referenceRows,parameter);
    mutualinfo.set_vectors(x,y);
    if (binning.getIntValue() == 0) {
      mutualinfo.set_binning();
    }
 else {
      mutualinfo.set_binning(binning.getIntValue());
    }
    int[] bins=mutualinfo.get_binning();
    Double[] res=mutualinfo.calculate();
    cells[0]=new StringCell(parameter.getName());
    cells[1]=new DoubleCell(res[0]);
    cells[2]=new DoubleCell(res[1]);
    cells[3]=new DoubleCell(res[2]);
    cells[4]=new IntCell(bins[0]);
    cells[5]=new IntCell(bins[1]);
    cells[6]=new DoubleCell(mutualinfo.get_logbase());
    cells[7]=new StringCell(mutualinfo.get_method());
    container.addRowToTable(new DefaultRow("String_Node_Str" + p,cells));
    BufTableUtils.updateProgress(exec,(progress + p++) / 2,progress);
    exec.checkCanceled();
  }
  container.close();
  return new BufferedDataTable[]{container.getTable()};
}