Program: 54643
Project: 54643
Buggy source:
/** 
 * Pull in types implicitly referenced through rebind answers.
 */
protected String[] doFindAdditionalTypesUsingRebinds(TreeLogger logger,CompilationUnitDeclaration cud){
  Set<String> dependentTypeNames=new HashSet<String>();
  FindDeferredBindingSitesVisitor v=new FindDeferredBindingSitesVisitor();
  cud.traverse(v,cud.scope);
  Map<String,DeferredBindingSite> requestedTypes=v.getSites();
  for (  String reqType : requestedTypes.keySet()) {
    DeferredBindingSite site=requestedTypes.get(reqType);
    try {
      String[] resultTypes=rebindPermOracle.getAllPossibleRebindAnswers(logger,reqType);
      for (int i=0; i < resultTypes.length; ++i) {
        String typeName=resultTypes[i];
        ReferenceBinding type=resolvePossiblyNestedType(typeName);
        if (type == null) {
          FindDeferredBindingSitesVisitor.reportRebindProblem(site,"String_Node_Str" + typeName + "String_Node_Str");
          continue;
        }
        if (!type.isClass()) {
          FindDeferredBindingSitesVisitor.reportRebindProblem(site,"String_Node_Str" + typeName + "String_Node_Str");
          continue;
        }
        if (type.isAbstract()) {
          FindDeferredBindingSitesVisitor.reportRebindProblem(site,"String_Node_Str" + typeName + "String_Node_Str");
          continue;
        }
        if (type.isNestedType() && !type.isStatic()) {
          FindDeferredBindingSitesVisitor.reportRebindProblem(site,"String_Node_Str" + typeName + "String_Node_Str");
          continue;
        }
        if (type.isLocalType()) {
          FindDeferredBindingSitesVisitor.reportRebindProblem(site,"String_Node_Str" + typeName + "String_Node_Str");
          continue;
        }
        MethodBinding noArgCtor=type.getExactMethod("String_Node_Str".toCharArray(),TypeBinding.NO_PARAMETERS,cud.scope);
        if (noArgCtor == null) {
          FindDeferredBindingSitesVisitor.reportRebindProblem(site,"String_Node_Str" + typeName + "String_Node_Str");
          continue;
        }
        dependentTypeNames.add(typeName);
      }
      Util.addAll(dependentTypeNames,resultTypes);
    }
 catch (    UnableToCompleteException e) {
      FindDeferredBindingSitesVisitor.reportRebindProblem(site,"String_Node_Str" + reqType + "String_Node_Str");
    }
  }
  return dependentTypeNames.toArray(Empty.STRINGS);
}

Fixed version (ground truth):
/** 
 * Pull in types implicitly referenced through rebind answers.
 */
protected String[] doFindAdditionalTypesUsingRebinds(TreeLogger logger,CompilationUnitDeclaration cud){
  Set<String> dependentTypeNames=new HashSet<String>();
  FindDeferredBindingSitesVisitor v=new FindDeferredBindingSitesVisitor();
  cud.traverse(v,cud.scope);
  Map<String,DeferredBindingSite> requestedTypes=v.getSites();
  for (  String reqType : requestedTypes.keySet()) {
    DeferredBindingSite site=requestedTypes.get(reqType);
    try {
      String[] resultTypes=rebindPermOracle.getAllPossibleRebindAnswers(logger,reqType);
      for (int i=0; i < resultTypes.length; ++i) {
        String typeName=resultTypes[i];
        ReferenceBinding type=resolvePossiblyNestedType(typeName);
        if (type == null) {
          FindDeferredBindingSitesVisitor.reportRebindProblem(site,"String_Node_Str" + typeName + "String_Node_Str");
          continue;
        }
        if (!type.isClass()) {
          FindDeferredBindingSitesVisitor.reportRebindProblem(site,"String_Node_Str" + typeName + "String_Node_Str");
          continue;
        }
        if (type.isAbstract()) {
          FindDeferredBindingSitesVisitor.reportRebindProblem(site,"String_Node_Str" + typeName + "String_Node_Str");
          continue;
        }
        if (type.isNestedType() && !type.isStatic()) {
          FindDeferredBindingSitesVisitor.reportRebindProblem(site,"String_Node_Str" + typeName + "String_Node_Str");
          continue;
        }
        if (type.isLocalType()) {
          FindDeferredBindingSitesVisitor.reportRebindProblem(site,"String_Node_Str" + typeName + "String_Node_Str");
          continue;
        }
        MethodBinding noArgCtor=type.getExactMethod("String_Node_Str".toCharArray(),TypeBinding.NO_PARAMETERS,cud.scope);
        if (noArgCtor == null) {
          FindDeferredBindingSitesVisitor.reportRebindProblem(site,"String_Node_Str" + typeName + "String_Node_Str");
          continue;
        }
        dependentTypeNames.add(typeName);
      }
      Collections.addAll(dependentTypeNames,resultTypes);
    }
 catch (    UnableToCompleteException e) {
      FindDeferredBindingSitesVisitor.reportRebindProblem(site,"String_Node_Str" + reqType + "String_Node_Str");
    }
  }
  return dependentTypeNames.toArray(Empty.STRINGS);
}