Program: 74624
Project: 74624
Buggy source:
/** 
 * compare data set design
 * @param dataSetDesign
 * @param dataSetDesign2
 * @return
 */
private boolean isEqualDataSetDesign(IBaseDataSetDesign dataSetDesign,IBaseDataSetDesign dataSetDesign2){
  if (dataSetDesign == dataSetDesign2)   return true;
  if (dataSetDesign == null || dataSetDesign2 == null)   return false;
  if (!isEqualString(dataSetDesign.getName(),dataSetDesign2.getName()))   return false;
  if (dataSetDesign.getRowFetchLimit() != dataSetDesign2.getRowFetchLimit()) {
    return false;
  }
  if (isEqualString(dataSetDesign.getBeforeOpenScript(),dataSetDesign2.getBeforeOpenScript()) == false || isEqualString(dataSetDesign.getAfterOpenScript(),dataSetDesign2.getAfterOpenScript()) == false || isEqualString(dataSetDesign.getBeforeCloseScript(),dataSetDesign2.getBeforeCloseScript()) == false || isEqualString(dataSetDesign.getAfterCloseScript(),dataSetDesign2.getAfterCloseScript()) == false)   return false;
  if (isEqualComputedColumns(dataSetDesign.getComputedColumns(),dataSetDesign2.getComputedColumns()) == false || isEqualFilters(dataSetDesign.getFilters(),dataSetDesign2.getFilters()) == false || isEqualParameters(dataSetDesign.getParameters(),dataSetDesign2.getParameters()) == false || isEqualResultHints(dataSetDesign.getResultSetHints(),dataSetDesign2.getResultSetHints()) == false)   return false;
  if (dataSetDesign.getCacheRowCount() != dataSetDesign2.getCacheRowCount())   return false;
  if (dataSetDesign instanceof IOdaDataSetDesign && dataSetDesign2 instanceof IOdaDataSetDesign) {
    IOdaDataSetDesign dataSet=(IOdaDataSetDesign)dataSetDesign;
    IOdaDataSetDesign dataSet2=(IOdaDataSetDesign)dataSetDesign2;
    if (isEqualString(dataSet.getQueryText(),dataSet2.getQueryText()) == false || isEqualString(dataSet.getExtensionID(),dataSet2.getExtensionID()) == false || isEqualString(dataSet.getPrimaryResultSetName(),dataSet2.getPrimaryResultSetName()) == false || isEqualProps(dataSet.getPublicProperties(),dataSet2.getPublicProperties()) == false || isEqualProps(dataSet.getPrivateProperties(),dataSet2.getPrivateProperties()) == false)     return false;
  }
 else   if (dataSetDesign instanceof IScriptDataSetDesign && dataSetDesign2 instanceof IScriptDataSetDesign) {
    IScriptDataSetDesign dataSet=(IScriptDataSetDesign)dataSetDesign;
    IScriptDataSetDesign dataSet2=(IScriptDataSetDesign)dataSetDesign2;
    if (isEqualString(dataSet.getOpenScript(),dataSet2.getOpenScript()) == false || isEqualString(dataSet.getFetchScript(),dataSet2.getFetchScript()) == false || isEqualString(dataSet.getCloseScript(),dataSet2.getCloseScript()) == false || isEqualString(dataSet.getDescribeScript(),dataSet2.getDescribeScript()) == false)     return false;
  }
 else   if (dataSetDesign instanceof IJointDataSetDesign && dataSetDesign2 instanceof IJointDataSetDesign) {
    IJointDataSetDesign design1=(IJointDataSetDesign)dataSetDesign;
    IJointDataSetDesign design2=(IJointDataSetDesign)dataSetDesign2;
    if (isEqualString(design1.getLeftDataSetDesignName(),design2.getLeftDataSetDesignName()) == false || isEqualString(design1.getRightDataSetDesignName(),design2.getRightDataSetDesignName()) == false || design1.getJoinType() != design2.getJoinType() || isEqualJointCondition(design1.getJoinConditions(),design2.getJoinConditions()) == false)     return false;
  }
 else {
    return false;
  }
  return true;
}

