Program: 82900
Project: 82900
Buggy source:
@Override public void process(CompilationUnitDeclaration cud,int index){
  long processBeginNanos=System.nanoTime();
  if (!cachePolicy.shouldProcess(cud)) {
    jdtProcessNanos+=System.nanoTime() - processBeginNanos;
    return;
  }
{
    this.parser.getMethodBodies(cud);
    if (cud.scope != null) {
      cud.scope.faultInTypes();
    }
    if (cud.scope != null) {
      cud.scope.verifyMethods(lookupEnvironment.methodVerifier());
    }
    cud.resolve();
    cud.analyseCode();
    if (doGenerateBytes) {
      cud.generateCode();
    }
    if (options.produceReferenceInfo && cud.scope != null) {
      cud.scope.storeDependencyInfo();
    }
    cud.compilationResult.totalUnitsKnown=totalUnits;
  }
  ICompilationUnit cu=cud.compilationResult.compilationUnit;
  String loc=String.valueOf(cu.getFileName());
  TreeLogger logger=threadLogger.branch(TreeLogger.SPAM,"String_Node_Str" + loc,null);
  String[] typeNames=doFindAdditionalTypesUsingJsni(logger,cud);
  for (int i=0; i < typeNames.length; i++) {
    String typeName=typeNames[i];
    final String msg="String_Node_Str" + typeName + "String_Node_Str";
    logger.log(TreeLogger.SPAM,msg,null);
    char[][] chars=CharOperation.splitOn('.',typeName.toCharArray());
    lookupEnvironment.getType(chars);
  }
  typeNames=doFindAdditionalTypesUsingRebinds(logger,cud);
  for (int i=0; i < typeNames.length; i++) {
    String typeName=typeNames[i];
    final String msg="String_Node_Str" + typeName + "String_Node_Str";
    logger.log(TreeLogger.SPAM,msg,null);
    resolvePossiblyNestedType(typeName);
  }
  if (cuds != null) {
    cuds.add(cud);
  }
  jdtProcessNanos+=System.nanoTime() - processBeginNanos;
}

Fixed version (ground truth):
@Override public void process(CompilationUnitDeclaration cud,int index){
  long processBeginNanos=System.nanoTime();
  if (!cachePolicy.shouldProcess(cud)) {
    jdtProcessNanos+=System.nanoTime() - processBeginNanos;
    return;
  }
{
    this.parser.getMethodBodies(cud);
    if (cud.scope != null) {
      cud.scope.faultInTypes();
    }
    if (cud.scope != null) {
      cud.scope.verifyMethods(lookupEnvironment.methodVerifier());
    }
    cud.resolve();
    cud.analyseCode();
    if (doGenerateBytes) {
      cud.generateCode();
    }
    if (options.produceReferenceInfo && cud.scope != null) {
      cud.scope.storeDependencyInfo();
    }
    cud.compilationResult.totalUnitsKnown=totalUnits;
  }
  ICompilationUnit cu=cud.compilationResult.compilationUnit;
  String loc=String.valueOf(cu.getFileName());
  TreeLogger logger=threadLogger.branch(TreeLogger.SPAM,"String_Node_Str" + loc,null);
  String[] typeNames=doFindAdditionalTypesUsingJsni(logger,cud);
  for (int i=0; i < typeNames.length; i++) {
    String typeName=typeNames[i];
    final String msg="String_Node_Str" + typeName + "String_Node_Str";
    logger.log(TreeLogger.SPAM,msg,null);
    resolvePossiblyNestedType(typeName);
  }
  typeNames=doFindAdditionalTypesUsingRebinds(logger,cud);
  for (int i=0; i < typeNames.length; i++) {
    String typeName=typeNames[i];
    final String msg="String_Node_Str" + typeName + "String_Node_Str";
    logger.log(TreeLogger.SPAM,msg,null);
    resolvePossiblyNestedType(typeName);
  }
  if (cuds != null) {
    cuds.add(cud);
  }
  jdtProcessNanos+=System.nanoTime() - processBeginNanos;
}