Program: 64558
Project: 64558
Buggy source:
private void processPropertyAnnotations(TypeInfo info,JavaClass cls,JavaHasAnnotations javaHasAnnotations,Property property){
  if (helper.isAnnotationPresent(javaHasAnnotations,XmlMixed.class)) {
    info.setMixed(true);
    property.setMixedContent(true);
    findAndProcessObjectFactory(cls);
  }
  if (helper.isAnnotationPresent(javaHasAnnotations,XmlContainerProperty.class)) {
    XmlContainerProperty container=(XmlContainerProperty)helper.getAnnotation(javaHasAnnotations,XmlContainerProperty.class);
    property.setInverseReferencePropertyName(container.value());
    property.setInverseReferencePropertyGetMethodName(container.getMethodName());
    property.setInverseReferencePropertySetMethodName(container.setMethodName());
  }
 else   if (helper.isAnnotationPresent(javaHasAnnotations,XmlInverseReference.class)) {
    XmlInverseReference inverseReference=(XmlInverseReference)helper.getAnnotation(javaHasAnnotations,XmlInverseReference.class);
    property.setInverseReferencePropertyName(inverseReference.mappedBy());
    TypeInfo targetInfo=this.getTypeInfo().get(property.getActualType().getName());
    if (targetInfo != null && targetInfo.getXmlAccessType() == XmlAccessType.PROPERTY) {
      String propName=property.getPropertyName();
      propName=Character.toUpperCase(propName.charAt(0)) + propName.substring(1);
      property.setInverseReferencePropertyGetMethodName(GET_STR + propName);
      property.setInverseReferencePropertySetMethodName(SET_STR + propName);
    }
    property.setInverseReference(true);
  }
  processXmlJavaTypeAdapter(property,info,cls);
  if (helper.isAnnotationPresent(property.getElement(),XmlAttachmentRef.class) && areEquals(property.getActualType(),JAVAX_ACTIVATION_DATAHANDLER)) {
    property.setIsSwaAttachmentRef(true);
    property.setSchemaType(XMLConstants.SWA_REF_QNAME);
  }
  processXmlElement(property,info);
  if (!(property.isSwaAttachmentRef()) && isMtomAttachment(property)) {
    property.setIsMtomAttachment(true);
    property.setSchemaType(XMLConstants.BASE_64_BINARY_QNAME);
  }
  if (helper.isAnnotationPresent(property.getElement(),XmlMimeType.class)) {
    property.setMimeType(((XmlMimeType)helper.getAnnotation(property.getElement(),XmlMimeType.class)).value());
  }
  if (helper.isAnnotationPresent(property.getElement(),XmlInlineBinaryData.class) || info.isBinaryDataToBeInlined()) {
    property.setisInlineBinaryData(true);
  }
  if (helper.isAnnotationPresent(property.getElement(),XmlSchemaType.class)) {
    XmlSchemaType schemaType=(XmlSchemaType)helper.getAnnotation(property.getElement(),XmlSchemaType.class);
    QName schemaTypeQname=new QName(schemaType.namespace(),schemaType.name());
    property.setSchemaType(schemaTypeQname);
  }
  if (helper.isAnnotationPresent(property.getElement(),XmlAttribute.class)) {
    property.setIsAttribute(true);
    property.setIsRequired(((XmlAttribute)helper.getAnnotation(property.getElement(),XmlAttribute.class)).required());
  }
  if (helper.isAnnotationPresent(property.getElement(),XmlAnyAttribute.class)) {
    if (info.isSetAnyAttributePropertyName() && !info.getAnyAttributePropertyName().equals(property.getPropertyName())) {
      throw org.eclipse.persistence.exceptions.JAXBException.multipleAnyAttributeMapping(cls.getName());
    }
    if (!isMapType(property.getType())) {
      throw org.eclipse.persistence.exceptions.JAXBException.anyAttributeOnNonMap(property.getPropertyName());
    }
    property.setIsAnyAttribute(true);
    info.setAnyAttributePropertyName(property.getPropertyName());
  }
  if (helper.isAnnotationPresent(property.getElement(),XmlElementWrapper.class)) {
    XmlElementWrapper wrapper=(XmlElementWrapper)helper.getAnnotation(property.getElement(),XmlElementWrapper.class);
    org.eclipse.persistence.jaxb.xmlmodel.XmlElementWrapper xmlEltWrapper=new org.eclipse.persistence.jaxb.xmlmodel.XmlElementWrapper();
    String wrapperName=wrapper.name();
    if (wrapperName.equals(XMLProcessor.DEFAULT)) {
      wrapperName=info.getXmlNameTransformer().transformElementName(property.getPropertyName());
    }
    xmlEltWrapper.setName(wrapperName);
    xmlEltWrapper.setNamespace(wrapper.namespace());
    xmlEltWrapper.setNillable(wrapper.nillable());
    xmlEltWrapper.setRequired(wrapper.required());
    property.setXmlElementWrapper(xmlEltWrapper);
  }
  if (helper.isAnnotationPresent(property.getElement(),XmlList.class)) {
    if (!isCollectionType(property) && !property.getType().isArray()) {
      throw JAXBException.invalidList(property.getPropertyName());
    }
    property.setIsXmlList(true);
  }
  if (helper.isAnnotationPresent(property.getElement(),XmlValue.class)) {
    property.setIsXmlValue(true);
    info.setXmlValueProperty(property);
  }
  if (helper.isAnnotationPresent(property.getElement(),XmlReadOnly.class)) {
    property.setReadOnly(true);
  }
  if (helper.isAnnotationPresent(property.getElement(),XmlWriteOnly.class)) {
    property.setWriteOnly(true);
  }
  if (helper.isAnnotationPresent(property.getElement(),XmlCDATA.class)) {
    property.setCdata(true);
  }
  if (helper.isAnnotationPresent(property.getElement(),XmlAccessMethods.class)) {
    XmlAccessMethods accessMethods=(XmlAccessMethods)helper.getAnnotation(property.getElement(),XmlAccessMethods.class);
    if (!(accessMethods.getMethodName().equals(EMPTY_STRING))) {
      property.setGetMethodName(accessMethods.getMethodName());
    }
    if (!(accessMethods.setMethodName().equals(EMPTY_STRING))) {
      property.setSetMethodName(accessMethods.setMethodName());
    }
    if (!(property.isMethodProperty())) {
      property.setMethodProperty(true);
    }
  }
  if (helper.isAnnotationPresent(property.getElement(),XmlProperties.class)) {
    XmlProperties xmlProperties=(XmlProperties)helper.getAnnotation(property.getElement(),XmlProperties.class);
    Map<Object,Object> propertiesMap=createUserPropertiesMap(xmlProperties.value());
    property.setUserProperties(propertiesMap);
  }
 else   if (helper.isAnnotationPresent(property.getElement(),XmlProperty.class)) {
    XmlProperty xmlProperty=(XmlProperty)helper.getAnnotation(property.getElement(),XmlProperty.class);
    Map<Object,Object> propertiesMap=createUserPropertiesMap(new XmlProperty[]{xmlProperty});
    property.setUserProperties(propertiesMap);
  }
  if (helper.isAnnotationPresent(property.getElement(),XmlKey.class)) {
    info.addXmlKeyProperty(property);
  }
  processXmlJoinNodes(property);
  processXmlNullPolicy(property);
  JavaHasAnnotations elem=property.getElement();
  if (helper.isAnnotationPresent(elem,XmlLocation.class) || helper.isAnnotationPresent(elem,CompilerHelper.XML_LOCATION_ANNOTATION_CLASS) || helper.isAnnotationPresent(elem,CompilerHelper.INTERNAL_XML_LOCATION_ANNOTATION_CLASS)) {
    if (!helper.getJavaClass(XMLConstants.LOCATOR_CLASS).isAssignableFrom(property.getType())) {
      throw JAXBException.invalidXmlLocation(property.getPropertyName(),property.getType().getName());
    }
    property.setXmlLocation(true);
  }
}

