Program: 40543
Project: 40543
Buggy source:
/** 
 * Figure out what a classpath entry means and add it to the appropriate set of modules
 */
@SuppressWarnings("String_Node_Str") private void resolveClasspathEntry(IClasspathEntry entry,Loader loader,String fileExtension) throws JavaModelException, IOException {
  IClasspathEntry e=JavaCore.getResolvedClasspathEntry(entry);
  if (alreadyResolved.contains(e)) {
    return;
  }
 else {
    alreadyResolved.add(e);
  }
  if (e.getEntryKind() == IClasspathEntry.CPE_CONTAINER) {
    IClasspathContainer cont=JavaCore.getClasspathContainer(entry.getPath(),project);
    IClasspathEntry[] entries=cont.getClasspathEntries();
    resolveClasspathEntries(entries,cont.getKind() == IClasspathContainer.K_APPLICATION ? loader : Loader.PRIMORDIAL,fileExtension);
  }
 else   if (e.getEntryKind() == IClasspathEntry.CPE_LIBRARY) {
    File file=makeAbsolute(e.getPath()).toFile();
    JarFile j;
    try {
      j=new JarFile(file);
    }
 catch (    ZipException z) {
      return;
    }
    if (isPrimordialJarFile(j)) {
      Set<Module> s=MapUtil.findOrCreateSet(binaryModules,loader);
      s.add(file.isDirectory() ? (Module)new BinaryDirectoryTreeModule(file) : (Module)new JarFileModule(j));
    }
  }
 else   if (e.getEntryKind() == IClasspathEntry.CPE_SOURCE) {
    File file=makeAbsolute(e.getPath()).toFile();
    Set<Module> s=MapUtil.findOrCreateSet(sourceModules,Loader.SOURCE);
    s.add(new SourceDirectoryTreeModule(file,fileExtension));
    if (e.getOutputLocation() != null) {
      File output=makeAbsolute(e.getOutputLocation()).toFile();
      s=MapUtil.findOrCreateSet(binaryModules,loader);
      s.add(new BinaryDirectoryTreeModule(output));
    }
  }
 else   if (e.getEntryKind() == IClasspathEntry.CPE_PROJECT) {
    IPath projectPath=makeAbsolute(e.getPath());
    IWorkspace ws=ResourcesPlugin.getWorkspace();
    IWorkspaceRoot root=ws.getRoot();
    IProject project=(IProject)root.getContainerForLocation(projectPath);
    try {
      if (project.hasNature(JavaCore.NATURE_ID)) {
        IJavaProject javaProject=JavaCore.create(project);
        resolveClasspathEntries(javaProject.getRawClasspath(),loader,fileExtension);
        File output=makeAbsolute(javaProject.getOutputLocation()).toFile();
        Set<Module> s=MapUtil.findOrCreateSet(binaryModules,loader);
        s.add(new BinaryDirectoryTreeModule(output));
      }
    }
 catch (    CoreException e1) {
      e1.printStackTrace();
      Assertions.UNREACHABLE();
    }
  }
 else {
    throw new RuntimeException("String_Node_Str" + e);
  }
}

Fixed version (ground truth):
/** 
 * Figure out what a classpath entry means and add it to the appropriate set of modules
 */
@SuppressWarnings("String_Node_Str") private void resolveClasspathEntry(IClasspathEntry entry,Loader loader,String fileExtension) throws JavaModelException, IOException {
  IClasspathEntry e=JavaCore.getResolvedClasspathEntry(entry);
  if (alreadyResolved.contains(e)) {
    return;
  }
 else {
    alreadyResolved.add(e);
  }
  if (e.getEntryKind() == IClasspathEntry.CPE_CONTAINER) {
    IClasspathContainer cont=JavaCore.getClasspathContainer(entry.getPath(),project);
    IClasspathEntry[] entries=cont.getClasspathEntries();
    resolveClasspathEntries(entries,cont.getKind() == IClasspathContainer.K_APPLICATION ? loader : Loader.PRIMORDIAL,fileExtension);
  }
 else   if (e.getEntryKind() == IClasspathEntry.CPE_LIBRARY) {
    File file=makeAbsolute(e.getPath()).toFile();
    JarFile j;
    try {
      j=new JarFile(file);
    }
 catch (    ZipException z) {
      return;
    }
catch (    FileNotFoundException z) {
      return;
    }
    if (isPrimordialJarFile(j)) {
      Set<Module> s=MapUtil.findOrCreateSet(binaryModules,loader);
      s.add(file.isDirectory() ? (Module)new BinaryDirectoryTreeModule(file) : (Module)new JarFileModule(j));
    }
  }
 else   if (e.getEntryKind() == IClasspathEntry.CPE_SOURCE) {
    File file=makeAbsolute(e.getPath()).toFile();
    Set<Module> s=MapUtil.findOrCreateSet(sourceModules,Loader.SOURCE);
    s.add(new SourceDirectoryTreeModule(file,fileExtension));
    if (e.getOutputLocation() != null) {
      File output=makeAbsolute(e.getOutputLocation()).toFile();
      s=MapUtil.findOrCreateSet(binaryModules,loader);
      s.add(new BinaryDirectoryTreeModule(output));
    }
  }
 else   if (e.getEntryKind() == IClasspathEntry.CPE_PROJECT) {
    IPath projectPath=makeAbsolute(e.getPath());
    IWorkspace ws=ResourcesPlugin.getWorkspace();
    IWorkspaceRoot root=ws.getRoot();
    IProject project=(IProject)root.getContainerForLocation(projectPath);
    try {
      if (project.hasNature(JavaCore.NATURE_ID)) {
        IJavaProject javaProject=JavaCore.create(project);
        resolveClasspathEntries(javaProject.getRawClasspath(),loader,fileExtension);
        File output=makeAbsolute(javaProject.getOutputLocation()).toFile();
        Set<Module> s=MapUtil.findOrCreateSet(binaryModules,loader);
        s.add(new BinaryDirectoryTreeModule(output));
      }
    }
 catch (    CoreException e1) {
      e1.printStackTrace();
      Assertions.UNREACHABLE();
    }
  }
 else {
    throw new RuntimeException("String_Node_Str" + e);
  }
}