Program: 88721
Project: 88721
Buggy source:
/** 
 * Given a class name and class-path, returns an input stream for the given class. 
 */
public InputStream getInputStreamOf(String classPath,String className) throws ClassNotFoundException {
  List locations=null;
  if (classPath == previousCP || previousCP.equals(classPath)) {
    locations=previousLocations;
  }
 else {
    previousCP=classPath;
    locations=new ArrayList();
    int sepIndex;
    boolean absolutePath;
    if (classPath == null) {
      classPath=System.getProperty("String_Node_Str") + pathSeparator + System.getProperty("String_Node_Str")+ fileSeparator+ "String_Node_Str"+ fileSeparator+ "String_Node_Str";
    }
    String userDir=System.getProperty("String_Node_Str");
    for (boolean done=false; !done; ) {
      if (classPath.indexOf(fileSeparator) == 0 || (isRunningUnderBraindeadOS && classPath.length() >= 2 && classPath.charAt(1) == ':'))       absolutePath=true;
 else       absolutePath=false;
      sepIndex=classPath.indexOf(pathSeparator);
      String candidate=null;
      if (sepIndex == -1) {
        candidate=classPath;
        done=true;
      }
 else       candidate=classPath.substring(0,sepIndex);
      if (candidate.startsWith("String_Node_Str")) {
        if (candidate.startsWith("String_Node_Str" + System.getProperty("String_Node_Str") + fileSeparator))         candidate="String_Node_Str" + fileSeparator + candidate.substring(candidate.indexOf(fileSeparator));
        if (!candidate.startsWith("String_Node_Str" + fileSeparator))         throw new RuntimeException("String_Node_Str");
        candidate=System.getProperty("String_Node_Str") + fileSeparator + candidate.substring(2);
      }
 else       if (!absolutePath)       candidate=userDir + fileSeparator + candidate;
      if (isArchive(candidate)) {
        addArchive(candidate);
      }
 else {
        locations.add(candidate);
      }
      classPath=classPath.substring(sepIndex + 1);
    }
    previousLocations=locations;
  }
  setLocationsFound(locations);
  InputStream res=null;
{
    List jimple=new SingletonList(JimpleInputRep.v());
    List java=new SingletonList(JavaInputRep.v());
    List clss=new SingletonList(ClassInputRep.v());
    String javaClassName=className;
    if (className.indexOf("String_Node_Str") != -1) {
      javaClassName=className.substring(0,className.indexOf("String_Node_Str"));
    }
 else     if (sourceToClassMap != null) {
      if (sourceToClassMap.get(javaClassName) != null) {
        javaClassName=(String)sourceToClassMap.get(javaClassName);
      }
    }
switch (Options.v().src_prec()) {
case Options.src_prec_class:
      if ((res=getFileInputStream(locations,clss,className)) != null)       return res;
    if ((res=getFileInputStream(locations,jimple,className)) != null)     return res;
  if ((res=getFileInputStream(locations,java,javaClassName)) != null)   return res;
break;
case Options.src_prec_java:
if ((res=getFileInputStream(locations,java,javaClassName)) != null) return res;
if ((res=getFileInputStream(locations,clss,className)) != null) return res;
if ((res=getFileInputStream(locations,jimple,className)) != null) return res;
break;
case Options.src_prec_jimple:
if ((res=getFileInputStream(locations,jimple,className)) != null) return res;
if ((res=getFileInputStream(locations,clss,className)) != null) return res;
if ((res=getFileInputStream(locations,java,javaClassName)) != null) return res;
break;
default :
throw new RuntimeException("String_Node_Str");
}
throw new ClassNotFoundException();
}
}

Fixed version (ground truth):
/** 
 * Given a class name and class-path, returns an input stream for the given class. 
 */
public InputStream getInputStreamOf(String classPath,String className) throws ClassNotFoundException {
  List locations=null;
  if (classPath == previousCP || previousCP.equals(classPath)) {
    locations=previousLocations;
  }
 else {
    previousCP=classPath;
    locations=new ArrayList();
    int sepIndex;
    boolean absolutePath;
    if (classPath == null) {
      classPath=System.getProperty("String_Node_Str") + pathSeparator + System.getProperty("String_Node_Str")+ fileSeparator+ "String_Node_Str"+ fileSeparator+ "String_Node_Str";
    }
    String userDir=System.getProperty("String_Node_Str");
    for (boolean done=false; !done; ) {
      if (classPath.indexOf(fileSeparator) == 0 || (isRunningUnderBraindeadOS && classPath.length() >= 2 && classPath.charAt(1) == ':'))       absolutePath=true;
 else       absolutePath=false;
      sepIndex=classPath.indexOf(pathSeparator);
      String candidate=null;
      if (sepIndex == -1) {
        candidate=classPath;
        done=true;
      }
 else       candidate=classPath.substring(0,sepIndex);
      if (candidate.startsWith("String_Node_Str")) {
        if (candidate.startsWith("String_Node_Str" + System.getProperty("String_Node_Str") + fileSeparator))         candidate="String_Node_Str" + fileSeparator + candidate.substring(candidate.indexOf(fileSeparator));
        if (!candidate.startsWith("String_Node_Str" + fileSeparator))         throw new RuntimeException("String_Node_Str");
        candidate=System.getProperty("String_Node_Str") + fileSeparator + candidate.substring(2);
      }
 else       if (!absolutePath)       candidate=userDir + fileSeparator + candidate;
      if (isArchive(candidate)) {
        addArchive(candidate);
      }
 else {
        locations.add(candidate);
      }
      classPath=classPath.substring(sepIndex + 1);
    }
    previousLocations=locations;
  }
  setLocationsFound(locations);
  InputStream res=null;
{
    List jimple=new SingletonList(JimpleInputRep.v());
    List java=new SingletonList(JavaInputRep.v());
    List clss=new SingletonList(ClassInputRep.v());
    String javaClassName=className;
    if (className.indexOf("String_Node_Str") != -1) {
      javaClassName=className.substring(0,className.indexOf("String_Node_Str"));
    }
    if (sourceToClassMap != null) {
      if (sourceToClassMap.get(javaClassName) != null) {
        javaClassName=(String)sourceToClassMap.get(javaClassName);
      }
    }
switch (Options.v().src_prec()) {
case Options.src_prec_class:
      if ((res=getFileInputStream(locations,clss,className)) != null)       return res;
    if ((res=getFileInputStream(locations,jimple,className)) != null)     return res;
  if ((res=getFileInputStream(locations,java,javaClassName)) != null)   return res;
break;
case Options.src_prec_java:
if ((res=getFileInputStream(locations,java,javaClassName)) != null) return res;
if ((res=getFileInputStream(locations,clss,className)) != null) return res;
if ((res=getFileInputStream(locations,jimple,className)) != null) return res;
break;
case Options.src_prec_jimple:
if ((res=getFileInputStream(locations,jimple,className)) != null) return res;
if ((res=getFileInputStream(locations,clss,className)) != null) return res;
if ((res=getFileInputStream(locations,java,javaClassName)) != null) return res;
break;
default :
throw new RuntimeException("String_Node_Str");
}
throw new ClassNotFoundException();
}
}