Program: 115067
Project: 115067
Buggy source:
/** 
 * This method is for Skip pattern to build multiple expressions (not complete yet)
 * @param expression
 * @param version
 * @return
 */
private String getFullExpressionToParse(String expression,CRFVersionBean version,boolean expressionEvaluates) throws Exception {
  String result="String_Node_Str";
  expression="String_Node_Str" + expression;
  expression=expression.replaceAll("String_Node_Str","String_Node_Str");
  expression=expression.replaceAll("String_Node_Str","String_Node_Str");
  expression=expression.replaceAll("String_Node_Str","String_Node_Str");
  expression=expression.replaceAll("String_Node_Str","String_Node_Str");
  expression=expression.replaceAll("String_Node_Str","String_Node_Str");
  expression=expression.replaceAll("String_Node_Str","String_Node_Str");
  expression=expression.replaceAll("String_Node_Str","String_Node_Str");
  expression=expression.replaceAll("String_Node_Str","String_Node_Str");
  expression=expression.replaceAll("String_Node_Str","String_Node_Str");
  expression=expression.replaceAll("String_Node_Str","String_Node_Str");
  expression=expression.replaceAll("String_Node_Str","String_Node_Str");
  if (expressionEvaluates == false) {
    expression="String_Node_Str" + expression + "String_Node_Str";
  }
  String[] exprs=expression.split("String_Node_Str");
  for (  String expr : exprs) {
    if (expr.contains("String_Node_Str")) {
      String itemOid=expr.substring(3);
      logger.info("String_Node_Str" + itemOid);
      ItemBean itemBean=getItemBean(itemOid);
      ItemGroupBean itemGroupBean=getItemGroupBeanByItemId(itemBean.getId());
      expr="String_Node_Str" + version.getOid() + "String_Node_Str"+ itemGroupBean.getOid()+ "String_Node_Str"+ itemOid;
    }
    result=result + "String_Node_Str" + expr;
  }
  logger.info("String_Node_Str" + result);
  return result;
}

Fixed version (ground truth):
/** 
 * This method is for Skip pattern to build multiple expressions (not complete yet)
 * @param expression
 * @param version
 * @return
 */
private String getFullExpressionToParse(String expression,CRFVersionBean version,boolean expressionEvaluates) throws Exception {
  String result="String_Node_Str";
  expression="String_Node_Str" + expression;
  expression=expression.replaceAll("String_Node_Str","String_Node_Str");
  expression=expression.replaceAll("String_Node_Str","String_Node_Str");
  expression=expression.replaceAll("String_Node_Str","String_Node_Str");
  expression=expression.replaceAll("String_Node_Str","String_Node_Str");
  expression=expression.replaceAll("String_Node_Str","String_Node_Str");
  expression=expression.replaceAll("String_Node_Str","String_Node_Str");
  expression=expression.replaceAll("String_Node_Str","String_Node_Str");
  expression=expression.replaceAll("String_Node_Str","String_Node_Str");
  expression=expression.replaceAll("String_Node_Str","String_Node_Str");
  expression=expression.replaceAll("String_Node_Str","String_Node_Str");
  expression=expression.replaceAll("String_Node_Str","String_Node_Str");
  if (expressionEvaluates == false) {
    expression="String_Node_Str" + expression + "String_Node_Str";
  }
  String[] exprs=expression.split("String_Node_Str");
  boolean byPass=false;
  String tempExpr="String_Node_Str";
  for (  String expr : exprs) {
    if (expr.contains("String_Node_Str")) {
      String itemOid=expr.substring(3);
      logger.info("String_Node_Str" + itemOid);
      ItemBean itemBean=getItemBean(itemOid);
      ItemGroupBean itemGroupBean=getItemGroupBeanByItemId(itemBean.getId());
      itemFormMetadataDAO=new ItemFormMetadataDAO(dataSource);
      ItemFormMetadataBean ifmBean=(ItemFormMetadataBean)itemFormMetadataDAO.findByItemIdAndCRFVersionId(itemBean.getId(),version.getId());
      if (ifmBean.getResponseSet().getResponseTypeId() == 3 || ifmBean.getResponseSet().getResponseTypeId() == 7) {
        byPass=true;
        tempExpr=expr;
      }
      expr="String_Node_Str" + version.getOid() + "String_Node_Str"+ itemGroupBean.getOid()+ "String_Node_Str"+ itemOid;
    }
    if (byPass && tempExpr.contains("String_Node_Str")) {
      tempExpr=expr;
    }
 else     if (byPass && expr.equals("String_Node_Str")) {
      tempExpr="String_Node_Str" + tempExpr + "String_Node_Str";
    }
 else     if (byPass && expr.equals("String_Node_Str")) {
      tempExpr="String_Node_Str" + tempExpr + "String_Node_Str";
    }
 else     if (byPass && (expr.equals("String_Node_Str") || expr.equals("String_Node_Str") || expr.equals("String_Node_Str")|| expr.equals("String_Node_Str"))) {
      tempExpr=tempExpr + "String_Node_Str" + expr;
      result=result + "String_Node_Str" + tempExpr;
      byPass=false;
    }
 else     if (byPass && !expr.contains("String_Node_Str") && !expr.equals("String_Node_Str")&& !expr.equals("String_Node_Str")&& !expr.equals("String_Node_Str")&& !expr.equals("String_Node_Str")&& !expr.equals("String_Node_Str")&& !expr.equals("String_Node_Str")) {
      tempExpr=tempExpr + "String_Node_Str" + expr+ "String_Node_Str";
      result=result + "String_Node_Str" + tempExpr;
      byPass=false;
    }
 else {
      result=result + "String_Node_Str" + expr;
    }
  }
  logger.info("String_Node_Str" + result);
  return result;
}