Program: 125436
Project: 125436
Buggy source:
/** 
 * Instantiate the <code>Table</code> with the <code>compositeParent</code> as parent, with pre-configured styles and options.
 * @return
 */
public Table createTable(){
  if (this.table != null) {
    this.table.dispose();
  }
  this.table=new Table(compositeParent,checkTableStyles());
  tableViewer=new TableViewer(table){
    @Override public void add(    Object element){
      super.add(element);
    }
    @Override public void add(    Object[] elements){
      super.add(elements);
    }
    @Override public void insert(    Object element,    int position){
      super.insert(element,position);
    }
    @Override public void remove(    Object[] elements){
      super.remove(elements);
    }
    @Override public void replace(    Object element,    int index){
      super.replace(element,index);
      refreshTableEditorControls();
    }
    @Override public void refresh(){
      super.refresh();
    }
    @Override public void refresh(    boolean updateLabels){
      super.refresh(updateLabels);
    }
    @Override public void refresh(    Object element,    boolean updateLabels){
      super.refresh(element,updateLabels);
      refreshTableEditorControls();
    }
    @Override public void refresh(    Object element){
      if (table.isDisposed()) {
        return;
      }
      for (      TableItem item : table.getItems()) {
        if (item.isDisposed()) {
          return;
        }
      }
      super.refresh(element);
    }
    @Override protected void triggerEditorActivationEvent(    ColumnViewerEditorActivationEvent event){
      if (editorActivate) {
        super.triggerEditorActivationEvent(event);
      }
    }
    @Override protected void hookControl(    Control control){
      super.hookControl(control);
      table.addListener(SWT.SetData,new Listener(){
        @Override public void handleEvent(        Event event){
          TableItem item=(TableItem)event.item;
          int index=table.indexOf(item);
          if (index == -1) {
            return;
          }
          B element=getInputList().get(index);
          associate(element,item);
          updateItem(item,element);
          refreshTableEditorColumn(index);
        }
      }
);
    }
  }
;
  setTablePreferences();
  return table;
}

Fixed version (ground truth):
/** 
 * Instantiate the <code>Table</code> with the <code>compositeParent</code> as parent, with pre-configured styles and options.
 * @return
 */
public Table createTable(){
  if (this.table != null) {
    this.table.dispose();
  }
  this.table=new Table(compositeParent,checkTableStyles());
  tableViewer=new TableViewer(table){
    @Override protected void handleDispose(    DisposeEvent event){
      if (this.isCellEditorActive()) {
        CellEditor[] cellEditors=this.getCellEditors();
        for (int i=0; i < cellEditors.length; i++) {
          CellEditor cellEditor=cellEditors[i];
          if (cellEditor != null && cellEditor.isActivated() && cellEditor instanceof IShowInvisibleCellEditorMethods) {
            ((IShowInvisibleCellEditorMethods)cellEditor).fireApplyEditorValue();
          }
        }
      }
      super.handleDispose(event);
    }
    @Override public void add(    Object element){
      super.add(element);
    }
    @Override public void add(    Object[] elements){
      super.add(elements);
    }
    @Override public void insert(    Object element,    int position){
      super.insert(element,position);
    }
    @Override public void remove(    Object[] elements){
      super.remove(elements);
    }
    @Override public void replace(    Object element,    int index){
      super.replace(element,index);
      refreshTableEditorControls();
    }
    @Override public void refresh(){
      super.refresh();
    }
    @Override public void refresh(    boolean updateLabels){
      super.refresh(updateLabels);
    }
    @Override public void refresh(    Object element,    boolean updateLabels){
      super.refresh(element,updateLabels);
      refreshTableEditorControls();
    }
    @Override public void refresh(    Object element){
      if (table.isDisposed()) {
        return;
      }
      for (      TableItem item : table.getItems()) {
        if (item.isDisposed()) {
          return;
        }
      }
      super.refresh(element);
    }
    @Override protected void triggerEditorActivationEvent(    ColumnViewerEditorActivationEvent event){
      if (editorActivate) {
        super.triggerEditorActivationEvent(event);
      }
    }
    @Override protected void hookControl(    Control control){
      super.hookControl(control);
      table.addListener(SWT.SetData,new Listener(){
        @Override public void handleEvent(        Event event){
          TableItem item=(TableItem)event.item;
          int index=table.indexOf(item);
          if (index == -1) {
            return;
          }
          B element=getInputList().get(index);
          associate(element,item);
          updateItem(item,element);
          refreshTableEditorColumn(index);
        }
      }
);
    }
  }
;
  setTablePreferences();
  return table;
}