Program: 85136
Project: 85136
Buggy source:
private static Map<String,MatchPair> parseRule(String rule) throws ParseException {
  Map<String,MatchPair> condition=new HashMap<String,MatchPair>();
  if (StringUtils.isBlank(rule)) {
    return condition;
  }
  MatchPair pair=null;
  Set<String> values=null;
  final Matcher matcher=ROUTE_PATTERN.matcher(rule);
  while (matcher.find()) {
    String separator=matcher.group(1);
    String content=matcher.group(2);
    if (separator == null || separator.length() == 0) {
      pair=new MatchPair();
      condition.put(content,pair);
    }
 else     if ("String_Node_Str".equals(separator)) {
      if (condition.get(content) == null) {
        pair=new MatchPair();
        condition.put(content,pair);
      }
 else {
        condition.put(content,pair);
      }
    }
 else     if ("String_Node_Str".equals(separator)) {
      if (pair == null)       throw new ParseException("String_Node_Str" + rule + "String_Node_Str"+ separator+ "String_Node_Str"+ matcher.start()+ "String_Node_Str"+ content+ "String_Node_Str",matcher.start());
      values=pair.matches;
      values.add(content);
    }
 else     if ("String_Node_Str".equals(separator)) {
      if (pair == null)       throw new ParseException("String_Node_Str" + rule + "String_Node_Str"+ separator+ "String_Node_Str"+ matcher.start()+ "String_Node_Str"+ content+ "String_Node_Str",matcher.start());
      values=pair.mismatches;
      values.add(content);
    }
 else     if ("String_Node_Str".equals(separator)) {
      if (values == null || values.size() == 0)       throw new ParseException("String_Node_Str" + rule + "String_Node_Str"+ separator+ "String_Node_Str"+ matcher.start()+ "String_Node_Str"+ content+ "String_Node_Str",matcher.start());
      values.add(content);
    }
 else {
      throw new ParseException("String_Node_Str" + rule + "String_Node_Str"+ separator+ "String_Node_Str"+ matcher.start()+ "String_Node_Str"+ content+ "String_Node_Str",matcher.start());
    }
  }
  return condition;
}

Fixed version (ground truth):
private static Map<String,MatchPair> parseRule(String rule) throws ParseException {
  Map<String,MatchPair> condition=new HashMap<String,MatchPair>();
  if (StringUtils.isBlank(rule)) {
    return condition;
  }
  MatchPair pair=null;
  Set<String> values=null;
  final Matcher matcher=ROUTE_PATTERN.matcher(rule);
  while (matcher.find()) {
    String separator=matcher.group(1);
    String content=matcher.group(2);
    if (separator == null || separator.length() == 0) {
      pair=new MatchPair();
      condition.put(content,pair);
    }
 else     if ("String_Node_Str".equals(separator)) {
      if (condition.get(content) == null) {
        pair=new MatchPair();
        condition.put(content,pair);
      }
 else {
        pair=condition.get(content);
      }
    }
 else     if ("String_Node_Str".equals(separator)) {
      if (pair == null)       throw new ParseException("String_Node_Str" + rule + "String_Node_Str"+ separator+ "String_Node_Str"+ matcher.start()+ "String_Node_Str"+ content+ "String_Node_Str",matcher.start());
      values=pair.matches;
      values.add(content);
    }
 else     if ("String_Node_Str".equals(separator)) {
      if (pair == null)       throw new ParseException("String_Node_Str" + rule + "String_Node_Str"+ separator+ "String_Node_Str"+ matcher.start()+ "String_Node_Str"+ content+ "String_Node_Str",matcher.start());
      values=pair.mismatches;
      values.add(content);
    }
 else     if ("String_Node_Str".equals(separator)) {
      if (values == null || values.size() == 0)       throw new ParseException("String_Node_Str" + rule + "String_Node_Str"+ separator+ "String_Node_Str"+ matcher.start()+ "String_Node_Str"+ content+ "String_Node_Str",matcher.start());
      values.add(content);
    }
 else {
      throw new ParseException("String_Node_Str" + rule + "String_Node_Str"+ separator+ "String_Node_Str"+ matcher.start()+ "String_Node_Str"+ content+ "String_Node_Str",matcher.start());
    }
  }
  return condition;
}