Program: 85292
Project: 85292
Buggy source:
/** 
 * Hierarchy - we know the hierarchy of the class and that's it requires at least Hierarchy for all supertypes and enclosing types.
 */
private void bringToHierarchy(SootClass sc){
  if (sc.resolvingLevel() >= SootClass.HIERARCHY)   return;
  if (Options.v().debug_resolver())   G.v().out.println("String_Node_Str" + sc);
  sc.setResolvingLevel(SootClass.HIERARCHY);
  String className=sc.getName();
  ClassSource is=SourceLocator.v().getClassSource(className);
  boolean modelAsPhantomRef=is == null;
  if (modelAsPhantomRef) {
    if (!Scene.v().allowsPhantomRefs()) {
      String suffix="String_Node_Str";
      if (className.equals("String_Node_Str")) {
        suffix="String_Node_Str" + "String_Node_Str" + "String_Node_Str";
      }
 else       if (className.equals("String_Node_Str")) {
        suffix="String_Node_Str" + "String_Node_Str" + "String_Node_Str";
      }
      throw new SootClassNotFoundException("String_Node_Str" + className + "String_Node_Str"+ suffix);
    }
 else {
      G.v().out.println("String_Node_Str" + className + "String_Node_Str");
      sc.setPhantomClass();
      classToTypesSignature.put(sc,Collections.<Type>emptyList());
      classToTypesHierarchy.put(sc,Collections.<Type>emptyList());
    }
  }
 else {
    Dependencies dependencies=is.resolve(sc);
    if (!dependencies.typesToSignature.isEmpty())     classToTypesSignature.put(sc,dependencies.typesToSignature);
    if (!dependencies.typesToHierarchy.isEmpty())     classToTypesHierarchy.put(sc,dependencies.typesToHierarchy);
  }
  reResolveHierarchy(sc);
}

Fixed version (ground truth):
/** 
 * Hierarchy - we know the hierarchy of the class and that's it requires at least Hierarchy for all supertypes and enclosing types.
 */
private void bringToHierarchy(SootClass sc){
  if (sc.resolvingLevel() >= SootClass.HIERARCHY)   return;
  if (Options.v().debug_resolver())   G.v().out.println("String_Node_Str" + sc);
  sc.setResolvingLevel(SootClass.HIERARCHY);
  String className=sc.getName();
  ClassSource is=SourceLocator.v().getClassSource(className);
  try {
    boolean modelAsPhantomRef=is == null;
    if (modelAsPhantomRef) {
      if (!Scene.v().allowsPhantomRefs()) {
        String suffix="String_Node_Str";
        if (className.equals("String_Node_Str")) {
          suffix="String_Node_Str" + "String_Node_Str" + "String_Node_Str";
        }
 else         if (className.equals("String_Node_Str")) {
          suffix="String_Node_Str" + "String_Node_Str" + "String_Node_Str";
        }
        throw new SootClassNotFoundException("String_Node_Str" + className + "String_Node_Str"+ suffix);
      }
 else {
        G.v().out.println("String_Node_Str" + className + "String_Node_Str");
        sc.setPhantomClass();
        classToTypesSignature.put(sc,Collections.<Type>emptyList());
        classToTypesHierarchy.put(sc,Collections.<Type>emptyList());
      }
    }
 else {
      Dependencies dependencies=is.resolve(sc);
      if (!dependencies.typesToSignature.isEmpty())       classToTypesSignature.put(sc,dependencies.typesToSignature);
      if (!dependencies.typesToHierarchy.isEmpty())       classToTypesHierarchy.put(sc,dependencies.typesToHierarchy);
    }
  }
  finally {
    if (is != null)     is.close();
  }
  reResolveHierarchy(sc);
}