Fixed version (ground truth):
/** 
 * compare data set design
 * @param dataSetDesign
 * @param dataSetDesign2
 * @return
 */
private boolean isEqualDataSetDesign(IBaseDataSetDesign dataSetDesign,IBaseDataSetDesign dataSetDesign2){
  if (dataSetDesign == dataSetDesign2)   return true;
  if (dataSetDesign == null || dataSetDesign2 == null)   return false;
  if (!isEqualString(dataSetDesign.getName(),dataSetDesign2.getName()))   return false;
  if (dataSetDesign.getRowFetchLimit() != dataSetDesign2.getRowFetchLimit()) {
    return false;
  }
  if (dataSetDesign2.getBeforeOpenScript() != null || dataSetDesign2.getAfterOpenScript() != null || dataSetDesign2.getBeforeCloseScript() != null || dataSetDesign2.getAfterCloseScript() != null || dataSetDesign2.getOnFetchScript() != null)   return false;
  if (isEqualComputedColumns(dataSetDesign.getComputedColumns(),dataSetDesign2.getComputedColumns()) == false || isEqualFilters(dataSetDesign.getFilters(),dataSetDesign2.getFilters()) == false || isEqualParameters(dataSetDesign.getParameters(),dataSetDesign2.getParameters()) == false || isEqualResultHints(dataSetDesign.getResultSetHints(),dataSetDesign2.getResultSetHints()) == false)   return false;
  if (dataSetDesign.getCacheRowCount() != dataSetDesign2.getCacheRowCount())   return false;
  if (dataSetDesign instanceof IOdaDataSetDesign && dataSetDesign2 instanceof IOdaDataSetDesign) {
    IOdaDataSetDesign dataSet=(IOdaDataSetDesign)dataSetDesign;
    IOdaDataSetDesign dataSet2=(IOdaDataSetDesign)dataSetDesign2;
    if (isEqualString(dataSet.getQueryText(),dataSet2.getQueryText()) == false || isEqualString(dataSet.getExtensionID(),dataSet2.getExtensionID()) == false || isEqualString(dataSet.getPrimaryResultSetName(),dataSet2.getPrimaryResultSetName()) == false || isEqualProps(dataSet.getPublicProperties(),dataSet2.getPublicProperties()) == false || isEqualProps(dataSet.getPrivateProperties(),dataSet2.getPrivateProperties()) == false)     return false;
  }
 else   if (dataSetDesign instanceof IScriptDataSetDesign && dataSetDesign2 instanceof IScriptDataSetDesign) {
    IScriptDataSetDesign dataSet=(IScriptDataSetDesign)dataSetDesign;
    IScriptDataSetDesign dataSet2=(IScriptDataSetDesign)dataSetDesign2;
    if (isEqualString(dataSet.getOpenScript(),dataSet2.getOpenScript()) == false || isEqualString(dataSet.getFetchScript(),dataSet2.getFetchScript()) == false || isEqualString(dataSet.getCloseScript(),dataSet2.getCloseScript()) == false || isEqualString(dataSet.getDescribeScript(),dataSet2.getDescribeScript()) == false)     return false;
  }
 else   if (dataSetDesign instanceof IJointDataSetDesign && dataSetDesign2 instanceof IJointDataSetDesign) {
    IJointDataSetDesign design1=(IJointDataSetDesign)dataSetDesign;
    IJointDataSetDesign design2=(IJointDataSetDesign)dataSetDesign2;
    if (isEqualString(design1.getLeftDataSetDesignName(),design2.getLeftDataSetDesignName()) == false || isEqualString(design1.getRightDataSetDesignName(),design2.getRightDataSetDesignName()) == false || design1.getJoinType() != design2.getJoinType() || isEqualJointCondition(design1.getJoinConditions(),design2.getJoinConditions()) == false)     return false;
  }
 else {
    return false;
  }
  return true;
}