Program: 67462
Project: 67462
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 (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>();
  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();
}