Program: 77238
Project: 77238
Buggy source:
/** 
 * Checks whether the given report parameter is updated. This method checks values of report parameters and values in data set design. <p> If any input argument is null or the matched ODA parameter definition cannot be found, return <code>true</code>.
 * @param reportParam the report parameter
 * @param param the ROM data set parameter
 * @param dataSetDesign the data set design
 * @return <code>true</code> if the report paramter is updated or has noparameter definition in the data set design. Otherwise <code>false</code>.
 */
boolean isUpdatedReportParameter(ScalarParameterHandle reportParam,ParameterDefinition odaParam,String newDataType){
  if (reportParam == null || odaParam == null)   return true;
  DataElementAttributes dataAttrs=odaParam.getAttributes();
  boolean allowNull=reportParam.allowNull();
  Boolean odaAllowNull=getROMNullability(dataAttrs.getNullability());
  if (odaAllowNull != null && allowNull != odaAllowNull.booleanValue())   return false;
  if (!DesignChoiceConstants.PARAM_TYPE_ANY.equalsIgnoreCase(newDataType)) {
    if (!isEquals(newDataType,reportParam.getDataType()))     return false;
  }
  DataElementUIHints dataUiHints=dataAttrs.getUiHints();
  if (dataUiHints != null) {
    String newPromptText=dataUiHints.getDisplayName();
    String newHelpText=dataUiHints.getDescription();
    if (!isEquals(newPromptText,reportParam.getPromptText()))     return false;
    if (!isEquals(newHelpText,reportParam.getHelpText()))     return false;
  }
  InputParameterAttributes paramAttrs=odaParam.getInputAttributes();
  InputParameterAttributes tmpParamDefn=(InputParameterAttributes)EcoreUtil.copy(paramAttrs);
  DynamicValuesQuery tmpDynamicQuery=tmpParamDefn.getElementAttributes().getDynamicValueChoices();
  String tmpDataSetName=null;
  if (tmpDynamicQuery != null) {
    tmpDataSetName=tmpDynamicQuery.getDataSetDesign().getName();
    tmpDynamicQuery.setDataSetDesign(null);
  }
  if (tmpParamDefn.getUiHints() != null) {
    tmpParamDefn.setUiHints(null);
  }
  InputParameterAttributes tmpParamDefn1=DesignFactory.eINSTANCE.createInputParameterAttributes();
  updateInputElementAttrs(tmpParamDefn1,reportParam,null);
  if (tmpParamDefn1.getUiHints() != null) {
    tmpParamDefn1.setUiHints(null);
  }
  DynamicValuesQuery tmpDynamicQuery1=tmpParamDefn1.getElementAttributes().getDynamicValueChoices();
  String tmpDataSetName1=null;
  if (tmpDynamicQuery1 != null) {
    tmpDataSetName1=tmpDynamicQuery1.getDataSetDesign().getName();
    tmpDynamicQuery1.setDataSetDesign(null);
  }
  if (!isEquals(tmpDataSetName,tmpDataSetName1))   return false;
  return EcoreUtil.equals(tmpParamDefn,tmpParamDefn1);
}

Fixed version (ground truth):
/** 
 * Checks whether the given report parameter is updated. This method checks values of report parameters and values in data set design. <p> If any input argument is null or the matched ODA parameter definition cannot be found, return <code>true</code>.
 * @param reportParam the report parameter
 * @param param the ROM data set parameter
 * @param dataSetDesign the data set design
 * @return <code>true</code> if the report paramter is updated or has noparameter definition in the data set design. Otherwise <code>false</code>.
 */
boolean isUpdatedReportParameter(ScalarParameterHandle reportParam,ParameterDefinition odaParam,String newDataType){
  if (reportParam == null || odaParam == null)   return true;
  DataElementAttributes dataAttrs=odaParam.getAttributes();
  boolean allowNull=reportParam.allowNull();
  Boolean odaAllowNull=getROMNullability(dataAttrs.getNullability());
  if (odaAllowNull != null && allowNull != odaAllowNull.booleanValue())   return false;
  if (!DesignChoiceConstants.PARAM_TYPE_ANY.equalsIgnoreCase(newDataType)) {
    if (!isEquals(newDataType,reportParam.getDataType()))     return false;
  }
  DataElementUIHints dataUiHints=dataAttrs.getUiHints();
  if (dataUiHints != null) {
    String newPromptText=dataUiHints.getDisplayName();
    String newHelpText=dataUiHints.getDescription();
    if (!isEquals(newPromptText,reportParam.getPromptText()))     return false;
    if (!isEquals(newHelpText,reportParam.getHelpText()))     return false;
  }
  InputParameterAttributes paramAttrs=odaParam.getInputAttributes();
  InputParameterAttributes tmpParamDefn=null;
  String tmpDataSetName=null;
  if (paramAttrs != null) {
    tmpParamDefn=(InputParameterAttributes)EcoreUtil.copy(paramAttrs);
    DynamicValuesQuery tmpDynamicQuery=tmpParamDefn.getElementAttributes().getDynamicValueChoices();
    if (tmpDynamicQuery != null) {
      tmpDataSetName=tmpDynamicQuery.getDataSetDesign().getName();
      tmpDynamicQuery.setDataSetDesign(null);
    }
    if (tmpParamDefn.getUiHints() != null) {
      tmpParamDefn.setUiHints(null);
    }
  }
 else   tmpParamDefn=DesignFactory.eINSTANCE.createInputParameterAttributes();
  InputParameterAttributes tmpParamDefn1=DesignFactory.eINSTANCE.createInputParameterAttributes();
  updateInputElementAttrs(tmpParamDefn1,reportParam,null);
  if (tmpParamDefn1.getUiHints() != null) {
    tmpParamDefn1.setUiHints(null);
  }
  DynamicValuesQuery tmpDynamicQuery1=tmpParamDefn1.getElementAttributes().getDynamicValueChoices();
  String tmpDataSetName1=null;
  if (tmpDynamicQuery1 != null) {
    tmpDataSetName1=tmpDynamicQuery1.getDataSetDesign().getName();
    tmpDynamicQuery1.setDataSetDesign(null);
  }
  if (!isEquals(tmpDataSetName,tmpDataSetName1))   return false;
  return EcoreUtil.equals(tmpParamDefn,tmpParamDefn1);
}