Program: 108266
Project: 108266
Buggy source:
/** 
 * Contructor
 * @param parent
 * @param controller
 */
public ViewList(final Composite parent,final Controller controller){
  super(parent,controller);
  table=new DynamicTable(parent,SWT.SINGLE | SWT.VIRTUAL | SWT.BORDER| SWT.V_SCROLL| SWT.FULL_SELECTION);
  table.setLayoutData(SWTUtil.createFillGridData());
  table.setHeaderVisible(true);
  table.addSelectionListener(new SelectionAdapter(){
    @Override public void widgetSelected(    SelectionEvent arg0){
      ARXNode node=list.get(table.getSelectionIndex());
      ViewList.this.actionSelectNode(node);
    }
  }
);
  table.addMouseListener(new MouseAdapter(){
    @Override public void mouseUp(    MouseEvent arg0){
      if (arg0.button == 3) {
        if (getSelectedNode() != null) {
          Point display=table.toDisplay(arg0.x,arg0.y);
          getModel().setSelectedNode(getSelectedNode());
          controller.update(new ModelEvent(ViewList.this,ModelPart.SELECTED_NODE,getSelectedNode()));
          actionShowMenu(display.x,display.y);
        }
      }
    }
  }
);
  final DynamicTableColumn column0=new DynamicTableColumn(table,SWT.LEFT);
  column0.setText("String_Node_Str");
  column0.setWidth("String_Node_Str");
  final DynamicTableColumn column1=new DynamicTableColumn(table,SWT.LEFT);
  column1.setText(Resources.getMessage("String_Node_Str"));
  column1.setWidth("String_Node_Str","String_Node_Str");
  final DynamicTableColumn column4=new DynamicTableColumn(table,SWT.LEFT);
  column4.setText(Resources.getMessage("String_Node_Str"));
  column4.setWidth("String_Node_Str","String_Node_Str");
  final DynamicTableColumn column2=new DynamicTableColumn(table,SWT.LEFT);
  column2.setText(Resources.getMessage("String_Node_Str"));
  column2.setWidth("String_Node_Str","String_Node_Str");
  final DynamicTableColumn column3=new DynamicTableColumn(table,SWT.LEFT);
  column3.setText(Resources.getMessage("String_Node_Str"));
  column3.setWidth("String_Node_Str","String_Node_Str");
  table.setItemCount(0);
  column0.pack();
  column1.pack();
  column2.pack();
  column3.pack();
  column4.pack();
  Listener tableListener=new Listener(){
    private TableItem previousHighlighted=null;
    public void handleEvent(    Event event){
      if (previousHighlighted != null) {
        if (!previousHighlighted.isDisposed()) {
          previousHighlighted.setBackground(background);
        }
      }
      TableItem item=table.getItem(new Point(event.x,event.y));
      if (item != null) {
        item.setBackground(GUIHelper.COLOR_GRAY);
        previousHighlighted=item;
        ARXNode node=(ARXNode)item.getData();
        if (node != null) {
          table.redraw();
          table.setToolTipText(getTooltipDecorator().decorate(node));
        }
      }
    }
  }
;
  table.addListener(SWT.MouseMove,tableListener);
  table.addListener(SWT.MouseExit,tableListener);
}

Fixed version (ground truth):
/** 
 * Contructor
 * @param parent
 * @param controller
 */
public ViewList(final Composite parent,final Controller controller){
  super(parent,controller);
  table=new DynamicTable(parent,SWT.SINGLE | SWT.VIRTUAL | SWT.BORDER| SWT.V_SCROLL| SWT.FULL_SELECTION);
  table.setLayoutData(SWTUtil.createFillGridData());
  table.setHeaderVisible(true);
  table.addSelectionListener(new SelectionAdapter(){
    @Override public void widgetSelected(    SelectionEvent arg0){
      ARXNode node=list.get(table.getSelectionIndex());
      ViewList.this.actionSelectNode(node);
    }
  }
);
  table.addMouseListener(new MouseAdapter(){
    @Override public void mouseUp(    MouseEvent arg0){
      if (arg0.button == 3) {
        if (getSelectedNode() != null) {
          Point display=table.toDisplay(arg0.x,arg0.y);
          getModel().setSelectedNode(getSelectedNode());
          controller.update(new ModelEvent(ViewList.this,ModelPart.SELECTED_NODE,getSelectedNode()));
          actionShowMenu(display.x,display.y);
        }
      }
    }
  }
);
  final DynamicTableColumn column0=new DynamicTableColumn(table,SWT.LEFT);
  column0.setText("String_Node_Str");
  column0.setWidth("String_Node_Str");
  final DynamicTableColumn column1=new DynamicTableColumn(table,SWT.LEFT);
  column1.setText(Resources.getMessage("String_Node_Str"));
  column1.setWidth("String_Node_Str","String_Node_Str");
  final DynamicTableColumn column4=new DynamicTableColumn(table,SWT.LEFT);
  column4.setText(Resources.getMessage("String_Node_Str"));
  column4.setWidth("String_Node_Str","String_Node_Str");
  final DynamicTableColumn column2=new DynamicTableColumn(table,SWT.LEFT);
  column2.setText(Resources.getMessage("String_Node_Str"));
  column2.setWidth("String_Node_Str","String_Node_Str");
  final DynamicTableColumn column3=new DynamicTableColumn(table,SWT.LEFT);
  column3.setText(Resources.getMessage("String_Node_Str"));
  column3.setWidth("String_Node_Str","String_Node_Str");
  table.setItemCount(0);
  column0.pack();
  column1.pack();
  column2.pack();
  column3.pack();
  column4.pack();
  Listener tableListener=new Listener(){
    private TableItem previousHighlighted=null;
    public void handleEvent(    Event event){
      if (previousHighlighted != null) {
        if (!previousHighlighted.isDisposed()) {
          previousHighlighted.setBackground(background);
        }
      }
      TableItem item=table.getItem(new Point(event.x,event.y));
      if (item != null) {
        item.setBackground(GUIHelper.COLOR_GRAY);
        previousHighlighted=item;
        ARXNode node=(ARXNode)item.getData();
        if (node != null) {
          table.redraw();
          table.setToolTipText(getTooltipDecorator().decorate(node));
        }
      }
    }
  }
;
  table.addListener(SWT.MouseMove,tableListener);
  table.addListener(SWT.MouseExit,tableListener);
  table.addListener(SWT.EraseItem,new Listener(){
    @Override public void handleEvent(    Event event){
      event.gc.setBackground(((TableItem)event.item).getBackground(event.index));
      event.gc.fillRectangle(event.getBounds());
    }
  }
);
}