Program: 108336
Project: 108336
Buggy source:
/** 
 * Updates the list
 * @param result
 * @param filter
 */
private void update(final ARXResult result,final ModelNodeFilter filter){
  if (result == null || result.getLattice() == null)   return;
  if (filter == null)   return;
  controller.getResources().getDisplay().asyncExec(new Runnable(){
    @Override public void run(){
      table.setRedraw(false);
      SWTUtil.enable(table);
      for (      final TableItem i : table.getItems()) {
        i.dispose();
      }
      list.clear();
      final ARXLattice l=result.getLattice();
      for (      final ARXNode[] level : l.getLevels()) {
        for (        final ARXNode node : level) {
          if (filter.isAllowed(result.getLattice(),node)) {
            list.add(node);
          }
        }
      }
      Collections.sort(list,new Comparator<ARXNode>(){
        @Override public int compare(        final ARXNode arg0,        final ARXNode arg1){
          return arg0.getMaximumInformationLoss().compareTo(arg1.getMaximumInformationLoss());
        }
      }
);
      if (list.size() > model.getMaxNodesInViewer()) {
        list.clear();
      }
      if (listener != null) {
        table.removeListener(SWT.SetData,listener);
      }
      listener=new Listener(){
        @Override public void handleEvent(        final Event event){
          final TableItem item=(TableItem)event.item;
          final int index=table.indexOf(item);
          createItem(item,index);
        }
      }
;
      table.addListener(SWT.SetData,listener);
      table.setItemCount(list.size());
      table.setRedraw(true);
    }
  }
);
}

Fixed version (ground truth):
/** 
 * Updates the list
 * @param result
 * @param filter
 */
private void update(final ARXResult result,final ModelNodeFilter filter){
  if (result == null || result.getLattice() == null)   return;
  if (filter == null)   return;
  controller.getResources().getDisplay().asyncExec(new Runnable(){
    @Override public void run(){
      table.setRedraw(false);
      SWTUtil.enable(table);
      for (      final TableItem i : table.getItems()) {
        i.dispose();
      }
      list.clear();
      final ARXLattice l=result.getLattice();
      for (      final ARXNode[] level : l.getLevels()) {
        for (        final ARXNode node : level) {
          if (filter.isAllowed(result.getLattice(),node)) {
            list.add(node);
          }
        }
      }
      Collections.sort(list,new Comparator<ARXNode>(){
        @Override public int compare(        final ARXNode arg0,        final ARXNode arg1){
          return arg0.getMaximumInformationLoss().compareTo(arg1.getMaximumInformationLoss());
        }
      }
);
      if (list.size() > model.getMaxNodesInViewer()) {
        list.clear();
      }
      if (listener != null) {
        table.removeListener(SWT.SetData,listener);
      }
      listener=new Listener(){
        @Override public void handleEvent(        final Event event){
          final TableItem item=(TableItem)event.item;
          final int index=table.indexOf(item);
          createItem(item,index);
        }
      }
;
      table.addListener(SWT.SetData,listener);
      table.setItemCount(list.size());
      TableColumn[] colums=table.getColumns();
      for (      TableColumn tableColumn : colums) {
        tableColumn.setWidth(120);
      }
      table.setRedraw(true);
    }
  }
);
}