Program: 40305
Project: 40305
Buggy source:
/** 
 * Figure out what a classpath entry means and add it to the appropriate set of modules
 */
private void resolveClasspathEntry(IClasspathEntry entry,Loader loader,boolean includeSource,boolean cpeFromMainProject) 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,includeSource,false);
  }
 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)) {
      List<Module> s=MapUtil.findOrCreateList(modules,loader);
      s.add(file.isDirectory() ? (Module)new BinaryDirectoryTreeModule(file) : (Module)new JarFileModule(j));
    }
  }
 else   if (e.getEntryKind() == IClasspathEntry.CPE_SOURCE) {
    if (includeSource) {
      List<Module> s=MapUtil.findOrCreateList(modules,Loader.APPLICATION);
      s.add(new EclipseSourceDirectoryTreeModule(e.getPath()));
    }
 else     if (e.getOutputLocation() != null) {
      File output=makeAbsolute(e.getOutputLocation()).toFile();
      List<Module> s=MapUtil.findOrCreateList(modules,cpeFromMainProject ? Loader.APPLICATION : 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);
        if (isPluginProject(javaProject)) {
          resolvePluginClassPath(javaProject.getProject(),includeSource);
        }
        resolveClasspathEntries(javaProject.getRawClasspath(),loader,scopeType == AnalysisScopeType.SOURCE_FOR_PROJ_AND_LINKED_PROJS ? includeSource : false,false);
        File output=makeAbsolute(javaProject.getOutputLocation()).toFile();
        List<Module> s=MapUtil.findOrCreateList(modules,loader);
        if (!includeSource) {
          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
 */
private void resolveClasspathEntry(IClasspathEntry entry,Loader loader,boolean includeSource,boolean cpeFromMainProject) 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,includeSource,false);
  }
 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)) {
      List<Module> s=MapUtil.findOrCreateList(modules,loader);
      s.add(file.isDirectory() ? (Module)new BinaryDirectoryTreeModule(file) : (Module)new JarFileModule(j));
    }
  }
 else   if (e.getEntryKind() == IClasspathEntry.CPE_SOURCE) {
    if (includeSource) {
      List<Module> s=MapUtil.findOrCreateList(modules,Loader.APPLICATION);
      s.add(new EclipseSourceDirectoryTreeModule(e.getPath()));
    }
 else     if (e.getOutputLocation() != null) {
      File output=makeAbsolute(e.getOutputLocation()).toFile();
      List<Module> s=MapUtil.findOrCreateList(modules,cpeFromMainProject ? Loader.APPLICATION : 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);
        if (isPluginProject(javaProject)) {
          resolvePluginClassPath(javaProject.getProject(),includeSource);
        }
        resolveClasspathEntries(javaProject.getRawClasspath(),loader,scopeType == AnalysisScopeType.SOURCE_FOR_PROJ_AND_LINKED_PROJS ? includeSource : false,false);
        File output=makeAbsolute(javaProject.getOutputLocation()).toFile();
        List<Module> s=MapUtil.findOrCreateList(modules,loader);
        if (!includeSource) {
          if (output.exists()) {
            s.add(new BinaryDirectoryTreeModule(output));
          }
        }
      }
    }
 catch (    CoreException e1) {
      e1.printStackTrace();
      Assertions.UNREACHABLE();
    }
  }
 else {
    throw new RuntimeException("String_Node_Str" + e);
  }
}