Program: 66195
Project: 66195
Buggy source:
/** 
 * XmlElement override will completely replace the existing values.
 * @param xmlElement
 * @param oldProperty
 * @param typeInfo
 * @param nsInfo
 * @return
 */
private Property processXmlElement(XmlElement xmlElement,Property oldProperty,TypeInfo typeInfo,NamespaceInfo nsInfo,JavaType javaType){
  resetProperty(oldProperty,typeInfo);
  if (xmlElement.getXmlMap() != null) {
    processXmlMap(xmlElement.getXmlMap(),oldProperty);
  }
  if (xmlElement.isXmlId()) {
    oldProperty.setIsXmlId(true);
    typeInfo.setIDProperty(oldProperty);
  }
 else {
    if (typeInfo.getIDProperty() != null && typeInfo.getIDProperty().getPropertyName().equals(oldProperty.getPropertyName())) {
      typeInfo.setIDProperty(null);
    }
  }
  oldProperty.setIsXmlIdRef(xmlElement.isXmlIdref());
  if (xmlElement.isXmlKey()) {
    typeInfo.addXmlKeyProperty(oldProperty);
  }
  oldProperty.setIsRequired(xmlElement.isRequired());
  oldProperty.setisInlineBinaryData(xmlElement.isXmlInlineBinaryData());
  oldProperty.setNillable(xmlElement.isNillable());
  if (xmlElement.getDefaultValue().equals("String_Node_Str")) {
    oldProperty.setDefaultValue(null);
  }
 else {
    oldProperty.setDefaultValue(xmlElement.getDefaultValue());
  }
  String name;
  String namespace;
  if (xmlElement.getXmlPath() != null) {
    oldProperty.setXmlPath(xmlElement.getXmlPath());
    name=getNameFromXPath(xmlElement.getXmlPath(),oldProperty.getPropertyName(),false);
    namespace=DEFAULT;
  }
 else {
    name=xmlElement.getName();
    namespace=xmlElement.getNamespace();
    if (xmlElement.getXmlElementWrapper() != null) {
      oldProperty.setXmlElementWrapper(xmlElement.getXmlElementWrapper());
    }
  }
  QName qName;
  if (name.equals(DEFAULT)) {
    name=oldProperty.getPropertyName();
  }
  if (namespace.equals(DEFAULT)) {
    if (nsInfo.isElementFormQualified()) {
      qName=new QName(nsInfo.getNamespace(),name);
    }
 else {
      qName=new QName(name);
    }
  }
 else {
    qName=new QName(namespace,name);
  }
  oldProperty.setSchemaName(qName);
  if (!xmlElement.getContainerType().equals(DEFAULT)) {
    setContainerType(oldProperty,xmlElement.getContainerType());
  }
  if (xmlElement.getType().equals("String_Node_Str")) {
    if (oldProperty.isXmlElementType()) {
      oldProperty.setType(oldProperty.getOriginalType());
    }
  }
 else   if (xmlElement.getXmlMap() != null) {
    getLogger().logWarning(JAXBMetadataLogger.INVALID_TYPE_ON_MAP,new Object[]{xmlElement.getName()});
  }
 else {
    JavaClass pType=jModelInput.getJavaModel().getClass(xmlElement.getType());
    if (aProcessor.isCollectionType(oldProperty.getType())) {
      oldProperty.setGenericType(pType);
    }
 else {
      oldProperty.setType(pType);
    }
    oldProperty.setHasXmlElementType(true);
    if (aProcessor.shouldGenerateTypeInfo(pType) && aProcessor.getTypeInfo().get(pType.getQualifiedName()) == null) {
      aProcessor.buildNewTypeInfo(new JavaClass[]{pType});
    }
  }
  if (xmlElement.getXmlJavaTypeAdapter() != null) {
    try {
      oldProperty.setXmlJavaTypeAdapter(xmlElement.getXmlJavaTypeAdapter());
    }
 catch (    JAXBException e) {
      throw JAXBException.invalidPropertyAdapterClass(xmlElement.getXmlJavaTypeAdapter().getValue(),xmlElement.getJavaAttribute(),javaType.getName());
    }
  }
  if (!oldProperty.isRequired()) {
    JavaClass ptype=oldProperty.getActualType();
    oldProperty.setIsRequired(ptype.isPrimitive() || ptype.isArray() && ptype.getComponentType().isPrimitive());
  }
  if (xmlElement.isSetXmlList()) {
    if (!aProcessor.isCollectionType(oldProperty) && !oldProperty.getType().isArray()) {
      throw JAXBException.invalidList(oldProperty.getPropertyName());
    }
    oldProperty.setIsXmlList(xmlElement.isXmlList());
  }
  if (xmlElement.getXmlMimeType() != null) {
    oldProperty.setMimeType(xmlElement.getXmlMimeType());
  }
  if (xmlElement.isXmlAttachmentRef()) {
    oldProperty.setIsSwaAttachmentRef(true);
    oldProperty.setSchemaType(XMLConstants.SWA_REF_QNAME);
  }
  if (xmlElement.getXmlSchemaType() != null) {
    oldProperty.setSchemaType(new QName(xmlElement.getXmlSchemaType().getNamespace(),xmlElement.getXmlSchemaType().getName()));
  }
  if (xmlElement.getXmlAccessMethods() != null) {
    oldProperty.setMethodProperty(true);
    oldProperty.setGetMethodName(xmlElement.getXmlAccessMethods().getGetMethod());
    oldProperty.setSetMethodName(xmlElement.getXmlAccessMethods().getSetMethod());
  }
  if (xmlElement.isSetReadOnly()) {
    oldProperty.setReadOnly(xmlElement.isReadOnly());
  }
  if (xmlElement.isSetWriteOnly()) {
    oldProperty.setWriteOnly(xmlElement.isWriteOnly());
  }
  if (xmlElement.isSetCdata()) {
    oldProperty.setCdata(xmlElement.isCdata());
  }
  if (xmlElement.getXmlAbstractNullPolicy() != null) {
    JAXBElement jaxbElt=xmlElement.getXmlAbstractNullPolicy();
    oldProperty.setNullPolicy((XmlAbstractNullPolicy)jaxbElt.getValue());
  }
  if (xmlElement.getXmlProperties() != null && xmlElement.getXmlProperties().getXmlProperty().size() > 0) {
    oldProperty.setUserProperties(createUserPropertyMap(xmlElement.getXmlProperties().getXmlProperty()));
  }
  return oldProperty;
}