Fixed version (ground truth):
private void processPropertyAnnotations(TypeInfo info,JavaClass cls,JavaHasAnnotations javaHasAnnotations,Property property){
  if (helper.isAnnotationPresent(javaHasAnnotations,XmlMixed.class)) {
    info.setMixed(true);
    property.setMixedContent(true);
    findAndProcessObjectFactory(cls);
  }
  if (helper.isAnnotationPresent(javaHasAnnotations,XmlContainerProperty.class)) {
    XmlContainerProperty container=(XmlContainerProperty)helper.getAnnotation(javaHasAnnotations,XmlContainerProperty.class);
    property.setInverseReferencePropertyName(container.value());
    property.setInverseReferencePropertyGetMethodName(container.getMethodName());
    property.setInverseReferencePropertySetMethodName(container.setMethodName());
  }
 else   if (helper.isAnnotationPresent(javaHasAnnotations,XmlInverseReference.class)) {
    XmlInverseReference inverseReference=(XmlInverseReference)helper.getAnnotation(javaHasAnnotations,XmlInverseReference.class);
    property.setInverseReferencePropertyName(inverseReference.mappedBy());
    TypeInfo targetInfo=this.getTypeInfo().get(property.getActualType().getName());
    if (targetInfo != null && targetInfo.getXmlAccessType() == XmlAccessType.PROPERTY) {
      String propName=property.getPropertyName();
      propName=Character.toUpperCase(propName.charAt(0)) + propName.substring(1);
      property.setInverseReferencePropertyGetMethodName(GET_STR + propName);
      property.setInverseReferencePropertySetMethodName(SET_STR + propName);
    }
    property.setInverseReference(true);
  }
  processXmlJavaTypeAdapter(property,info,cls);
  if (helper.isAnnotationPresent(property.getElement(),XmlAttachmentRef.class) && areEquals(property.getActualType(),JAVAX_ACTIVATION_DATAHANDLER)) {
    property.setIsSwaAttachmentRef(true);
    property.setSchemaType(XMLConstants.SWA_REF_QNAME);
  }
  processXmlElement(property,info);
  if (!(property.isSwaAttachmentRef()) && isMtomAttachment(property)) {
    property.setIsMtomAttachment(true);
    property.setSchemaType(XMLConstants.BASE_64_BINARY_QNAME);
  }
  if (helper.isAnnotationPresent(property.getElement(),XmlMimeType.class)) {
    property.setMimeType(((XmlMimeType)helper.getAnnotation(property.getElement(),XmlMimeType.class)).value());
  }
  if (helper.isAnnotationPresent(property.getElement(),XmlInlineBinaryData.class) || info.isBinaryDataToBeInlined()) {
    property.setisInlineBinaryData(true);
  }
  if (helper.isAnnotationPresent(property.getElement(),XmlSchemaType.class)) {
    XmlSchemaType schemaType=(XmlSchemaType)helper.getAnnotation(property.getElement(),XmlSchemaType.class);
    QName schemaTypeQname=new QName(schemaType.namespace(),schemaType.name());
    property.setSchemaType(schemaTypeQname);
  }
  if (helper.isAnnotationPresent(property.getElement(),XmlAttribute.class)) {
    property.setIsAttribute(true);
    property.setIsRequired(((XmlAttribute)helper.getAnnotation(property.getElement(),XmlAttribute.class)).required());
  }
  if (helper.isAnnotationPresent(property.getElement(),XmlAnyAttribute.class)) {
    if (info.isSetAnyAttributePropertyName() && !info.getAnyAttributePropertyName().equals(property.getPropertyName())) {
      throw org.eclipse.persistence.exceptions.JAXBException.multipleAnyAttributeMapping(cls.getName());
    }
    if (!helper.isMapType(property.getType())) {
      throw org.eclipse.persistence.exceptions.JAXBException.anyAttributeOnNonMap(property.getPropertyName());
    }
    property.setIsAnyAttribute(true);
    info.setAnyAttributePropertyName(property.getPropertyName());
  }
  if (helper.isAnnotationPresent(property.getElement(),XmlElementWrapper.class)) {
    XmlElementWrapper wrapper=(XmlElementWrapper)helper.getAnnotation(property.getElement(),XmlElementWrapper.class);
    org.eclipse.persistence.jaxb.xmlmodel.XmlElementWrapper xmlEltWrapper=new org.eclipse.persistence.jaxb.xmlmodel.XmlElementWrapper();
    String wrapperName=wrapper.name();
    if (wrapperName.equals(XMLProcessor.DEFAULT)) {
      wrapperName=info.getXmlNameTransformer().transformElementName(property.getPropertyName());
    }
    xmlEltWrapper.setName(wrapperName);
    xmlEltWrapper.setNamespace(wrapper.namespace());
    xmlEltWrapper.setNillable(wrapper.nillable());
    xmlEltWrapper.setRequired(wrapper.required());
    property.setXmlElementWrapper(xmlEltWrapper);
  }
  if (helper.isAnnotationPresent(property.getElement(),XmlList.class)) {
    if (!helper.isCollectionType(property.getType()) && !property.getType().isArray()) {
      throw JAXBException.invalidList(property.getPropertyName());
    }
    property.setIsXmlList(true);
  }
  if (helper.isAnnotationPresent(property.getElement(),XmlValue.class)) {
    property.setIsXmlValue(true);
    info.setXmlValueProperty(property);
  }
  if (helper.isAnnotationPresent(property.getElement(),XmlReadOnly.class)) {
    property.setReadOnly(true);
  }
  if (helper.isAnnotationPresent(property.getElement(),XmlWriteOnly.class)) {
    property.setWriteOnly(true);
  }
  if (helper.isAnnotationPresent(property.getElement(),XmlCDATA.class)) {
    property.setCdata(true);
  }
  if (helper.isAnnotationPresent(property.getElement(),XmlAccessMethods.class)) {
    XmlAccessMethods accessMethods=(XmlAccessMethods)helper.getAnnotation(property.getElement(),XmlAccessMethods.class);
    if (!(accessMethods.getMethodName().equals(EMPTY_STRING))) {
      property.setGetMethodName(accessMethods.getMethodName());
    }
    if (!(accessMethods.setMethodName().equals(EMPTY_STRING))) {
      property.setSetMethodName(accessMethods.setMethodName());
    }
    if (!(property.isMethodProperty())) {
      property.setMethodProperty(true);
    }
  }
  if (helper.isAnnotationPresent(property.getElement(),XmlProperties.class)) {
    XmlProperties xmlProperties=(XmlProperties)helper.getAnnotation(property.getElement(),XmlProperties.class);
    Map<Object,Object> propertiesMap=createUserPropertiesMap(xmlProperties.value());
    property.setUserProperties(propertiesMap);
  }
 else   if (helper.isAnnotationPresent(property.getElement(),XmlProperty.class)) {
    XmlProperty xmlProperty=(XmlProperty)helper.getAnnotation(property.getElement(),XmlProperty.class);
    Map<Object,Object> propertiesMap=createUserPropertiesMap(new XmlProperty[]{xmlProperty});
    property.setUserProperties(propertiesMap);
  }
  if (helper.isAnnotationPresent(property.getElement(),XmlKey.class)) {
    info.addXmlKeyProperty(property);
  }
  processXmlJoinNodes(property);
  processXmlNullPolicy(property);
  JavaHasAnnotations elem=property.getElement();
  if (helper.isAnnotationPresent(elem,XmlLocation.class) || helper.isAnnotationPresent(elem,CompilerHelper.XML_LOCATION_ANNOTATION_CLASS) || helper.isAnnotationPresent(elem,CompilerHelper.INTERNAL_XML_LOCATION_ANNOTATION_CLASS)) {
    if (!helper.getJavaClass(XMLConstants.LOCATOR_CLASS).isAssignableFrom(property.getType())) {
      throw JAXBException.invalidXmlLocation(property.getPropertyName(),property.getType().getName());
    }
    property.setXmlLocation(true);
  }
}