Program: 124183
Project: 124183
Buggy source:
/** 
 * DOC amaumont Comment method "addTableForColumnsListeners".
 */
private void addTablesListeners(){
  tableViewerCreatorForColumns.addCellValueModifiedListener(new ITableCellValueModifiedListener(){
    public void cellValueModified(    TableCellValueModifiedEvent e){
      unselectAllEntriesIfErrorDetected(e);
    }
  }
);
  abstractDataMapTable.getTableColumnsEntriesModel().addAfterOperationListListener(new IListenableListListener<FilterTableEntry>(){
    public void handleEvent(    ListenableListEvent<FilterTableEntry> event){
      mapperManager.getUiManager().refreshSqlExpression();
    }
  }
);
  final TableViewer tableViewerForEntries=tableViewerCreatorForColumns.getTableViewer();
  tableViewerForEntries.addSelectionChangedListener(new ISelectionChangedListener(){
    public void selectionChanged(    SelectionChangedEvent event){
      int[] selectionIndices=tableViewerForEntries.getTable().getSelectionIndices();
      if (selectionIndices.length > 0) {
        selectThisDataMapTableView();
        onSelectedEntries(event.getSelection(),selectionIndices);
      }
    }
  }
);
  tableForEntries.addListener(SWT.DragDetect,new Listener(){
    public void handleEvent(    Event event){
      onSelectedEntries(tableViewerForEntries.getSelection(),tableViewerForEntries.getTable().getSelectionIndices());
    }
  }
);
  tableViewerCreatorForColumns.getSelectionHelper().addAfterSelectionListener(new ILineSelectionListener(){
    public void handle(    LineSelectionEvent e){
      if (forceExecuteSelectionEvent) {
        forceExecuteSelectionEvent=false;
        onSelectedEntries(tableViewerForEntries.getSelection(),tableViewerForEntries.getTable().getSelectionIndices());
      }
    }
  }
);
  tableForEntries.addListener(SWT.KeyDown,new Listener(){
    public void handleEvent(    Event event){
      processEnterKeyDown(tableViewerCreatorForColumns,event);
    }
  }
);
  abstractDataMapTable.getTableColumnsEntriesModel().addModifiedBeanListener(new IModifiedBeanListener<IColumnEntry>(){
    public void handleEvent(    ModifiedBeanEvent<IColumnEntry> event){
      TableViewerCreator tableViewerCreator=tableViewerCreatorForColumns;
      ITableEntry tableEntry=event.bean;
      parseExpressionIfNeeded(event,tableViewerCreator,tableEntry);
      mapperManager.getUiManager().refreshSqlExpression();
    }
  }
);
  if (abstractDataMapTable instanceof OutputTable) {
    OutputTable outputTable=(OutputTable)abstractDataMapTable;
    outputTable.getTableFiltersEntriesModel().addAfterOperationListListener(new IListenableListListener<FilterTableEntry>(){
      public void handleEvent(      ListenableListEvent<FilterTableEntry> event){
        resizeAtExpandedSize();
        mapperManager.getUiManager().refreshSqlExpression();
      }
    }
);
    outputTable.getTableFiltersEntriesModel().addModifiedBeanListener(new IModifiedBeanListener<FilterTableEntry>(){
      public void handleEvent(      ModifiedBeanEvent<FilterTableEntry> event){
        TableViewerCreator tableViewerCreator=tableViewerCreatorForFilters;
        ITableEntry tableEntry=event.bean;
        parseExpressionIfNeeded(event,tableViewerCreator,tableEntry);
        mapperManager.getUiManager().refreshSqlExpression();
      }
    }
);
  }
}

Fixed version (ground truth):
/** 
 * DOC amaumont Comment method "addTableForColumnsListeners".
 */
private void addTablesListeners(){
  tableViewerCreatorForColumns.addCellValueModifiedListener(new ITableCellValueModifiedListener(){
    public void cellValueModified(    TableCellValueModifiedEvent e){
      unselectAllEntriesIfErrorDetected(e);
    }
  }
);
  abstractDataMapTable.getTableColumnsEntriesModel().addAfterOperationListListener(new IListenableListListener<FilterTableEntry>(){
    public void handleEvent(    ListenableListEvent<FilterTableEntry> event){
      mapperManager.getUiManager().refreshSqlExpression();
    }
  }
);
  final TableViewer tableViewerForEntries=tableViewerCreatorForColumns.getTableViewer();
  tableViewerForEntries.addSelectionChangedListener(new ISelectionChangedListener(){
    public void selectionChanged(    SelectionChangedEvent event){
      int[] selectionIndices=tableViewerForEntries.getTable().getSelectionIndices();
      if (selectionIndices.length > 0) {
        selectThisDataMapTableView();
        onSelectedEntries(event.getSelection(),selectionIndices);
        MetadataTableEditorView metadataTableEditorView=null;
        if (getZone() == Zone.INPUTS) {
          metadataTableEditorView=mapperManager.getUiManager().getInputMetaEditorView();
        }
 else         if (getZone() == Zone.OUTPUTS) {
          metadataTableEditorView=mapperManager.getUiManager().getOutputMetaEditorView();
        }
        if (metadataTableEditorView != null) {
          metadataTableEditorView.getTableViewerCreator().refresh();
        }
      }
    }
  }
);
  tableForEntries.addListener(SWT.DragDetect,new Listener(){
    public void handleEvent(    Event event){
      onSelectedEntries(tableViewerForEntries.getSelection(),tableViewerForEntries.getTable().getSelectionIndices());
    }
  }
);
  tableViewerCreatorForColumns.getSelectionHelper().addAfterSelectionListener(new ILineSelectionListener(){
    public void handle(    LineSelectionEvent e){
      if (forceExecuteSelectionEvent) {
        forceExecuteSelectionEvent=false;
        onSelectedEntries(tableViewerForEntries.getSelection(),tableViewerForEntries.getTable().getSelectionIndices());
      }
    }
  }
);
  tableForEntries.addListener(SWT.KeyDown,new Listener(){
    public void handleEvent(    Event event){
      processEnterKeyDown(tableViewerCreatorForColumns,event);
    }
  }
);
  abstractDataMapTable.getTableColumnsEntriesModel().addModifiedBeanListener(new IModifiedBeanListener<IColumnEntry>(){
    public void handleEvent(    ModifiedBeanEvent<IColumnEntry> event){
      TableViewerCreator tableViewerCreator=tableViewerCreatorForColumns;
      ITableEntry tableEntry=event.bean;
      parseExpressionIfNeeded(event,tableViewerCreator,tableEntry);
      mapperManager.getUiManager().refreshSqlExpression();
    }
  }
);
  if (abstractDataMapTable instanceof OutputTable) {
    OutputTable outputTable=(OutputTable)abstractDataMapTable;
    outputTable.getTableFiltersEntriesModel().addAfterOperationListListener(new IListenableListListener<FilterTableEntry>(){
      public void handleEvent(      ListenableListEvent<FilterTableEntry> event){
        resizeAtExpandedSize();
        mapperManager.getUiManager().refreshSqlExpression();
      }
    }
);
    outputTable.getTableFiltersEntriesModel().addModifiedBeanListener(new IModifiedBeanListener<FilterTableEntry>(){
      public void handleEvent(      ModifiedBeanEvent<FilterTableEntry> event){
        TableViewerCreator tableViewerCreator=tableViewerCreatorForFilters;
        ITableEntry tableEntry=event.bean;
        parseExpressionIfNeeded(event,tableViewerCreator,tableEntry);
        mapperManager.getUiManager().refreshSqlExpression();
      }
    }
);
  }
}