Program: 56694
Project: 56694
Buggy source:
@Override public void pageChanged(PageChangedEvent event){
  if (event.getSelectedPage() == this) {
    FishersExactTestWizard wizard=(FishersExactTestWizard)getWizard();
    DataCellInfo info1=wizard.getInfo1();
    DataCellInfo info2=wizard.getInfo2();
    IDataClassifier classifier1=wizard.getCell1Classifier();
    IDataClassifier classifier2=wizard.getCell2Classifier();
    IDMappingManager mappingManager=IDMappingManagerRegistry.get().getIDMappingManager(info1.columnPerspective.getIdType());
    IIDTypeMapper<Object,Object> mapper=mappingManager.getIDTypeMapper(info1.columnPerspective.getIdType(),info2.columnPerspective.getIdType());
    contingencyTable=new int[2][2];
    for (    int cell1ColumnID : info1.columnPerspective.getVirtualArray()) {
      int index1=getContingencyIndex(info1.dataDomain,info1.columnPerspective.getIdType(),cell1ColumnID,info1.rowIDType,info1.rowID,classifier1);
      if (index1 == -1)       continue;
      Set<Object> cell2ColumnIDs=mapper.apply(cell1ColumnID);
      if (cell2ColumnIDs != null && !cell2ColumnIDs.isEmpty()) {
        Integer cell2ColumnID=(Integer)cell2ColumnIDs.iterator().next();
        if (info2.columnPerspective.getVirtualArray().contains(cell2ColumnID)) {
          int index2=getContingencyIndex(info2.dataDomain,info2.columnPerspective.getIdType(),cell2ColumnID,info2.rowIDType,info2.rowID,classifier2);
          if (index2 == -1)           continue;
          contingencyTable[index1][index2]++;
        }
      }
    }
    double[] result=FishersExactTest.fishersExactTest(contingencyTable[0][0],contingencyTable[0][1],contingencyTable[1][0],contingencyTable[1][1]);
    twoSidedPValueLabel.setText(String.format(Locale.ENGLISH,"String_Node_Str",result[0],result[0]));
    leftTailPValueLabel.setText(String.format(Locale.ENGLISH,"String_Node_Str",result[1]));
    rightTailPValueLabel.setText(String.format(Locale.ENGLISH,"String_Node_Str",result[2]));
    visited=true;
    columnHeaderProvider.setClassifier(classifier1);
    rowHeaderProvider.setClassifier(classifier2);
    buildTable(contingencyTableGroup);
    table.refresh();
    getShell().layout(true,true);
    getShell().pack();
    getWizard().getContainer().updateButtons();
  }
}

Fixed version (ground truth):
@Override public void pageChanged(PageChangedEvent event){
  if (event.getSelectedPage() == this) {
    FishersExactTestWizard wizard=(FishersExactTestWizard)getWizard();
    DataCellInfo info1=wizard.getInfo1();
    DataCellInfo info2=wizard.getInfo2();
    IDataClassifier classifier1=wizard.getCell1Classifier();
    IDataClassifier classifier2=wizard.getCell2Classifier();
    IDMappingManager mappingManager=IDMappingManagerRegistry.get().getIDMappingManager(info1.columnPerspective.getIdType());
    IIDTypeMapper<Object,Object> mapper=mappingManager.getIDTypeMapper(info1.columnPerspective.getIdType(),info2.columnPerspective.getIdType());
    contingencyTable=new int[2][2];
    for (    int cell1ColumnID : info1.columnPerspective.getVirtualArray()) {
      int index1=getContingencyIndex(info1.dataDomain,info1.columnPerspective.getIdType(),cell1ColumnID,info1.rowIDType,info1.rowID,classifier1);
      if (index1 == -1)       continue;
      Set<Object> cell2ColumnIDs=mapper.apply(cell1ColumnID);
      if (cell2ColumnIDs != null && !cell2ColumnIDs.isEmpty()) {
        Integer cell2ColumnID=(Integer)cell2ColumnIDs.iterator().next();
        if (info2.columnPerspective.getVirtualArray().contains(cell2ColumnID)) {
          int index2=getContingencyIndex(info2.dataDomain,info2.columnPerspective.getIdType(),cell2ColumnID,info2.rowIDType,info2.rowID,classifier2);
          if (index2 == -1)           continue;
          contingencyTable[index1][index2]++;
        }
      }
    }
    result=FishersExactTest.fishersExactTest(contingencyTable[0][0],contingencyTable[0][1],contingencyTable[1][0],contingencyTable[1][1]);
    twoSidedPValueLabel.setText(String.format(Locale.ENGLISH,"String_Node_Str",result[0]));
    leftTailPValueLabel.setText(String.format(Locale.ENGLISH,"String_Node_Str",result[1]));
    rightTailPValueLabel.setText(String.format(Locale.ENGLISH,"String_Node_Str",result[2]));
    visited=true;
    columnHeaderProvider.setClassifier(classifier1);
    rowHeaderProvider.setClassifier(classifier2);
    buildTable(contingencyTableGroup);
    table.refresh();
    getShell().layout(true,true);
    getShell().pack();
    getWizard().getContainer().updateButtons();
  }
}