Program: 67414
Project: 67414
Buggy source:
public void processClassesAndProperties(JavaClass[] classes){
  typeInfoClasses=new ArrayList<JavaClass>();
  typeInfo=new HashMap<String,TypeInfo>();
  typeQNames=new ArrayList<QName>();
  userDefinedSchemaTypes=new HashMap<String,QName>();
  packageToNamespaceMappings=new HashMap<String,NamespaceInfo>();
  this.factoryMethods=new HashMap<String,JavaMethod>();
  this.namespaceResolver=new NamespaceResolver();
  this.xmlRootElements=new HashMap<String,ElementDeclaration>();
  ArrayList<JavaClass> classesToProcess=new ArrayList<JavaClass>();
  for (  JavaClass javaClass : classes) {
    if (shouldGenerateTypeInfo(javaClass)) {
      if (helper.isAnnotationPresent(javaClass,XmlRegistry.class)) {
        this.processObjectFactory(javaClass,classesToProcess);
      }
 else {
        classesToProcess.add(javaClass);
        Class xmlSeeAlsoClass=null;
        Method valueMethod=null;
        try {
          xmlSeeAlsoClass=PrivilegedAccessHelper.getClassForName("String_Node_Str");
          valueMethod=PrivilegedAccessHelper.getDeclaredMethod(xmlSeeAlsoClass,"String_Node_Str",new Class[]{});
        }
 catch (        ClassNotFoundException ex) {
        }
catch (        NoSuchMethodException ex) {
        }
        if (xmlSeeAlsoClass != null && helper.isAnnotationPresent(javaClass,xmlSeeAlsoClass)) {
          Object seeAlso=helper.getAnnotation(javaClass,xmlSeeAlsoClass);
          Class[] values=null;
          try {
            values=(Class[])PrivilegedAccessHelper.invokeMethod(valueMethod,seeAlso,new Object[]{});
          }
 catch (          Exception ex) {
          }
          for (          Class next : values) {
            classesToProcess.add(helper.getJavaClass(next));
          }
        }
        for (Iterator<JavaClass> jClassIt=javaClass.getDeclaredClasses().iterator(); jClassIt.hasNext(); ) {
          JavaClass innerClass=jClassIt.next();
          if (shouldGenerateTypeInfo(innerClass)) {
            if (!(helper.isAnnotationPresent(innerClass,XmlTransient.class))) {
              classesToProcess.add(innerClass);
            }
          }
        }
      }
    }
  }
  updateGlobalElements(classesToProcess);
  for (  JavaClass javaClass : classesToProcess) {
    if (javaClass == null) {
      continue;
    }
    createTypeInfoFor(javaClass);
    JavaClass superClass=(JavaClass)javaClass.getSuperclass();
    if (shouldGenerateTypeInfo(superClass)) {
      createTypeInfoFor(superClass);
    }
  }
  checkForCallbackMethods();
}

Fixed version (ground truth):
public void processClassesAndProperties(JavaClass[] classes){
  typeInfoClasses=new ArrayList<JavaClass>();
  typeInfo=new HashMap<String,TypeInfo>();
  typeQNames=new ArrayList<QName>();
  userDefinedSchemaTypes=new HashMap<String,QName>();
  packageToNamespaceMappings=new HashMap<String,NamespaceInfo>();
  this.factoryMethods=new HashMap<String,JavaMethod>();
  this.namespaceResolver=new NamespaceResolver();
  this.xmlRootElements=new HashMap<String,ElementDeclaration>();
  xmlIdRefProps=new ArrayList<Property>();
  ArrayList<JavaClass> classesToProcess=new ArrayList<JavaClass>();
  for (  JavaClass javaClass : classes) {
    if (shouldGenerateTypeInfo(javaClass)) {
      if (helper.isAnnotationPresent(javaClass,XmlRegistry.class)) {
        this.processObjectFactory(javaClass,classesToProcess);
      }
 else {
        classesToProcess.add(javaClass);
        Class xmlSeeAlsoClass=null;
        Method valueMethod=null;
        try {
          xmlSeeAlsoClass=PrivilegedAccessHelper.getClassForName("String_Node_Str");
          valueMethod=PrivilegedAccessHelper.getDeclaredMethod(xmlSeeAlsoClass,"String_Node_Str",new Class[]{});
        }
 catch (        ClassNotFoundException ex) {
        }
catch (        NoSuchMethodException ex) {
        }
        if (xmlSeeAlsoClass != null && helper.isAnnotationPresent(javaClass,xmlSeeAlsoClass)) {
          Object seeAlso=helper.getAnnotation(javaClass,xmlSeeAlsoClass);
          Class[] values=null;
          try {
            values=(Class[])PrivilegedAccessHelper.invokeMethod(valueMethod,seeAlso,new Object[]{});
          }
 catch (          Exception ex) {
          }
          for (          Class next : values) {
            classesToProcess.add(helper.getJavaClass(next));
          }
        }
        for (Iterator<JavaClass> jClassIt=javaClass.getDeclaredClasses().iterator(); jClassIt.hasNext(); ) {
          JavaClass innerClass=jClassIt.next();
          if (shouldGenerateTypeInfo(innerClass)) {
            if (!(helper.isAnnotationPresent(innerClass,XmlTransient.class))) {
              classesToProcess.add(innerClass);
            }
          }
        }
      }
    }
  }
  updateGlobalElements(classesToProcess);
  for (  JavaClass javaClass : classesToProcess) {
    if (javaClass == null) {
      continue;
    }
    createTypeInfoFor(javaClass);
    JavaClass superClass=(JavaClass)javaClass.getSuperclass();
    if (shouldGenerateTypeInfo(superClass)) {
      createTypeInfoFor(superClass);
    }
  }
  checkForCallbackMethods();
  for (  Property property : xmlIdRefProps) {
    JavaClass typeClass=property.getType();
    if (typeClass.isArray()) {
      typeClass=typeClass.getComponentType();
    }
 else     if (isCollectionType(typeClass)) {
      typeClass=property.getGenericType();
    }
    TypeInfo tInfo=typeInfo.get(typeClass.getQualifiedName());
    if (tInfo != null && tInfo.getIDProperty() == null) {
      throw JAXBException.invalidIdRef(property.getPropertyName(),typeClass.getQualifiedName());
    }
  }
}