Program: 121834
Project: 121834
Buggy source:
@Override protected RemovePushButton createRemovePushButton(){
  return new RemovePushButtonForExtendedTable(toolbar,extendedTableViewer){
    @Override protected Command getCommandToExecute(){
      return new Command(){
        @Override public void execute(){
          ISelection selection=getTableViewerCreator().getTableViewer().getSelection();
          List<IElementParameter> tableViewerInput=getTableViewerCreator().getInputList();
          IElementParameter CONNECTION=null;
          if (tableViewerInput != null && tableViewerInput.size() == 1) {
            if (tableViewerInput.get(0).getName().equals("String_Node_Str")) {
              CONNECTION=tableViewerInput.get(0);
            }
          }
          boolean needRefresh=false;
          if (!selection.isEmpty() && selection instanceof StructuredSelection) {
            Object[] elements=((StructuredSelection)selection).toArray();
            for (            Object element : elements) {
              tableViewerInput.remove(element);
              removeAssociateParams(tableViewerInput,element);
              ((IElementParameter)element).setContextMode(false);
            }
            needRefresh=true;
          }
 else           if (!tableViewerInput.isEmpty()) {
            int index=tableViewerInput.size() - 1;
            final IElementParameter elementParameter=(IElementParameter)tableViewerInput.get(index);
            elementParameter.setContextMode(false);
            tableViewerInput.remove(index);
            removeAssociateParams(tableViewerInput,elementParameter);
            needRefresh=true;
          }
          if (needRefresh) {
            refreshComboContent(AdvancedContextTableView.this,legalParameters);
            getTableViewerCreator().refresh();
            getExtendedToolbar().updateEnabledStateOfButtons();
            if (CONNECTION != null && (tableViewerInput.size() <= 0)) {
              executeCommand(new PropertyChangeCommand((Element)node,CONNECTION.getName(),"String_Node_Str"));
              CONNECTION.setReadOnly(true);
            }
          }
        }
      }
;
    }
    @Override public boolean getEnabledState(){
      return !getExtendedControlViewer().isReadOnly() && !getTableViewerCreator().getInputList().isEmpty();
    }
  }
;
}

Fixed version (ground truth):
@Override protected RemovePushButton createRemovePushButton(){
  return new RemovePushButtonForExtendedTable(toolbar,extendedTableViewer){
    @Override protected Command getCommandToExecute(){
      return new Command(){
        @Override public void execute(){
          ISelection selection=getTableViewerCreator().getTableViewer().getSelection();
          List<IElementParameter> tableViewerInput=getTableViewerCreator().getInputList();
          boolean needRefresh=false;
          if (!selection.isEmpty() && selection instanceof StructuredSelection) {
            Object[] elements=((StructuredSelection)selection).toArray();
            for (            Object element : elements) {
              tableViewerInput.remove(element);
              removeAssociateParams(tableViewerInput,element);
              ((IElementParameter)element).setContextMode(false);
            }
            needRefresh=true;
          }
 else           if (!tableViewerInput.isEmpty()) {
            int index=tableViewerInput.size() - 1;
            final IElementParameter elementParameter=tableViewerInput.get(index);
            elementParameter.setContextMode(false);
            tableViewerInput.remove(index);
            removeAssociateParams(tableViewerInput,elementParameter);
            needRefresh=true;
          }
          if (needRefresh) {
            refreshComboContent(AdvancedContextTableView.this,legalParameters);
            getTableViewerCreator().refresh();
            getExtendedToolbar().updateEnabledStateOfButtons();
          }
        }
      }
;
    }
    @Override public boolean getEnabledState(){
      return !getExtendedControlViewer().isReadOnly() && !getTableViewerCreator().getInputList().isEmpty();
    }
  }
;
}