Program: 7039
Project: 7039
Buggy source:
private Set<FileInfo> resolveFiles(List<String> files,boolean serveOnly){
  if (files != null) {
    Set<FileInfo> resolvedFiles=new LinkedHashSet<FileInfo>();
    for (    String f : files) {
      f=pathRewriter.rewrite(f);
      boolean isPatch=f.startsWith("String_Node_Str");
      if (isPatch) {
        String[] tokens=f.split("String_Node_Str",2);
        f=tokens[1].trim();
      }
      if (f.startsWith("String_Node_Str") || f.startsWith("String_Node_Str")) {
        resolvedFiles.add(new FileInfo(f,-1,false,false,null));
      }
 else {
        File file=basePath != null ? new File(basePath,f) : new File(f);
        File testFile=file.getAbsoluteFile();
        File dir=testFile.getParentFile().getAbsoluteFile();
        final String pattern=file.getName();
        String[] filteredFiles=dir.list(new GlobFilenameFilter(pattern,GlobCompiler.DEFAULT_MASK | GlobCompiler.CASE_INSENSITIVE_MASK));
        if (filteredFiles == null || filteredFiles.length == 0) {
          String error="String_Node_Str" + f + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str";
          System.err.println(error);
          throw new RuntimeException(error);
        }
        Arrays.sort(filteredFiles,String.CASE_INSENSITIVE_ORDER);
        for (        String filteredFile : filteredFiles) {
          String resolvedFilePath=pathResolver.resolvePath(dir.getAbsolutePath().replaceAll("String_Node_Str","String_Node_Str") + "String_Node_Str" + filteredFile.replaceAll("String_Node_Str","String_Node_Str"));
          File resolvedFile=new File(resolvedFilePath);
          resolvedFiles.add(new FileInfo(resolvedFilePath,resolvedFile.lastModified(),isPatch,serveOnly,null));
        }
      }
    }
    return resolvedFiles;
  }
  return Collections.emptySet();
}

Fixed version (ground truth):
private Set<FileInfo> resolveFiles(List<String> files,boolean serveOnly){
  if (files != null) {
    Set<FileInfo> resolvedFiles=new LinkedHashSet<FileInfo>();
    for (    String f : files) {
      f=pathRewriter.rewrite(f);
      boolean isPatch=f.startsWith("String_Node_Str");
      if (isPatch) {
        String[] tokens=f.split("String_Node_Str",2);
        f=tokens[1].trim();
      }
      if (f.startsWith("String_Node_Str") || f.startsWith("String_Node_Str")) {
        resolvedFiles.add(new FileInfo(f,-1,false,false,null));
      }
 else {
        File file=basePath != null ? new File(basePath.getAbsoluteFile(),f) : new File(f);
        File testFile=file.getAbsoluteFile();
        File dir=testFile.getParentFile().getAbsoluteFile();
        final String pattern=file.getName();
        String[] filteredFiles=dir.list(new GlobFilenameFilter(pattern,GlobCompiler.DEFAULT_MASK | GlobCompiler.CASE_INSENSITIVE_MASK));
        if (filteredFiles == null || filteredFiles.length == 0) {
          String error="String_Node_Str" + f + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str";
          System.err.println(error);
          throw new RuntimeException(error);
        }
        Arrays.sort(filteredFiles,String.CASE_INSENSITIVE_ORDER);
        for (        String filteredFile : filteredFiles) {
          String resolvedFilePath=pathResolver.resolvePath(dir.getAbsolutePath().replaceAll("String_Node_Str","String_Node_Str") + "String_Node_Str" + filteredFile.replaceAll("String_Node_Str","String_Node_Str"));
          File resolvedFile=new File(resolvedFilePath);
          resolvedFiles.add(new FileInfo(resolvedFilePath,resolvedFile.lastModified(),isPatch,serveOnly,null));
        }
      }
    }
    return resolvedFiles;
  }
  return Collections.emptySet();
}