Program: 82959
Project: 82959
Buggy source:
public NameEnvironmentAnswer findType(char[][] compoundTypeName){
  String qname=CharOperation.toString(compoundTypeName);
  if (nameEnvironmentAnswerForTypeName.containsKey(qname)) {
    return (nameEnvironmentAnswerForTypeName.get(qname));
  }
  TreeLogger logger=threadLogger.branch(TreeLogger.SPAM,"String_Node_Str" + qname + "String_Node_Str",null);
  if (sourceOracle.isPackage(qname)) {
    logger.log(TreeLogger.SPAM,"String_Node_Str",null);
    return null;
  }
  ByteCode byteCode=doGetByteCodeFromCache(logger,qname);
  if (byteCode != null) {
    byte[] classBytes=byteCode.getBytes();
    char[] loc=byteCode.getLocation().toCharArray();
    try {
      logger.log(TreeLogger.SPAM,"String_Node_Str",null);
      ClassFileReader cfr=new ClassFileReader(classBytes,loc);
      NameEnvironmentAnswer out=new NameEnvironmentAnswer(cfr,null);
      nameEnvironmentAnswerForTypeName.put(qname,out);
      return out;
    }
 catch (    ClassFormatException e) {
      String msg="String_Node_Str" + qname + "String_Node_Str";
      compiler.problemReporter.abortDueToInternalError(msg);
      return null;
    }
  }
  int pos=qname.indexOf('$');
  if (pos >= 0) {
    qname=qname.substring(0,pos);
  }
  CompilationUnitProvider cup;
  try {
    cup=sourceOracle.findCompilationUnit(logger,qname);
    if (cup != null) {
      logger.log(TreeLogger.SPAM,"String_Node_Str" + cup.getLocation(),null);
      ICompilationUnitAdapter unit=new ICompilationUnitAdapter(cup);
      NameEnvironmentAnswer out=new NameEnvironmentAnswer(unit,null);
      nameEnvironmentAnswerForTypeName.put(qname,out);
      return out;
    }
 else {
      logger.log(TreeLogger.SPAM,"String_Node_Str",null);
      return null;
    }
  }
 catch (  UnableToCompleteException e) {
    String msg="String_Node_Str" + qname + "String_Node_Str";
    compiler.problemReporter.abortDueToInternalError(msg);
    return null;
  }
}

Fixed version (ground truth):
public NameEnvironmentAnswer findType(char[][] compoundTypeName){
  String qname=CharOperation.toString(compoundTypeName);
  if (nameEnvironmentAnswerForTypeName.containsKey(qname)) {
    return (nameEnvironmentAnswerForTypeName.get(qname));
  }
  TreeLogger logger=threadLogger.branch(TreeLogger.SPAM,"String_Node_Str" + qname + "String_Node_Str",null);
  if (sourceOracle.isPackage(qname)) {
    logger.log(TreeLogger.SPAM,"String_Node_Str",null);
    return null;
  }
  ByteCode byteCode=doGetByteCodeFromCache(logger,qname);
  if (byteCode != null) {
    byte[] classBytes=byteCode.getBytes();
    char[] loc=byteCode.getLocation().toCharArray();
    try {
      logger.log(TreeLogger.SPAM,"String_Node_Str",null);
      ClassFileReader cfr=new ClassFileReader(classBytes,loc);
      NameEnvironmentAnswer out=new NameEnvironmentAnswer(cfr,null);
      nameEnvironmentAnswerForTypeName.put(qname,out);
      return out;
    }
 catch (    ClassFormatException e) {
      String msg="String_Node_Str" + qname + "String_Node_Str";
      compiler.problemReporter.abortDueToInternalError(msg);
      return null;
    }
  }
  String className=qname;
  int pos=qname.indexOf('$');
  if (pos >= 0) {
    qname=qname.substring(0,pos);
  }
  CompilationUnitProvider cup;
  try {
    cup=sourceOracle.findCompilationUnit(logger,qname);
    if (cup != null) {
      logger.log(TreeLogger.SPAM,"String_Node_Str" + cup.getLocation(),null);
      ICompilationUnitAdapter unit=new ICompilationUnitAdapter(cup);
      NameEnvironmentAnswer out=new NameEnvironmentAnswer(unit,null);
      nameEnvironmentAnswerForTypeName.put(qname,out);
      return out;
    }
 else {
      ClassLoader contextClassLoader=Thread.currentThread().getContextClassLoader();
      if (isBinaryType(contextClassLoader,className)) {
        URL resourceURL=contextClassLoader.getResource(className.replace('.','/') + "String_Node_Str");
        if (resourceURL != null) {
          byte[] classBytes=Util.readURLAsBytes(resourceURL);
          ClassFileReader cfr;
          try {
            cfr=new ClassFileReader(classBytes,null);
            NameEnvironmentAnswer out=new NameEnvironmentAnswer(cfr,null);
            nameEnvironmentAnswerForTypeName.put(qname,out);
            return out;
          }
 catch (          ClassFormatException e) {
          }
        }
      }
      logger.log(TreeLogger.SPAM,"String_Node_Str",null);
      return null;
    }
  }
 catch (  UnableToCompleteException e) {
    String msg="String_Node_Str" + qname + "String_Node_Str";
    compiler.problemReporter.abortDueToInternalError(msg);
    return null;
  }
}