Program: 68037
Project: 68037
Buggy source:
/** 
 * update DataSetHandle
 * @param response
 * @param dataSetHandle
 * @param isSourceChanged
 */
public void updateDataSetHandle(DesignSessionResponse response,DataSetDesign requestDesign,OdaDataSetHandle dataSetHandle,boolean isSourceChanged){
  initDesignSessionFields(response);
  if (isSessionOk()) {
    EcoreUtil.EqualityHelper equalityHelper=new EcoreUtil.EqualityHelper();
    if (equalityHelper.equals(response.getDataSetDesign(),requestDesign) && equalityHelper.equals(response.getDesignerState(),this.designerState))     return;
    try {
      DataSetDesign design=response.getDataSetDesign();
      if (ReportPlugin.getDefault().getPluginPreferences().getBoolean(DateSetPreferencePage.PROMPT_ENABLE) == true) {
        IAmbiguousOption ambiguousOption=modelOdaAdapter.getAmbiguousOption(design,dataSetHandle);
        if (ambiguousOption != null && !ambiguousOption.getAmbiguousParameters().isEmpty()) {
          PromptParameterDialog dialog=new PromptParameterDialog(Messages.getString("String_Node_Str"));
          dialog.setInput(ambiguousOption);
          if (dialog.open() == Dialog.OK) {
            Object result=dialog.getResult();
            if (result instanceof List) {
              List<OdaDataSetParameter> selectedParameters=(List)result;
              updateROMDesignerState(dataSetHandle);
              modelOdaAdapter.updateDataSetHandle(design,dataSetHandle,selectedParameters,null,isSourceChanged);
              return;
            }
          }
 else {
            updateROMDesignerState(dataSetHandle);
            modelOdaAdapter.updateDataSetHandle(design,dataSetHandle,isSourceChanged);
            return;
          }
        }
      }
      updateROMDesignerState(dataSetHandle);
      modelOdaAdapter.updateDataSetHandle(design,dataSetHandle,isSourceChanged);
    }
 catch (    SemanticException e) {
      ExceptionHandler.handle(e);
    }
  }
  return;
}

Fixed version (ground truth):
/** 
 * update DataSetHandle
 * @param response
 * @param dataSetHandle
 * @param isSourceChanged
 */
public void updateDataSetHandle(DesignSessionResponse response,DataSetDesign requestDesign,OdaDataSetHandle dataSetHandle,boolean isSourceChanged){
  initDesignSessionFields(response);
  if (isSessionOk()) {
    EcoreUtil.EqualityHelper equalityHelper=new EcoreUtil.EqualityHelper();
    if (equalityHelper.equals(response.getDataSetDesign(),requestDesign) && equalityHelper.equals(response.getDesignerState(),this.designerState))     return;
    try {
      DataSetDesign design=response.getDataSetDesign();
      if (ReportPlugin.getDefault().getPluginPreferences().getBoolean(DateSetPreferencePage.PROMPT_ENABLE) == true) {
        IAmbiguousOption ambiguousOption=modelOdaAdapter.getAmbiguousOption(design,dataSetHandle);
        if (ambiguousOption != null && !ambiguousOption.getAmbiguousParameters().isEmpty()) {
          PromptParameterDialog dialog=new PromptParameterDialog(Messages.getString("String_Node_Str"));
          dialog.setInput(ambiguousOption);
          if (dialog.open() == Dialog.OK) {
            Object result=dialog.getResult();
            if (result instanceof List) {
              List<OdaDataSetParameter> selectedParameters=(List)result;
              updateROMDesignerState(dataSetHandle);
              modelOdaAdapter.updateDataSetHandle(design,dataSetHandle,selectedParameters,null,isSourceChanged);
              DataSetUIUtil.updateColumnCacheAfterCleanRs(dataSetHandle);
              return;
            }
          }
 else {
            updateROMDesignerState(dataSetHandle);
            modelOdaAdapter.updateDataSetHandle(design,dataSetHandle,isSourceChanged);
            DataSetUIUtil.updateColumnCacheAfterCleanRs(dataSetHandle);
            return;
          }
        }
      }
      updateROMDesignerState(dataSetHandle);
      modelOdaAdapter.updateDataSetHandle(design,dataSetHandle,isSourceChanged);
      DataSetUIUtil.updateColumnCacheAfterCleanRs(dataSetHandle);
    }
 catch (    SemanticException e) {
      ExceptionHandler.handle(e);
    }
  }
  return;
}