Program: 111100
Project: 111100
Buggy source:
private List<String> copyResources(String destination) throws IOException {
  final List<String> allCopiedPaths=newArrayList();
  for (  Resource resource : resources) {
    final File source=new File(resource.getDirectory());
    final List<String> includes=resource.getIncludes();
    final List<String> excludes=resource.getExcludes();
    final DirectoryScanner scanner=new DirectoryScanner();
    scanner.setBasedir(source);
    scanner.setIncludes(includes.isEmpty() ? null : includes.toArray(new String[includes.size()]));
    scanner.setExcludes(excludes.isEmpty() ? null : excludes.toArray(new String[excludes.size()]));
    scanner.scan();
    final String[] includedFiles=scanner.getIncludedFiles();
    if (includedFiles.length == 0) {
      getLog().info("String_Node_Str");
    }
    final List<String> copiedPaths=newArrayList();
    boolean copyWholeDir=includes.isEmpty() && excludes.isEmpty() && resource.getTargetPath() != null;
    final String targetPath=resource.getTargetPath() == null ? "String_Node_Str" : resource.getTargetPath();
    if (copyWholeDir) {
      final Path destPath=Paths.get(destination,targetPath);
      getLog().info(String.format("String_Node_Str",source,destPath));
      Files.createDirectories(destPath);
      FileUtils.copyDirectoryStructure(source,destPath.toFile());
      copiedPaths.add(separatorsToUnix(targetPath));
    }
 else {
      for (      String included : includedFiles) {
        final Path sourcePath=Paths.get(resource.getDirectory()).resolve(included);
        final Path destPath=Paths.get(destination,targetPath).resolve(included);
        getLog().info(String.format("String_Node_Str",sourcePath,destPath));
        Files.createDirectories(destPath.getParent());
        Files.copy(sourcePath,destPath,StandardCopyOption.REPLACE_EXISTING,StandardCopyOption.COPY_ATTRIBUTES);
        copiedPaths.add(separatorsToUnix(Paths.get(targetPath).resolve(included).toString()));
      }
    }
    Collections.sort(copiedPaths);
    allCopiedPaths.addAll(copiedPaths);
  }
  return allCopiedPaths;
}

Fixed version (ground truth):
private List<String> copyResources(String destination) throws IOException {
  final List<String> allCopiedPaths=newArrayList();
  for (  final Resource resource : resources) {
    final File source=new File(resource.getDirectory());
    final List<String> includes=resource.getIncludes();
    final List<String> excludes=resource.getExcludes();
    final DirectoryScanner scanner=new DirectoryScanner();
    scanner.setBasedir(source);
    scanner.setIncludes(includes.isEmpty() ? null : includes.toArray(new String[includes.size()]));
    scanner.setExcludes(excludes.isEmpty() ? null : excludes.toArray(new String[excludes.size()]));
    scanner.scan();
    final String[] includedFiles=scanner.getIncludedFiles();
    if (includedFiles.length == 0) {
      getLog().info("String_Node_Str");
    }
    final List<String> copiedPaths=newArrayList();
    final boolean copyWholeDir=includes.isEmpty() && excludes.isEmpty() && resource.getTargetPath() != null;
    final String targetPath=resource.getTargetPath() == null ? "String_Node_Str" : resource.getTargetPath();
    if (copyWholeDir) {
      final Path destPath=Paths.get(destination,targetPath);
      getLog().info(String.format("String_Node_Str",source,destPath));
      Files.createDirectories(destPath);
      FileUtils.copyDirectoryStructure(source,destPath.toFile());
      copiedPaths.add(separatorsToUnix(targetPath));
    }
 else {
      for (      final String included : includedFiles) {
        final Path sourcePath=Paths.get(resource.getDirectory()).resolve(included);
        final Path destPath=Paths.get(destination,targetPath).resolve(included);
        getLog().info(String.format("String_Node_Str",sourcePath,destPath));
        Files.createDirectories(destPath.getParent());
        Files.copy(sourcePath,destPath,StandardCopyOption.REPLACE_EXISTING,StandardCopyOption.COPY_ATTRIBUTES);
        copiedPaths.add(separatorsToUnix(Paths.get(targetPath).resolve(included).toString()));
      }
    }
    Collections.sort(copiedPaths);
    allCopiedPaths.addAll(copiedPaths);
  }
  return allCopiedPaths;
}