Program: 108759
Project: 108759
Buggy source:
@Override public void update(final ModelEvent event){
  super.update(event);
  if (event.part == ModelPart.INPUT) {
    if (event.data == null) {
      reset();
      return;
    }
    DataDefinition definition=getDefinition();
    if (definition == null) {
      reset();
      return;
    }
    DataHandle handle=getHandle();
    if (handle == null) {
      reset();
      return;
    }
    table.setResearchSubset(model.getInputConfig().getResearchSubset());
    table.setGroups(null);
    table.setData(handle);
    table.getHeaderImages().clear();
    for (int i=0; i < handle.getNumColumns(); i++) {
      updateHeaderImage(i,definition.getAttributeType(handle.getAttributeName(i)));
    }
    table.setEnabled(true);
    table.redraw();
  }
 else   if (event.part == ModelPart.RESEARCH_SUBSET) {
    table.setResearchSubset((RowSet)event.data);
    table.redraw();
  }
 else   if (event.part == ModelPart.VIEW_CONFIG || event.part == ModelPart.RESULT) {
    DataHandle handle=getHandle();
    if (handle == null) {
      reset();
      return;
    }
    table.setData(handle);
    table.setGroups(null);
    table.setResearchSubset(model.getInputConfig().getResearchSubset());
    table.redraw();
  }
 else   if (event.part == ModelPart.ATTRIBUTE_TYPE) {
    if (model != null) {
      DataHandle handle=getHandle();
      if (handle != null) {
        final String attr=(String)event.data;
        DataDefinition definition=getDefinition();
        final int index=handle.getColumnIndexOf(attr);
        updateHeaderImage(index,definition.getAttributeType(attr));
        table.setEnabled(true);
        table.redraw();
      }
    }
  }
}

Fixed version (ground truth):
@Override public void update(final ModelEvent event){
  super.update(event);
  if (event.part == ModelPart.INPUT) {
    if (event.data == null) {
      reset();
      return;
    }
    DataDefinition definition=getDefinition();
    if (definition == null) {
      reset();
      return;
    }
    DataHandle handle=getHandle();
    if (handle == null) {
      reset();
      return;
    }
    table.setResearchSubset(model.getInputConfig().getResearchSubset());
    table.setGroups(null);
    table.setData(handle);
    table.getHeaderImages().clear();
    for (int i=0; i < handle.getNumColumns(); i++) {
      updateHeaderImage(i,definition.getAttributeType(handle.getAttributeName(i)));
    }
    table.setEnabled(true);
    table.redraw();
    this.enableSorting();
  }
 else   if (event.part == ModelPart.RESEARCH_SUBSET) {
    table.setResearchSubset((RowSet)event.data);
    table.redraw();
  }
 else   if (event.part == ModelPart.VIEW_CONFIG || event.part == ModelPart.RESULT) {
    DataHandle handle=getHandle();
    if (handle == null) {
      reset();
      return;
    }
    table.setData(handle);
    table.setGroups(null);
    table.setResearchSubset(model.getInputConfig().getResearchSubset());
    table.redraw();
  }
 else   if (event.part == ModelPart.ATTRIBUTE_TYPE) {
    if (model != null) {
      DataHandle handle=getHandle();
      if (handle != null) {
        final String attr=(String)event.data;
        DataDefinition definition=getDefinition();
        final int index=handle.getColumnIndexOf(attr);
        updateHeaderImage(index,definition.getAttributeType(attr));
        table.setEnabled(true);
        table.redraw();
      }
    }
  }
}