Program: 88783
Project: 88783
Buggy source:
public void run(IAction action){
  super.run(action);
  setDoNotContinue(false);
  if (getSootSelection().getType() == SootSelection.CLASSFILE_SELECTED_TYPE) {
    IClassFile cf=getSootSelection().getClassFile();
    IPackageFragmentRoot pfr=(IPackageFragmentRoot)cf.getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT);
    IPackageFragment pf=(IPackageFragment)cf.getAncestor(IJavaElement.PACKAGE_FRAGMENT);
    setClasspathAppend(platform_location + pfr.getPath().toOSString());
    if (pf.isDefaultPackage()) {
      setToProcess(removeFileExt(cf.getElementName()));
    }
 else {
      setToProcess(pf.getElementName() + "String_Node_Str" + removeFileExt(cf.getElementName()));
    }
  }
 else   if (getSootSelection().getType() == SootSelection.FILE_SELECTED_TYPE) {
    IFile file=getSootSelection().getFile();
    if (file.getFileExtension().compareTo("String_Node_Str") == 0) {
      setClasspathAppend(platform_location + file.getParent().getFullPath().toOSString());
      setIsSrcPrec(true);
      setSrcPrec(LaunchCommands.JIMPLE_IN);
      setToProcess(removeFileExt(file.getName()));
    }
 else     if (file.getFileExtension().compareTo("String_Node_Str") == 0) {
      try {
        handleClassFile(file);
      }
 catch (      Exception e) {
        System.out.println("String_Node_Str");
      }
    }
  }
 else   if (getSootSelection().getType() == SootSelection.CU_SELECTED_TYPE) {
    ICompilationUnit cu=getSootSelection().getJavaFile();
    IPackageFragmentRoot pfr=(IPackageFragmentRoot)cu.getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT);
    IPackageFragment pf=(IPackageFragment)cu.getAncestor(IJavaElement.PACKAGE_FRAGMENT);
    try {
      IProject proj=cu.getJavaProject().getProject();
      IFolder output=proj.getFolder(cu.getJavaProject().getOutputLocation().lastSegment());
      IPackageFragment pkf=(IPackageFragment)cu.getAncestor(IJavaElement.PACKAGE_FRAGMENT);
      IFile exists=null;
      if (pkf.isDefaultPackage()) {
        exists=output.getFile(removeFileExt(cu.getElementName()) + "String_Node_Str");
      }
 else {
        IFolder pkg=output.getFolder(pf.getElementName());
        exists=pkg.getFile(removeFileExt(cu.getElementName()) + "String_Node_Str");
      }
      if (!exists.exists()) {
        window=SootPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow();
        MessageDialog noClassFound=new MessageDialog(window.getShell(),"String_Node_Str",null,"String_Node_Str",0,new String[]{"String_Node_Str"},0);
        noClassFound.open();
        setDoNotContinue(true);
      }
      setClasspathAppend(platform_location + cu.getJavaProject().getOutputLocation().toOSString());
    }
 catch (    CoreException e) {
    }
    if (pf.isDefaultPackage()) {
      setToProcess(removeFileExt(cu.getElementName()));
    }
 else {
      setToProcess(pf.getElementName() + "String_Node_Str" + removeFileExt(cu.getElementName()));
    }
  }
}

Fixed version (ground truth):
public void run(IAction action){
  super.run(action);
  setDoNotContinue(false);
  if (getSootSelection().getType() == SootSelection.CLASSFILE_SELECTED_TYPE) {
    IClassFile cf=getSootSelection().getClassFile();
    IPackageFragmentRoot pfr=(IPackageFragmentRoot)cf.getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT);
    IPackageFragment pf=(IPackageFragment)cf.getAncestor(IJavaElement.PACKAGE_FRAGMENT);
    setClasspathAppend(platform_location + pfr.getPath().toOSString());
    if (pf.isDefaultPackage()) {
      setToProcess(removeFileExt(cf.getElementName()));
    }
 else {
      setToProcess(pf.getElementName() + "String_Node_Str" + removeFileExt(cf.getElementName()));
    }
  }
 else   if (getSootSelection().getType() == SootSelection.FILE_SELECTED_TYPE) {
    IFile file=getSootSelection().getFile();
    if (file.getFileExtension().compareTo("String_Node_Str") == 0) {
      setClasspathAppend(platform_location + file.getParent().getFullPath().toOSString());
      setIsSrcPrec(true);
      setSrcPrec(LaunchCommands.JIMPLE_IN);
      setToProcess(removeFileExt(file.getName()));
    }
 else     if (file.getFileExtension().compareTo("String_Node_Str") == 0) {
      try {
        handleClassFile(file);
      }
 catch (      Exception e) {
        System.out.println("String_Node_Str");
      }
    }
  }
 else   if (getSootSelection().getType() == SootSelection.CU_SELECTED_TYPE) {
    ICompilationUnit cu=getSootSelection().getJavaFile();
    IPackageFragmentRoot pfr=(IPackageFragmentRoot)cu.getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT);
    IPackageFragment pf=(IPackageFragment)cu.getAncestor(IJavaElement.PACKAGE_FRAGMENT);
    try {
      IProject proj=cu.getJavaProject().getProject();
      IFolder output=proj.getFolder(cu.getJavaProject().getOutputLocation().lastSegment());
      IPackageFragment pkf=(IPackageFragment)cu.getAncestor(IJavaElement.PACKAGE_FRAGMENT);
      IFile exists=null;
      if (pkf.isDefaultPackage()) {
        exists=output.getFile(removeFileExt(cu.getElementName()) + "String_Node_Str");
        System.out.println("String_Node_Str" + exists.getLocation().toOSString());
      }
 else {
        IFolder pkg=output.getFolder(dotsToSlashes(pf.getElementName()));
        System.out.println("String_Node_Str" + pkg.getLocation().toOSString());
        System.out.println("String_Node_Str" + pf.getPath().toOSString());
        if (pkg.exists()) {
          System.out.println("String_Node_Str");
        }
        exists=pkg.getFile(removeFileExt(cu.getElementName()) + "String_Node_Str");
        System.out.println("String_Node_Str" + exists.getLocation().toOSString());
      }
      if (!exists.exists()) {
        window=SootPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow();
        MessageDialog noClassFound=new MessageDialog(window.getShell(),"String_Node_Str",null,"String_Node_Str",0,new String[]{"String_Node_Str"},0);
        noClassFound.open();
        setDoNotContinue(true);
      }
      setClasspathAppend(platform_location + cu.getJavaProject().getOutputLocation().toOSString());
    }
 catch (    CoreException e) {
    }
    if (pf.isDefaultPackage()) {
      setToProcess(removeFileExt(cu.getElementName()));
    }
 else {
      setToProcess(pf.getElementName() + "String_Node_Str" + removeFileExt(cu.getElementName()));
    }
  }
}