Program: 15605
Project: 15605
Buggy source:
private List parseAsMetaInfTldLocations(String value) throws ParseException {
  List metaInfTldSources=null;
  List values=parseCommaSeparatedList(value);
  for (Iterator it=values.iterator(); it.hasNext(); ) {
    final String itemStr=(String)it.next();
    final MetaInfTldSource metaInfTldSource;
    if (itemStr.equals(META_INF_TLD_LOCATION_WEB_INF_PER_LIB_JARS)) {
      metaInfTldSource=WebInfPerLibJarMetaInfTldSource.INSTANCE;
    }
 else     if (itemStr.startsWith(META_INF_TLD_LOCATION_CLASSPATH)) {
      String itemRightSide=itemStr.substring(META_INF_TLD_LOCATION_CLASSPATH.length()).trim();
      if (itemRightSide.length() == 0) {
        metaInfTldSource=new ClasspathMetaInfTldSource(Pattern.compile("String_Node_Str",Pattern.DOTALL));
      }
 else       if (itemRightSide.startsWith("String_Node_Str")) {
        final String regexpStr=itemRightSide.substring(1).trim();
        if (regexpStr.length() == 0) {
          throw new ParseException("String_Node_Str" + META_INF_TLD_LOCATION_CLASSPATH + "String_Node_Str",-1);
        }
        metaInfTldSource=new ClasspathMetaInfTldSource(Pattern.compile(regexpStr));
      }
 else {
        throw new ParseException("String_Node_Str" + META_INF_TLD_LOCATION_CLASSPATH + "String_Node_Str"+ value,-1);
      }
    }
 else     if (itemStr.startsWith(META_INF_TLD_LOCATION_CLEAR)) {
      metaInfTldSource=ClearMetaInfTldSource.INSTANCE;
    }
 else {
      throw new ParseException("String_Node_Str" + value,-1);
    }
    if (metaInfTldSources == null) {
      metaInfTldSources=new ArrayList();
    }
    metaInfTldSources.add(metaInfTldSource);
  }
  return metaInfTldSources;
}

Fixed version (ground truth):
private List parseAsMetaInfTldLocations(String value) throws ParseException {
  List metaInfTldSources=null;
  List values=parseCommaSeparatedList(value);
  for (Iterator it=values.iterator(); it.hasNext(); ) {
    final String itemStr=(String)it.next();
    final MetaInfTldSource metaInfTldSource;
    if (itemStr.equals(META_INF_TLD_LOCATION_WEB_INF_PER_LIB_JARS)) {
      metaInfTldSource=WebInfPerLibJarMetaInfTldSource.INSTANCE;
    }
 else     if (itemStr.startsWith(META_INF_TLD_LOCATION_CLASSPATH)) {
      String itemRightSide=itemStr.substring(META_INF_TLD_LOCATION_CLASSPATH.length()).trim();
      if (itemRightSide.length() == 0) {
        metaInfTldSource=new ClasspathMetaInfTldSource(Pattern.compile("String_Node_Str",Pattern.DOTALL));
      }
 else       if (itemRightSide.startsWith("String_Node_Str")) {
        final String regexpStr=itemRightSide.substring(1).trim();
        if (regexpStr.length() == 0) {
          throw new ParseException("String_Node_Str" + META_INF_TLD_LOCATION_CLASSPATH + "String_Node_Str",-1);
        }
        metaInfTldSource=new ClasspathMetaInfTldSource(Pattern.compile(regexpStr));
      }
 else {
        throw new ParseException("String_Node_Str" + META_INF_TLD_LOCATION_CLASSPATH + "String_Node_Str"+ value,-1);
      }
    }
 else     if (itemStr.startsWith(META_INF_TLD_LOCATION_CLEAR)) {
      metaInfTldSource=ClearMetaInfTldSource.INSTANCE;
    }
 else {
      throw new ParseException("String_Node_Str" + itemStr,-1);
    }
    if (metaInfTldSources == null) {
      metaInfTldSources=new ArrayList();
    }
    metaInfTldSources.add(metaInfTldSource);
  }
  return metaInfTldSources;
}