Fixed version (ground truth):
/** 
 * XmlElement override will completely replace the existing values.
 * @param xmlElement
 * @param oldProperty
 * @param typeInfo
 * @param nsInfo
 * @return
 */
private Property processXmlElement(XmlElement xmlElement,Property oldProperty,TypeInfo typeInfo,NamespaceInfo nsInfo,JavaType javaType){
  resetProperty(oldProperty,typeInfo);
  if (xmlElement.getXmlMap() != null) {
    processXmlMap(xmlElement.getXmlMap(),oldProperty);
  }
  if (xmlElement.isXmlId()) {
    oldProperty.setIsXmlId(true);
    typeInfo.setIDProperty(oldProperty);
  }
 else {
    if (typeInfo.getIDProperty() != null && typeInfo.getIDProperty().getPropertyName().equals(oldProperty.getPropertyName())) {
      typeInfo.setIDProperty(null);
    }
  }
  oldProperty.setIsXmlIdRef(xmlElement.isXmlIdref());
  if (xmlElement.isXmlKey()) {
    typeInfo.addXmlKeyProperty(oldProperty);
  }
  oldProperty.setIsRequired(xmlElement.isRequired());
  oldProperty.setisInlineBinaryData(xmlElement.isXmlInlineBinaryData());
  oldProperty.setNillable(xmlElement.isNillable());
  if (xmlElement.getDefaultValue().equals("String_Node_Str")) {
    oldProperty.setDefaultValue(null);
  }
 else {
    oldProperty.setDefaultValue(xmlElement.getDefaultValue());
  }
  String name;
  String namespace;
  if (xmlElement.getXmlPath() != null) {
    oldProperty.setXmlPath(xmlElement.getXmlPath());
    name=getNameFromXPath(xmlElement.getXmlPath(),oldProperty.getPropertyName(),false);
    namespace=DEFAULT;
  }
 else {
    name=xmlElement.getName();
    namespace=xmlElement.getNamespace();
    if (xmlElement.getXmlElementWrapper() != null) {
      oldProperty.setXmlElementWrapper(xmlElement.getXmlElementWrapper());
    }
  }
  QName qName;
  if (name.equals(DEFAULT)) {
    name=oldProperty.getPropertyName();
  }
  if (namespace.equals(DEFAULT)) {
    if (nsInfo.isElementFormQualified()) {
      qName=new QName(nsInfo.getNamespace(),name);
    }
 else {
      qName=new QName(name);
    }
  }
 else {
    qName=new QName(namespace,name);
  }
  oldProperty.setSchemaName(qName);
  if (!xmlElement.getContainerType().equals(DEFAULT)) {
    setContainerType(oldProperty,xmlElement.getContainerType());
  }
  if (xmlElement.getType().equals("String_Node_Str")) {
    if (oldProperty.isXmlElementType()) {
      oldProperty.setType(oldProperty.getOriginalType());
    }
  }
 else   if (xmlElement.getXmlMap() != null) {
    getLogger().logWarning(JAXBMetadataLogger.INVALID_TYPE_ON_MAP,new Object[]{xmlElement.getName()});
  }
 else {
    JavaClass pType=jModelInput.getJavaModel().getClass(xmlElement.getType());
    if (aProcessor.isCollectionType(oldProperty.getType())) {
      oldProperty.setGenericType(pType);
    }
 else {
      oldProperty.setType(pType);
    }
    oldProperty.setHasXmlElementType(true);
    if (aProcessor.shouldGenerateTypeInfo(pType) && aProcessor.getTypeInfo().get(pType.getQualifiedName()) == null) {
      aProcessor.buildNewTypeInfo(new JavaClass[]{pType});
    }
  }
  reapplyPackageAndClassAdapters(oldProperty,typeInfo);
  if (xmlElement.getXmlJavaTypeAdapter() != null) {
    try {
      oldProperty.setXmlJavaTypeAdapter(xmlElement.getXmlJavaTypeAdapter());
    }
 catch (    JAXBException e) {
      throw JAXBException.invalidPropertyAdapterClass(xmlElement.getXmlJavaTypeAdapter().getValue(),xmlElement.getJavaAttribute(),javaType.getName());
    }
  }
  if (!oldProperty.isRequired()) {
    JavaClass ptype=oldProperty.getActualType();
    oldProperty.setIsRequired(ptype.isPrimitive() || ptype.isArray() && ptype.getComponentType().isPrimitive());
  }
  if (xmlElement.isSetXmlList()) {
    if (!aProcessor.isCollectionType(oldProperty) && !oldProperty.getType().isArray()) {
      throw JAXBException.invalidList(oldProperty.getPropertyName());
    }
    oldProperty.setIsXmlList(xmlElement.isXmlList());
  }
  if (xmlElement.getXmlMimeType() != null) {
    oldProperty.setMimeType(xmlElement.getXmlMimeType());
  }
  if (xmlElement.isXmlAttachmentRef()) {
    oldProperty.setIsSwaAttachmentRef(true);
    oldProperty.setSchemaType(XMLConstants.SWA_REF_QNAME);
  }
  if (xmlElement.getXmlSchemaType() != null) {
    oldProperty.setSchemaType(new QName(xmlElement.getXmlSchemaType().getNamespace(),xmlElement.getXmlSchemaType().getName()));
  }
  if (xmlElement.getXmlAccessMethods() != null) {
    oldProperty.setMethodProperty(true);
    oldProperty.setGetMethodName(xmlElement.getXmlAccessMethods().getGetMethod());
    oldProperty.setSetMethodName(xmlElement.getXmlAccessMethods().getSetMethod());
  }
  if (xmlElement.isSetReadOnly()) {
    oldProperty.setReadOnly(xmlElement.isReadOnly());
  }
  if (xmlElement.isSetWriteOnly()) {
    oldProperty.setWriteOnly(xmlElement.isWriteOnly());
  }
  if (xmlElement.isSetCdata()) {
    oldProperty.setCdata(xmlElement.isCdata());
  }
  if (xmlElement.getXmlAbstractNullPolicy() != null) {
    JAXBElement jaxbElt=xmlElement.getXmlAbstractNullPolicy();
    oldProperty.setNullPolicy((XmlAbstractNullPolicy)jaxbElt.getValue());
  }
  if (xmlElement.getXmlProperties() != null && xmlElement.getXmlProperties().getXmlProperty().size() > 0) {
    oldProperty.setUserProperties(createUserPropertyMap(xmlElement.getXmlProperties().getXmlProperty()));
  }
  return oldProperty;
}