Program: 121831
Project: 121831
Buggy source:
@Override protected ExtendedToolbarView initToolBar(){
  return new ExtendedToolbarView(getMainComposite(),SWT.NONE,getExtendedTableViewer()){
    @Override protected AddPushButton createAddPushButton(){
      return new AddPushButtonForExtendedTable(toolbar,extendedTableViewer){
        @Override protected Object getObjectToAdd(){
          return null;
        }
        @Override protected Command getCommandToExecute(){
          return new Command(){
            @Override public void execute(){
              if (comboContent.size() > 0) {
                List<IElementParameter> tableInput=getTableViewerCreator().getInputList();
                IElementParameter parameter=comboContent.get(0);
                tableInput.add(parameter);
                ((IElementParameter)parameter).setContextMode(true);
                List<IElementParameter> associateParams=findRadioParamInSameGroup(comboContent,parameter);
                for (                IElementParameter param : associateParams) {
                  param.setContextMode(true);
                  tableInput.add(param);
                }
                refreshComboContent(AdvancedContextTableView.this,legalParameters);
                getExtendedToolbar().updateEnabledStateOfButtons();
                getTableViewerCreator().refresh();
                if (parameter.getName().equals("String_Node_Str")) {
                  parameter.setReadOnly(false);
                }
              }
            }
          }
;
        }
        @Override public boolean getEnabledState(){
          if (super.getEnabledState()) {
            List<IElementParameter> inputList=getTableViewerCreator().getInputList();
            return inputList != null && inputList.size() < legalParameters.size();
          }
          return false;
        }
      }
;
    }
    @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();
        }
      }
;
    }
    @Override protected MoveDownPushButton createMoveDownPushButton(){
      return null;
    }
    @Override protected MoveUpPushButton createMoveUpPushButton(){
      return null;
    }
    @Override protected CopyPushButton createCopyPushButton(){
      return null;
    }
    private void removeAssociateParams(    List<IElementParameter> tableViewerInput,    Object element){
      List<IElementParameter> associateParams=findRadioParamInSameGroup(tableViewerInput,(IElementParameter)element);
      for (      IElementParameter param : associateParams) {
        param.setContextMode(false);
        tableViewerInput.remove(param);
      }
    }
  }
;
}

Fixed version (ground truth):
@Override protected ExtendedToolbarView initToolBar(){
  return new ExtendedToolbarView(getMainComposite(),SWT.NONE,getExtendedTableViewer()){
    @Override protected AddPushButton createAddPushButton(){
      return new AddPushButtonForExtendedTable(toolbar,extendedTableViewer){
        @Override protected Object getObjectToAdd(){
          return null;
        }
        @Override protected Command getCommandToExecute(){
          return new Command(){
            @Override public void execute(){
              if (comboContent.size() > 0) {
                List<IElementParameter> tableInput=getTableViewerCreator().getInputList();
                IElementParameter parameter=comboContent.get(0);
                tableInput.add(parameter);
                parameter.setContextMode(true);
                List<IElementParameter> associateParams=findRadioParamInSameGroup(comboContent,parameter);
                for (                IElementParameter param : associateParams) {
                  param.setContextMode(true);
                  tableInput.add(param);
                }
                refreshComboContent(AdvancedContextTableView.this,legalParameters);
                getExtendedToolbar().updateEnabledStateOfButtons();
                getTableViewerCreator().refresh();
              }
            }
          }
;
        }
        @Override public boolean getEnabledState(){
          if (super.getEnabledState()) {
            List<IElementParameter> inputList=getTableViewerCreator().getInputList();
            return inputList != null && inputList.size() < legalParameters.size();
          }
          return false;
        }
      }
;
    }
    @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();
        }
      }
;
    }
    @Override protected MoveDownPushButton createMoveDownPushButton(){
      return null;
    }
    @Override protected MoveUpPushButton createMoveUpPushButton(){
      return null;
    }
    @Override protected CopyPushButton createCopyPushButton(){
      return null;
    }
    private void removeAssociateParams(    List<IElementParameter> tableViewerInput,    Object element){
      List<IElementParameter> associateParams=findRadioParamInSameGroup(tableViewerInput,(IElementParameter)element);
      for (      IElementParameter param : associateParams) {
        param.setContextMode(false);
        tableViewerInput.remove(param);
      }
    }
  }
;
}