Program: 67467
Project: 67467
Buggy source:
/** 
 * @param expList
 * @param uv
 */
private void getURLValueExpressions(List<String> expList,URLValue uv){
  String sa=uv.getBaseUrl();
  try {
    ActionHandle handle=actionHandleCache.get(sa);
    String exp;
    if (DesignChoiceConstants.ACTION_LINK_TYPE_HYPERLINK.equals(handle.getLinkType())) {
      ExpressionHandle expHandle=handle.getExpressionProperty(org.eclipse.birt.report.model.api.elements.structures.Action.URI_MEMBER);
      if (ExpressionType.JAVASCRIPT.equals(expHandle.getType())) {
        exp=expHandle.getStringExpression();
        if (!expList.contains(exp)) {
          expList.add(exp);
        }
      }
    }
 else     if (DesignChoiceConstants.ACTION_LINK_TYPE_BOOKMARK_LINK.equals(handle.getLinkType())) {
      ExpressionHandle exprHandle=handle.getExpressionProperty(org.eclipse.birt.report.model.api.elements.structures.Action.TARGET_BOOKMARK_MEMBER);
      exprCodec.setExpression(exprHandle.getStringValue());
      exprCodec.setType(exprHandle.getType());
      exp=exprCodec.encode();
      if (!expList.contains(exp)) {
        expList.add(exp);
      }
    }
 else     if (DesignChoiceConstants.ACTION_LINK_TYPE_DRILL_THROUGH.equals(handle.getLinkType())) {
      exp=handle.getTargetBookmark();
      if (exp != null && !expList.contains(exp)) {
        expList.add(exp);
      }
      for (Iterator itr=handle.getSearch().iterator(); itr.hasNext(); ) {
        SearchKeyHandle skh=(SearchKeyHandle)itr.next();
        exp=skh.getExpression();
        if (!expList.contains(exp)) {
          expList.add(exp);
        }
      }
      for (Iterator itr=handle.getParamBindings().iterator(); itr.hasNext(); ) {
        ParamBindingHandle pbh=(ParamBindingHandle)itr.next();
        exp=pbh.getExpression();
        if (!expList.contains(exp)) {
          expList.add(exp);
        }
      }
    }
  }
 catch (  DesignFileException e) {
    logger.log(e);
  }
}

Fixed version (ground truth):
/** 
 * @param expList
 * @param uv
 */
private void getURLValueExpressions(List<String> expList,URLValue uv){
  String sa=uv.getBaseUrl();
  try {
    ActionHandle handle=actionHandleCache.get(sa);
    String exp;
    if (DesignChoiceConstants.ACTION_LINK_TYPE_HYPERLINK.equals(handle.getLinkType())) {
      ExpressionHandle expHandle=handle.getExpressionProperty(org.eclipse.birt.report.model.api.elements.structures.Action.URI_MEMBER);
      if (ExpressionType.JAVASCRIPT.equals(expHandle.getType())) {
        exp=expHandle.getStringExpression();
        if (!expList.contains(exp)) {
          expList.add(exp);
        }
      }
    }
 else     if (DesignChoiceConstants.ACTION_LINK_TYPE_BOOKMARK_LINK.equals(handle.getLinkType())) {
      ExpressionHandle exprHandle=handle.getExpressionProperty(org.eclipse.birt.report.model.api.elements.structures.Action.TARGET_BOOKMARK_MEMBER);
      exprCodec.setExpression(exprHandle.getStringValue());
      exprCodec.setType(exprHandle.getType());
      exp=exprCodec.encode();
      if (!expList.contains(exp)) {
        expList.add(exp);
      }
    }
 else     if (DesignChoiceConstants.ACTION_LINK_TYPE_DRILL_THROUGH.equals(handle.getLinkType())) {
      ExpressionHandle exprHandle=handle.getExpressionProperty(org.eclipse.birt.report.model.api.elements.structures.Action.TARGET_BOOKMARK_MEMBER);
      exprCodec.setExpression(exprHandle.getStringValue());
      exprCodec.setType(exprHandle.getType());
      exp=exprCodec.encode();
      if (exp != null && !expList.contains(exp)) {
        expList.add(exp);
      }
      for (Iterator<?> itr=handle.getSearch().iterator(); itr.hasNext(); ) {
        SearchKeyHandle skh=(SearchKeyHandle)itr.next();
        exp=skh.getExpression();
        if (!expList.contains(exp)) {
          expList.add(exp);
        }
      }
      for (Iterator<?> itr=handle.getParamBindings().iterator(); itr.hasNext(); ) {
        ParamBindingHandle pbh=(ParamBindingHandle)itr.next();
        exprHandle=pbh.getExpressionProperty(ParamBinding.EXPRESSION_MEMBER);
        exprCodec.setExpression(exprHandle.getStringValue());
        exprCodec.setType(exprHandle.getType());
        exp=exprCodec.encode();
        if (!expList.contains(exp)) {
          expList.add(exp);
        }
      }
    }
  }
 catch (  DesignFileException e) {
    logger.log(e);
  }
}