Program: 66221
Project: 66221
Buggy source:
private Class generateWrapperClassAndDescriptor(TypeInfo type,QName next,ElementDeclaration nextElement,String nextClassName,String attributeTypeName){
  String namespaceUri=null;
  if (next != null) {
    namespaceUri=next.getNamespaceURI();
    if (namespaceUri == null || namespaceUri.equals("String_Node_Str")) {
      namespaceUri="String_Node_Str";
    }
  }
  TypeMappingInfo tmi=nextElement.getTypeMappingInfo();
  Class generatedClass=null;
  if (tmi != null) {
    generatedClass=CompilerHelper.getExisitingGeneratedClass(tmi,typeMappingInfoToGeneratedClasses,typeMappingInfoToAdapterClasses,helper.getClassLoader());
    if (generatedClass == null) {
      generatedClass=this.generateWrapperClass(WRAPPER_CLASS + wrapperCounter++,attributeTypeName,nextElement.isList(),next);
    }
    typeMappingInfoToGeneratedClasses.put(tmi,generatedClass);
  }
 else {
    generatedClass=this.generateWrapperClass(WRAPPER_CLASS + wrapperCounter++,attributeTypeName,nextElement.isList(),next);
  }
  this.qNamesToGeneratedClasses.put(next,generatedClass);
  try {
    Class declaredClass=PrivilegedAccessHelper.getClassForName(nextClassName,false,helper.getClassLoader());
    this.qNamesToDeclaredClasses.put(next,declaredClass);
  }
 catch (  Exception e) {
  }
  XMLDescriptor desc=(XMLDescriptor)project.getDescriptor(generatedClass);
  if (desc == null) {
    desc=new XMLDescriptor();
    desc.setJavaClass(generatedClass);
    if (nextElement.isList()) {
      XMLCompositeDirectCollectionMapping mapping=new XMLCompositeDirectCollectionMapping();
      mapping.setAttributeName("String_Node_Str");
      mapping.setXPath("String_Node_Str");
      mapping.setUsesSingleNode(true);
      mapping.setReuseContainer(true);
      if (type != null && type.isEnumerationType()) {
        mapping.setValueConverter(buildJAXBEnumTypeConverter(mapping,(EnumTypeInfo)type));
      }
 else {
        try {
          Class fieldElementClass=PrivilegedAccessHelper.getClassForName(nextClassName,false,helper.getClassLoader());
          mapping.setFieldElementClass(fieldElementClass);
        }
 catch (        ClassNotFoundException e) {
        }
      }
      if (nextClassName.equals("String_Node_Str") || nextClassName.equals("String_Node_Str")) {
        ((XMLField)mapping.getField()).setSchemaType(XMLConstants.BASE_64_BINARY_QNAME);
      }
 else       if (nextClassName.equals("String_Node_Str")) {
        ((XMLField)mapping.getField()).setSchemaType(XMLConstants.QNAME_QNAME);
      }
      desc.addMapping(mapping);
    }
 else {
      if (nextElement.getJavaTypeName().equals(OBJECT_CLASS_NAME)) {
        XMLCompositeObjectMapping mapping=new XMLCompositeObjectMapping();
        mapping.setAttributeName("String_Node_Str");
        mapping.setSetMethodName("String_Node_Str");
        mapping.setGetMethodName("String_Node_Str");
        mapping.setKeepAsElementPolicy(UnmarshalKeepAsElementPolicy.KEEP_UNKNOWN_AS_ELEMENT);
        mapping.setXPath("String_Node_Str");
        ((XMLField)mapping.getField()).setIsTypedTextField(true);
        ((XMLField)mapping.getField()).setSchemaType(XMLConstants.ANY_TYPE_QNAME);
        desc.addMapping(mapping);
      }
 else       if (areEquals(nextElement.getJavaType(),ClassConstants.ABYTE) || areEquals(nextElement.getJavaType(),ClassConstants.APBYTE) || areEquals(nextElement.getJavaType(),"String_Node_Str")|| areEquals(nextElement.getJavaType(),"String_Node_Str")|| areEquals(nextElement.getJavaType(),"String_Node_Str")) {
        XMLBinaryDataMapping mapping=new XMLBinaryDataMapping();
        mapping.setAttributeName("String_Node_Str");
        mapping.setXPath("String_Node_Str");
        ((XMLField)mapping.getField()).setSchemaType(XMLConstants.BASE_64_BINARY_QNAME);
        mapping.setSetMethodName("String_Node_Str");
        mapping.setGetMethodName("String_Node_Str");
        Class attributeClassification=org.eclipse.persistence.internal.helper.Helper.getClassFromClasseName(attributeTypeName,getClass().getClassLoader());
        mapping.setAttributeClassification(attributeClassification);
        mapping.setShouldInlineBinaryData(false);
        if (nextElement.getTypeMappingInfo() != null) {
          mapping.setSwaRef(nextElement.isXmlAttachmentRef());
          mapping.setMimeType(nextElement.getXmlMimeType());
        }
        desc.addMapping(mapping);
      }
 else {
        XMLDirectMapping mapping=new XMLDirectMapping();
        mapping.setAttributeName("String_Node_Str");
        mapping.setXPath("String_Node_Str");
        mapping.setSetMethodName("String_Node_Str");
        mapping.setGetMethodName("String_Node_Str");
        if (nextElement.getDefaultValue() != null) {
          mapping.setNullValue(nextElement.getDefaultValue());
          mapping.getNullPolicy().setNullRepresentedByXsiNil(true);
        }
        if (helper.isBuiltInJavaType(nextElement.getJavaType())) {
          Class attributeClassification=null;
          if (nextElement.getJavaType().isPrimitive()) {
            attributeClassification=XMLConversionManager.getDefaultManager().convertClassNameToClass(attributeTypeName);
          }
 else {
            attributeClassification=org.eclipse.persistence.internal.helper.Helper.getClassFromClasseName(attributeTypeName,getClass().getClassLoader());
          }
          mapping.setAttributeClassification(attributeClassification);
        }
        IsSetNullPolicy nullPolicy=new IsSetNullPolicy("String_Node_Str",false,true,XMLNullRepresentationType.ABSENT_NODE);
        mapping.setNullPolicy(nullPolicy);
        if (type != null && type.isEnumerationType()) {
          mapping.setConverter(buildJAXBEnumTypeConverter(mapping,(EnumTypeInfo)type));
        }
        if (nextClassName.equals("String_Node_Str") || nextClassName.equals("String_Node_Str")) {
          ((XMLField)mapping.getField()).setSchemaType(XMLConstants.BASE_64_BINARY_QNAME);
        }
 else         if (nextClassName.equals("String_Node_Str")) {
          ((XMLField)mapping.getField()).setSchemaType(XMLConstants.QNAME_QNAME);
        }
        if (nextElement.getJavaTypeAdapterClass() != null) {
          mapping.setConverter(new XMLJavaTypeConverter(nextElement.getJavaTypeAdapterClass()));
        }
        desc.addMapping(mapping);
      }
    }
    if (next != null) {
      NamespaceInfo info=getNamespaceInfoForURI(namespaceUri);
      if (info != null) {
        NamespaceResolver resolver=info.getNamespaceResolverForDescriptor();
        String prefix=resolver.resolveNamespaceURI(namespaceUri);
        desc.setNamespaceResolver(resolver);
        desc.setDefaultRootElement("String_Node_Str");
        desc.addRootElement(getQualifiedString(prefix,next.getLocalPart()));
      }
 else {
        if (namespaceUri.equals("String_Node_Str")) {
          desc.setDefaultRootElement(next.getLocalPart());
        }
 else {
          NamespaceResolver resolver=new NamespaceResolver();
          String prefix=getPrefixForNamespace(namespaceUri,resolver,null);
          desc.setNamespaceResolver(resolver);
          desc.setDefaultRootElement("String_Node_Str");
          desc.addRootElement(getQualifiedString(prefix,next.getLocalPart()));
        }
      }
    }
    project.addDescriptor(desc);
  }
  return generatedClass;
}

