Program: 140554
Project: 140554
Buggy source:
/** 
 * Copy the files from srcPath to destination folder.
 * @param srcPath The path name in which to look. The path is always relative to the root of this bundle and maybegin with &quot;/&quot;. A path value of &quot;/&quot; indicates the root of this bundle.
 * @param srcPath
 * @param recurse If <code>true</code>, recurse into subdirectories(contains directories). Otherwise only returnentries from the specified path.
 * @param desFolder
 * @throws IOException
 * @throws CoreException
 */
@SuppressWarnings("String_Node_Str") private void copyFilesToFolder(String srcPath,boolean recurse,IFolder desFolder) throws IOException, CoreException {
  Enumeration paths=null;
  paths=CorePlugin.getDefault().getBundle().getEntryPaths(srcPath);
  if (paths == null) {
    return;
  }
  while (paths.hasMoreElements()) {
    String nextElement=(String)paths.nextElement();
    String currentPath="String_Node_Str" + nextElement;
    URL resourceURL=CorePlugin.getDefault().getBundle().getEntry(currentPath);
    URL fileURL=null;
    File file=null;
    try {
      fileURL=FileLocator.toFileURL(resourceURL);
      file=new File(fileURL.getFile());
    }
 catch (    IOException e) {
      e.printStackTrace();
    }
    if (file.isDirectory() && recurse) {
      if (file.getName().startsWith("String_Node_Str")) {
        continue;
      }
      IFolder folder=desFolder.getFolder(file.getName());
      if (!folder.exists()) {
        folder.create(false,true,null);
      }
      copyFilesToFolder(currentPath,recurse,folder);
      continue;
    }
    String fileName=new Path(fileURL.getPath()).lastSegment();
    InputStream openStream=null;
    openStream=fileURL.openStream();
    copyFileToFolder(openStream,fileName,desFolder);
  }
}

Fixed version (ground truth):
/** 
 * Copy the files from srcPath to destination folder.
 * @param srcPath The path name in which to look. The path is always relative to the root of this bundle and maybegin with &quot;/&quot;. A path value of &quot;/&quot; indicates the root of this bundle.
 * @param srcPath
 * @param recurse If <code>true</code>, recurse into subdirectories(contains directories). Otherwise only returnentries from the specified path.
 * @param desFolder
 * @throws IOException
 * @throws CoreException
 */
@SuppressWarnings("String_Node_Str") private void copyFilesToFolder(String srcPath,boolean recurse,IFolder desFolder) throws IOException, CoreException {
  Enumeration paths=null;
  paths=CorePlugin.getDefault().getBundle().getEntryPaths(srcPath);
  if (paths == null) {
    return;
  }
  while (paths.hasMoreElements()) {
    String nextElement=(String)paths.nextElement();
    String currentPath="String_Node_Str" + nextElement;
    URL resourceURL=CorePlugin.getDefault().getBundle().getEntry(currentPath);
    URL fileURL=null;
    File file=null;
    try {
      fileURL=FileLocator.toFileURL(resourceURL);
      file=new File(fileURL.getFile());
    }
 catch (    IOException e) {
      e.printStackTrace();
    }
    if (file.isDirectory() && recurse) {
      if (file.getName().startsWith("String_Node_Str")) {
        continue;
      }
      IFolder folder=desFolder.getFolder(file.getName());
      if (!folder.exists()) {
        folder.create(true,true,null);
      }
      copyFilesToFolder(currentPath,recurse,folder);
      continue;
    }
    String fileName=new Path(fileURL.getPath()).lastSegment();
    InputStream openStream=null;
    openStream=fileURL.openStream();
    copyFileToFolder(openStream,fileName,desFolder);
  }
}