Program: 66270
Project: 66270
Buggy source:
/** 
 * Process class level annotations only. It is assumed that a call to init()  has been made prior to calling this method. After the types created via  this method have been modified (if necessary) postBuildTypeInfo and  processJavaClasses should be called to finish processing.
 * @param javaClasses
 * @return
 */
public Map<String,TypeInfo> preBuildTypeInfo(JavaClass[] javaClasses){
  for (  JavaClass javaClass : javaClasses) {
    if (javaClass == null || !shouldGenerateTypeInfo(javaClass) || isXmlRegistry(javaClass) || javaClass.isArray()) {
      continue;
    }
    TypeInfo info=typeInfo.get(javaClass.getQualifiedName());
    if (info != null) {
      if (info.isPreBuilt()) {
        continue;
      }
    }
    if (javaClass.isEnum()) {
      info=new EnumTypeInfo(helper);
    }
 else {
      info=new TypeInfo(helper);
    }
    info.setPreBuilt(true);
    if (helper.isAnnotationPresent(javaClass,XmlTransient.class)) {
      info.setXmlTransient(true);
    }
    if (helper.isAnnotationPresent(javaClass,XmlInlineBinaryData.class)) {
      info.setInlineBinaryData(true);
    }
    processXmlRootElement(javaClass,info);
    processXmlSeeAlso(javaClass,info);
    NamespaceInfo packageNamespace=getNamespaceInfoForPackage(javaClass);
    preProcessXmlType(javaClass,info,packageNamespace);
    preProcessXmlAccessorType(javaClass,info,packageNamespace);
    preProcessXmlAccessorOrder(javaClass,info,packageNamespace);
    processPackageLevelAdapters(javaClass,info);
    processClassLevelAdapters(javaClass,info);
    preProcessCustomizer(javaClass,info);
    processSchemaTypes(javaClass,info);
    if (helper.isAnnotationPresent(javaClass,XmlClassExtractor.class)) {
      XmlClassExtractor classExtractor=(XmlClassExtractor)helper.getAnnotation(javaClass,XmlClassExtractor.class);
      info.setClassExtractorName(classExtractor.value().getName());
    }
    typeInfoClasses.add(javaClass);
    typeInfo.put(javaClass.getQualifiedName(),info);
  }
  return typeInfo;
}

Fixed version (ground truth):
/** 
 * Process class level annotations only. It is assumed that a call to init()  has been made prior to calling this method. After the types created via  this method have been modified (if necessary) postBuildTypeInfo and  processJavaClasses should be called to finish processing.
 * @param javaClasses
 * @return
 */
public Map<String,TypeInfo> preBuildTypeInfo(JavaClass[] javaClasses){
  for (  JavaClass javaClass : javaClasses) {
    if (javaClass == null || !shouldGenerateTypeInfo(javaClass) || isXmlRegistry(javaClass) || javaClass.isArray()) {
      continue;
    }
    TypeInfo info=typeInfo.get(javaClass.getQualifiedName());
    if (info != null) {
      if (info.isPreBuilt()) {
        continue;
      }
    }
    if (javaClass.isEnum()) {
      info=new EnumTypeInfo(helper);
    }
 else {
      info=new TypeInfo(helper);
    }
    info.setPreBuilt(true);
    if (helper.isAnnotationPresent(javaClass,XmlTransient.class)) {
      info.setXmlTransient(true);
    }
    if (helper.isAnnotationPresent(javaClass,XmlInlineBinaryData.class)) {
      info.setInlineBinaryData(true);
    }
    processXmlRootElement(javaClass,info);
    processXmlSeeAlso(javaClass,info);
    NamespaceInfo packageNamespace=getNamespaceInfoForPackage(javaClass);
    preProcessXmlType(javaClass,info,packageNamespace);
    preProcessXmlAccessorType(javaClass,info,packageNamespace);
    preProcessXmlAccessorOrder(javaClass,info,packageNamespace);
    processPackageLevelAdapters(javaClass,info);
    processClassLevelAdapters(javaClass,info);
    preProcessCustomizer(javaClass,info);
    processSchemaTypes(javaClass,info);
    if (helper.isAnnotationPresent(javaClass,XmlClassExtractor.class)) {
      XmlClassExtractor classExtractor=(XmlClassExtractor)helper.getAnnotation(javaClass,XmlClassExtractor.class);
      info.setClassExtractorName(classExtractor.value().getName());
    }
    if (helper.isAnnotationPresent(javaClass,XmlProperties.class)) {
      XmlProperties xmlProperties=(XmlProperties)helper.getAnnotation(javaClass,XmlProperties.class);
      Map<Object,Object> propertiesMap=createUserPropertiesMap(xmlProperties.value());
      info.setUserProperties(propertiesMap);
    }
 else     if (helper.isAnnotationPresent(javaClass,XmlProperty.class)) {
      XmlProperty xmlProperty=(XmlProperty)helper.getAnnotation(javaClass,XmlProperty.class);
      Map<Object,Object> propertiesMap=createUserPropertiesMap(new XmlProperty[]{xmlProperty});
      info.setUserProperties(propertiesMap);
    }
    typeInfoClasses.add(javaClass);
    typeInfo.put(javaClass.getQualifiedName(),info);
  }
  return typeInfo;
}