Fixed version (ground truth):
private Class generateWrapperClassAndDescriptor(TypeInfo type,QName next,ElementDeclaration nextElement,String nextClassName,String attributeTypeName){
  String namespaceUri=null;
  if (next != null) {
    namespaceUri=next.getNamespaceURI();
    if (namespaceUri == null || namespaceUri.equals("String_Node_Str")) {
      namespaceUri="String_Node_Str";
    }
  }
  TypeMappingInfo tmi=nextElement.getTypeMappingInfo();
  Class generatedClass=null;
  JaxbClassLoader loader=(JaxbClassLoader)helper.getClassLoader();
  if (tmi != null) {
    generatedClass=CompilerHelper.getExisitingGeneratedClass(tmi,typeMappingInfoToGeneratedClasses,typeMappingInfoToAdapterClasses,helper.getClassLoader());
    if (generatedClass == null) {
      generatedClass=this.generateWrapperClass(loader.nextAvailableGeneratedClassName(),attributeTypeName,nextElement.isList(),next);
    }
    typeMappingInfoToGeneratedClasses.put(tmi,generatedClass);
  }
 else {
    generatedClass=this.generateWrapperClass(loader.nextAvailableGeneratedClassName(),attributeTypeName,nextElement.isList(),next);
  }
  this.qNamesToGeneratedClasses.put(next,generatedClass);
  try {
    Class declaredClass=PrivilegedAccessHelper.getClassForName(nextClassName,false,helper.getClassLoader());
    this.qNamesToDeclaredClasses.put(next,declaredClass);
  }
 catch (  Exception e) {
  }
  XMLDescriptor desc=(XMLDescriptor)project.getDescriptor(generatedClass);
  if (desc == null) {
    desc=new XMLDescriptor();
    desc.setJavaClass(generatedClass);
    if (nextElement.isList()) {
      XMLCompositeDirectCollectionMapping mapping=new XMLCompositeDirectCollectionMapping();
      mapping.setAttributeName("String_Node_Str");
      mapping.setXPath("String_Node_Str");
      mapping.setUsesSingleNode(true);
      mapping.setReuseContainer(true);
      if (type != null && type.isEnumerationType()) {
        mapping.setValueConverter(buildJAXBEnumTypeConverter(mapping,(EnumTypeInfo)type));
      }
 else {
        try {
          Class fieldElementClass=PrivilegedAccessHelper.getClassForName(nextClassName,false,helper.getClassLoader());
          mapping.setFieldElementClass(fieldElementClass);
        }
 catch (        ClassNotFoundException e) {
        }
      }
      if (nextClassName.equals("String_Node_Str") || nextClassName.equals("String_Node_Str")) {
        ((XMLField)mapping.getField()).setSchemaType(XMLConstants.BASE_64_BINARY_QNAME);
      }
 else       if (nextClassName.equals("String_Node_Str")) {
        ((XMLField)mapping.getField()).setSchemaType(XMLConstants.QNAME_QNAME);
      }
      desc.addMapping(mapping);
    }
 else {
      if (nextElement.getJavaTypeName().equals(OBJECT_CLASS_NAME)) {
        XMLCompositeObjectMapping mapping=new XMLCompositeObjectMapping();
        mapping.setAttributeName("String_Node_Str");
        mapping.setSetMethodName("String_Node_Str");
        mapping.setGetMethodName("String_Node_Str");
        mapping.setKeepAsElementPolicy(UnmarshalKeepAsElementPolicy.KEEP_UNKNOWN_AS_ELEMENT);
        mapping.setXPath("String_Node_Str");
        ((XMLField)mapping.getField()).setIsTypedTextField(true);
        ((XMLField)mapping.getField()).setSchemaType(XMLConstants.ANY_TYPE_QNAME);
        desc.addMapping(mapping);
      }
 else       if (areEquals(nextElement.getJavaType(),ClassConstants.ABYTE) || areEquals(nextElement.getJavaType(),ClassConstants.APBYTE) || areEquals(nextElement.getJavaType(),"String_Node_Str")|| areEquals(nextElement.getJavaType(),"String_Node_Str")|| areEquals(nextElement.getJavaType(),"String_Node_Str")) {
        XMLBinaryDataMapping mapping=new XMLBinaryDataMapping();
        mapping.setAttributeName("String_Node_Str");
        mapping.setXPath("String_Node_Str");
        ((XMLField)mapping.getField()).setSchemaType(XMLConstants.BASE_64_BINARY_QNAME);
        mapping.setSetMethodName("String_Node_Str");
        mapping.setGetMethodName("String_Node_Str");
        Class attributeClassification=org.eclipse.persistence.internal.helper.Helper.getClassFromClasseName(attributeTypeName,getClass().getClassLoader());
        mapping.setAttributeClassification(attributeClassification);
        mapping.setShouldInlineBinaryData(false);
        if (nextElement.getTypeMappingInfo() != null) {
          mapping.setSwaRef(nextElement.isXmlAttachmentRef());
          mapping.setMimeType(nextElement.getXmlMimeType());
        }
        desc.addMapping(mapping);
      }
 else {
        XMLDirectMapping mapping=new XMLDirectMapping();
        mapping.setAttributeName("String_Node_Str");
        mapping.setXPath("String_Node_Str");
        mapping.setSetMethodName("String_Node_Str");
        mapping.setGetMethodName("String_Node_Str");
        if (nextElement.getDefaultValue() != null) {
          mapping.setNullValue(nextElement.getDefaultValue());
          mapping.getNullPolicy().setNullRepresentedByXsiNil(true);
        }
        if (helper.isBuiltInJavaType(nextElement.getJavaType())) {
          Class attributeClassification=null;
          if (nextElement.getJavaType().isPrimitive()) {
            attributeClassification=XMLConversionManager.getDefaultManager().convertClassNameToClass(attributeTypeName);
          }
 else {
            attributeClassification=org.eclipse.persistence.internal.helper.Helper.getClassFromClasseName(attributeTypeName,getClass().getClassLoader());
          }
          mapping.setAttributeClassification(attributeClassification);
        }
        IsSetNullPolicy nullPolicy=new IsSetNullPolicy("String_Node_Str",false,true,XMLNullRepresentationType.ABSENT_NODE);
        mapping.setNullPolicy(nullPolicy);
        if (type != null && type.isEnumerationType()) {
          mapping.setConverter(buildJAXBEnumTypeConverter(mapping,(EnumTypeInfo)type));
        }
        if (nextClassName.equals("String_Node_Str") || nextClassName.equals("String_Node_Str")) {
          ((XMLField)mapping.getField()).setSchemaType(XMLConstants.BASE_64_BINARY_QNAME);
        }
 else         if (nextClassName.equals("String_Node_Str")) {
          ((XMLField)mapping.getField()).setSchemaType(XMLConstants.QNAME_QNAME);
        }
        if (nextElement.getJavaTypeAdapterClass() != null) {
          mapping.setConverter(new XMLJavaTypeConverter(nextElement.getJavaTypeAdapterClass()));
        }
        desc.addMapping(mapping);
      }
    }
    if (next != null) {
      NamespaceInfo info=getNamespaceInfoForURI(namespaceUri);
      if (info != null) {
        NamespaceResolver resolver=info.getNamespaceResolverForDescriptor();
        String prefix=resolver.resolveNamespaceURI(namespaceUri);
        desc.setNamespaceResolver(resolver);
        desc.setDefaultRootElement("String_Node_Str");
        desc.addRootElement(getQualifiedString(prefix,next.getLocalPart()));
      }
 else {
        if (namespaceUri.equals("String_Node_Str")) {
          desc.setDefaultRootElement(next.getLocalPart());
        }
 else {
          NamespaceResolver resolver=new NamespaceResolver();
          String prefix=getPrefixForNamespace(namespaceUri,resolver,null);
          desc.setNamespaceResolver(resolver);
          desc.setDefaultRootElement("String_Node_Str");
          desc.addRootElement(getQualifiedString(prefix,next.getLocalPart()));
        }
      }
    }
    project.addDescriptor(desc);
  }
  return generatedClass;
}