Program: 138563
Project: 138563
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") public void copyFilesToFolder(Plugin plugin,String srcPath,boolean recurse,IFolder desFolder,String suffix) throws IOException, CoreException {
  if (plugin == null) {
    return;
  }
  Enumeration paths=null;
  paths=plugin.getBundle().getEntryPaths(srcPath);
  if (paths == null) {
    return;
  }
  while (paths.hasMoreElements()) {
    String nextElement=(String)paths.nextElement();
    String currentPath="String_Node_Str" + nextElement;
    URL resourceURL=plugin.getBundle().getEntry(currentPath);
    URL fileURL=null;
    File file=null;
    try {
      fileURL=FileLocator.toFileURL(resourceURL);
      file=new File(fileURL.getFile());
      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(plugin,currentPath,recurse,folder,suffix);
        continue;
      }
      if (suffix != null && !file.getName().endsWith(suffix)) {
        continue;
      }
      String fileName=new Path(fileURL.getPath()).lastSegment();
      InputStream openStream=null;
      openStream=fileURL.openStream();
      copyFileToFolder(openStream,fileName,desFolder);
    }
 catch (    IOException e) {
      log.error(e,e);
    }
  }
}

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") public void copyFilesToFolder(Plugin plugin,String srcPath,boolean recurse,IFolder desFolder,String suffix,boolean... isImportItem) throws IOException, CoreException {
  if (plugin == null) {
    return;
  }
  Enumeration paths=null;
  paths=plugin.getBundle().getEntryPaths(srcPath);
  if (paths == null) {
    return;
  }
  while (paths.hasMoreElements()) {
    String nextElement=(String)paths.nextElement();
    String currentPath="String_Node_Str" + nextElement;
    URL resourceURL=plugin.getBundle().getEntry(currentPath);
    URL fileURL=null;
    File file=null;
    try {
      fileURL=FileLocator.toFileURL(resourceURL);
      file=new File(fileURL.getFile());
      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(plugin,currentPath,recurse,folder,suffix,isImportItem);
        continue;
      }
      if (suffix != null && !file.getName().endsWith(suffix)) {
        continue;
      }
      String fileName=new Path(fileURL.getPath()).lastSegment();
      InputStream openStream=null;
      openStream=fileURL.openStream();
      copyFileToFolder(openStream,fileName,desFolder,isImportItem);
    }
 catch (    IOException e) {
      log.error(e,e);
    }
  }
}