Program: 67669
Project: 67669
Buggy source:
public void processClassesAndProperties(JavaClass[] classes){
  typeInfoClasses=new ArrayList<JavaClass>();
  typeInfo=new HashMap<String,TypeInfo>();
  typeInfoByQName=new HashMap<QName,TypeInfo>();
  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     if (!helper.isAnnotationPresent(javaClass,XmlTransient.class)) {
      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 (helper.isAnnotationPresent(javaClass,XmlRegistry.class)) {
      this.processObjectFactory(javaClass,classesToProcess);
    }
 else     if (!helper.isAnnotationPresent(javaClass,XmlTransient.class)) {
      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();
}