/**
 * AD.java
 * <p>
 * File generated from the datatypes::AD uml Class
 * Generated by IHE - europe, gazelle team
 */
package net.ihe.gazelle.hl7v3.datatypes;

import java.io.Serial;
import java.util.ArrayList;
import java.util.List;

import jakarta.xml.bind.JAXBContext;
import jakarta.xml.bind.JAXBElement;
import jakarta.xml.bind.JAXBException;
import jakarta.xml.bind.Marshaller;
import jakarta.xml.bind.annotation.XmlAccessType;
import jakarta.xml.bind.annotation.XmlAccessorType;
import jakarta.xml.bind.annotation.XmlAttribute;
import jakarta.xml.bind.annotation.XmlElementRef;
import jakarta.xml.bind.annotation.XmlElementRefs;
import jakarta.xml.bind.annotation.XmlMixed;
import jakarta.xml.bind.annotation.XmlRootElement;
import jakarta.xml.bind.annotation.XmlTransient;
import jakarta.xml.bind.annotation.XmlType;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import net.ihe.gazelle.gen.common.ConstraintValidatorModule;

import org.w3c.dom.Document;
import org.w3c.dom.Node;


/**
 * Description of the class AD.
 *
 * 
 */

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "AD", propOrder = {
	"mixed",
	"isNotOrdered",
	"use"
})
@XmlRootElement(name = "AD")
public class AD implements java.io.Serializable {
	
	/**
	 * 
	 */
	@Serial
    private static final long serialVersionUID = 1L;

	
	@XmlElementRefs({
			@XmlElementRef(name = "delimiter", namespace = "urn:hl7-org:v3", type = JAXBElement.class),
			@XmlElementRef(name = "country", namespace = "urn:hl7-org:v3", type = JAXBElement.class),
			@XmlElementRef(name = "state", namespace = "urn:hl7-org:v3", type = JAXBElement.class),
			@XmlElementRef(name = "county", namespace = "urn:hl7-org:v3", type = JAXBElement.class),
			@XmlElementRef(name = "city", namespace = "urn:hl7-org:v3", type = JAXBElement.class),
			@XmlElementRef(name = "postalCode", namespace = "urn:hl7-org:v3", type = JAXBElement.class),
			@XmlElementRef(name = "streetAddressLine", namespace = "urn:hl7-org:v3", type = JAXBElement.class),
			@XmlElementRef(name = "houseNumber", namespace = "urn:hl7-org:v3", type = JAXBElement.class),
			@XmlElementRef(name = "houseNumberNumeric", namespace = "urn:hl7-org:v3", type = JAXBElement.class),
			@XmlElementRef(name = "direction", namespace = "urn:hl7-org:v3", type = JAXBElement.class),
			@XmlElementRef(name = "streetName", namespace = "urn:hl7-org:v3", type = JAXBElement.class),
			@XmlElementRef(name = "streetNameBase", namespace = "urn:hl7-org:v3", type = JAXBElement.class),
			@XmlElementRef(name = "streetNameType", namespace = "urn:hl7-org:v3", type = JAXBElement.class),
			@XmlElementRef(name = "additionalLocator", namespace = "urn:hl7-org:v3", type = JAXBElement.class),
			@XmlElementRef(name = "unitID", namespace = "urn:hl7-org:v3", type = JAXBElement.class),
			@XmlElementRef(name = "unitType", namespace = "urn:hl7-org:v3", type = JAXBElement.class),
			@XmlElementRef(name = "careOf", namespace = "urn:hl7-org:v3", type = JAXBElement.class),
			@XmlElementRef(name = "censusTract", namespace = "urn:hl7-org:v3", type = JAXBElement.class),
			@XmlElementRef(name = "deliveryAddressLine", namespace = "urn:hl7-org:v3", type = JAXBElement.class),
			@XmlElementRef(name = "deliveryInstallationType", namespace = "urn:hl7-org:v3", type = JAXBElement.class),
			@XmlElementRef(name = "deliveryInstallationArea", namespace = "urn:hl7-org:v3", type = JAXBElement.class),
			@XmlElementRef(name = "deliveryInstallationQualifier", namespace = "urn:hl7-org:v3", type = JAXBElement.class),
			@XmlElementRef(name = "deliveryMode", namespace = "urn:hl7-org:v3", type = JAXBElement.class),
			@XmlElementRef(name = "deliveryModeIdentifier", namespace = "urn:hl7-org:v3", type = JAXBElement.class),
			@XmlElementRef(name = "buildingNumberSuffix", namespace = "urn:hl7-org:v3", type = JAXBElement.class),
			@XmlElementRef(name = "postBox", namespace = "urn:hl7-org:v3", type = JAXBElement.class),
			@XmlElementRef(name = "precinct", namespace = "urn:hl7-org:v3", type = JAXBElement.class),
			@XmlElementRef(name = "useablePeriod", namespace = "urn:hl7-org:v3", type = JAXBElement.class)
		})
		@XmlMixed
	public List<java.io.Serializable> mixed;
	/**
	 * 
	                     A boolean value specifying whether the order of the
	                     address parts is known or not. While the address parts
	                     are always a Sequence, the order in which they are
	                     presented may or may not be known. Where this matters,
	                      can be used to convey this
	                     information.
	                  .
	 */
	@XmlAttribute(name = "isNotOrdered")
	public Boolean isNotOrdered;
	/**
	 * 
	                     A set of codes advising a system or user which address
	                     in a set of like addresses to select for a given purpose.
	                  .
	 */
	@XmlAttribute(name = "use")
	public java.lang.String use;
	
	/**
	 * An attribute containing marshalled element node
	 */
	@XmlTransient
	private org.w3c.dom.Node _xmlNodePresentation;
	
	
	/**
	 * Return mixed.
	 * @return mixed
	 */
	public List<java.io.Serializable> getMixed() {
		if (mixed == null) {
	        mixed = new ArrayList<>();
	    }
	    return mixed;
	}
	
	/**
	 * Set a value to attribute mixed.
     */
	public void setMixed(List<java.io.Serializable> mixed) {
	    this.mixed = mixed;
	}
	
	
	
	/**
	 * Add a mixed to the mixed collection.
	 * @param mixed_elt Element to add.
	 */
	public void addMixed(java.io.Serializable mixed_elt) {
	    this.mixed.add(mixed_elt);
	}
	
	/**
	 * Remove a mixed to the mixed collection.
	 * @param mixed_elt Element to remove
	 */
	public void removeMixed(java.io.Serializable mixed_elt) {
	    this.mixed.remove(mixed_elt);
	}
	
	
	/**
	 * Return delimiter.
	 * @return delimiter
	 */
	public List<net.ihe.gazelle.hl7v3.datatypes.AdxpDelimiter> getDelimiter() {
		List<net.ihe.gazelle.hl7v3.datatypes.AdxpDelimiter> delimiter_el = new ArrayList<>();
			for(java.io.Serializable obj : this.getMixed()){
			if (obj instanceof jakarta.xml.bind.JAXBElement){
				if (((jakarta.xml.bind.JAXBElement<?>)obj).getName().getLocalPart().equals("delimiter")){
					delimiter_el.add( (net.ihe.gazelle.hl7v3.datatypes.AdxpDelimiter) ((jakarta.xml.bind.JAXBElement<?>)obj).getValue() );
				}
			}
		} 

	    return delimiter_el;
	}
	
	public void addDelimiter(net.ihe.gazelle.hl7v3.datatypes.AdxpDelimiter obj){
		ObjectFactory of = new ObjectFactory();
		JAXBElement<net.ihe.gazelle.hl7v3.datatypes.AdxpDelimiter> jobj = of.createADDelimiter(obj);
		this.getMixed().add(jobj);
	}
	
	
	/**
	 * Return country.
	 * @return country
	 */
	public List<net.ihe.gazelle.hl7v3.datatypes.AdxpCountry> getCountry() {
		List<net.ihe.gazelle.hl7v3.datatypes.AdxpCountry> country_el = new ArrayList<>();
			for(java.io.Serializable obj : this.getMixed()){
			if (obj instanceof jakarta.xml.bind.JAXBElement){
				if (((jakarta.xml.bind.JAXBElement<?>)obj).getName().getLocalPart().equals("country")){
					country_el.add( (net.ihe.gazelle.hl7v3.datatypes.AdxpCountry) ((jakarta.xml.bind.JAXBElement<?>)obj).getValue() );
				}
			}
		} 

	    return country_el;
	}
	
	public void addCountry(net.ihe.gazelle.hl7v3.datatypes.AdxpCountry obj){
		ObjectFactory of = new ObjectFactory();
		JAXBElement<net.ihe.gazelle.hl7v3.datatypes.AdxpCountry> jobj = of.createADCountry(obj);
		this.getMixed().add(jobj);
	}
	
	
	/**
	 * Return state.
	 * @return state
	 */
	public List<net.ihe.gazelle.hl7v3.datatypes.AdxpState> getState() {
		List<net.ihe.gazelle.hl7v3.datatypes.AdxpState> state_el = new ArrayList<>();
			for(java.io.Serializable obj : this.getMixed()){
			if (obj instanceof jakarta.xml.bind.JAXBElement){
				if (((jakarta.xml.bind.JAXBElement<?>)obj).getName().getLocalPart().equals("state")){
					state_el.add( (net.ihe.gazelle.hl7v3.datatypes.AdxpState) ((jakarta.xml.bind.JAXBElement<?>)obj).getValue() );
				}
			}
		} 

	    return state_el;
	}
	
	public void addState(net.ihe.gazelle.hl7v3.datatypes.AdxpState obj){
		ObjectFactory of = new ObjectFactory();
		JAXBElement<net.ihe.gazelle.hl7v3.datatypes.AdxpState> jobj = of.createADState(obj);
		this.getMixed().add(jobj);
	}
	
	
	/**
	 * Return county.
	 * @return county
	 */
	public List<net.ihe.gazelle.hl7v3.datatypes.AdxpCounty> getCounty() {
		List<net.ihe.gazelle.hl7v3.datatypes.AdxpCounty> county_el = new ArrayList<>();
			for(java.io.Serializable obj : this.getMixed()){
			if (obj instanceof jakarta.xml.bind.JAXBElement){
				if (((jakarta.xml.bind.JAXBElement<?>)obj).getName().getLocalPart().equals("county")){
					county_el.add( (net.ihe.gazelle.hl7v3.datatypes.AdxpCounty) ((jakarta.xml.bind.JAXBElement<?>)obj).getValue() );
				}
			}
		} 

	    return county_el;
	}
	
	public void addCounty(net.ihe.gazelle.hl7v3.datatypes.AdxpCounty obj){
		ObjectFactory of = new ObjectFactory();
		JAXBElement<net.ihe.gazelle.hl7v3.datatypes.AdxpCounty> jobj = of.createADCounty(obj);
		this.getMixed().add(jobj);
	}
	
	
	/**
	 * Return city.
	 * @return city
	 */
	public List<net.ihe.gazelle.hl7v3.datatypes.AdxpCity> getCity() {
		List<net.ihe.gazelle.hl7v3.datatypes.AdxpCity> city_el = new ArrayList<>();
			for(java.io.Serializable obj : this.getMixed()){
			if (obj instanceof jakarta.xml.bind.JAXBElement){
				if (((jakarta.xml.bind.JAXBElement<?>)obj).getName().getLocalPart().equals("city")){
					city_el.add( (net.ihe.gazelle.hl7v3.datatypes.AdxpCity) ((jakarta.xml.bind.JAXBElement<?>)obj).getValue() );
				}
			}
		} 

	    return city_el;
	}
	
	public void addCity(net.ihe.gazelle.hl7v3.datatypes.AdxpCity obj){
		ObjectFactory of = new ObjectFactory();
		JAXBElement<net.ihe.gazelle.hl7v3.datatypes.AdxpCity> jobj = of.createADCity(obj);
		this.getMixed().add(jobj);
	}
	
	
	/**
	 * Return postalCode.
	 * @return postalCode
	 */
	public List<net.ihe.gazelle.hl7v3.datatypes.AdxpPostalCode> getPostalCode() {
		List<net.ihe.gazelle.hl7v3.datatypes.AdxpPostalCode> postalCode_el = new ArrayList<>();
			for(java.io.Serializable obj : this.getMixed()){
			if (obj instanceof jakarta.xml.bind.JAXBElement){
				if (((jakarta.xml.bind.JAXBElement<?>)obj).getName().getLocalPart().equals("postalCode")){
					postalCode_el.add( (net.ihe.gazelle.hl7v3.datatypes.AdxpPostalCode) ((jakarta.xml.bind.JAXBElement<?>)obj).getValue() );
				}
			}
		} 

	    return postalCode_el;
	}
	
	public void addPostalCode(net.ihe.gazelle.hl7v3.datatypes.AdxpPostalCode obj){
		ObjectFactory of = new ObjectFactory();
		JAXBElement<net.ihe.gazelle.hl7v3.datatypes.AdxpPostalCode> jobj = of.createADPostalCode(obj);
		this.getMixed().add(jobj);
	}
	
	
	/**
	 * Return streetAddressLine.
	 * @return streetAddressLine
	 */
	public List<net.ihe.gazelle.hl7v3.datatypes.AdxpStreetAddressLine> getStreetAddressLine() {
		List<net.ihe.gazelle.hl7v3.datatypes.AdxpStreetAddressLine> streetAddressLine_el = new ArrayList<>();
			for(java.io.Serializable obj : this.getMixed()){
			if (obj instanceof jakarta.xml.bind.JAXBElement){
				if (((jakarta.xml.bind.JAXBElement<?>)obj).getName().getLocalPart().equals("streetAddressLine")){
					streetAddressLine_el.add( (net.ihe.gazelle.hl7v3.datatypes.AdxpStreetAddressLine) ((jakarta.xml.bind.JAXBElement<?>)obj).getValue() );
				}
			}
		} 

	    return streetAddressLine_el;
	}
	
	public void addStreetAddressLine(net.ihe.gazelle.hl7v3.datatypes.AdxpStreetAddressLine obj){
		ObjectFactory of = new ObjectFactory();
		JAXBElement<net.ihe.gazelle.hl7v3.datatypes.AdxpStreetAddressLine> jobj = of.createADStreetAddressLine(obj);
		this.getMixed().add(jobj);
	}
	
	
	/**
	 * Return houseNumber.
	 * @return houseNumber
	 */
	public List<net.ihe.gazelle.hl7v3.datatypes.AdxpHouseNumber> getHouseNumber() {
		List<net.ihe.gazelle.hl7v3.datatypes.AdxpHouseNumber> houseNumber_el = new ArrayList<>();
			for(java.io.Serializable obj : this.getMixed()){
			if (obj instanceof jakarta.xml.bind.JAXBElement){
				if (((jakarta.xml.bind.JAXBElement<?>)obj).getName().getLocalPart().equals("houseNumber")){
					houseNumber_el.add( (net.ihe.gazelle.hl7v3.datatypes.AdxpHouseNumber) ((jakarta.xml.bind.JAXBElement<?>)obj).getValue() );
				}
			}
		} 

	    return houseNumber_el;
	}
	
	public void addHouseNumber(net.ihe.gazelle.hl7v3.datatypes.AdxpHouseNumber obj){
		ObjectFactory of = new ObjectFactory();
		JAXBElement<net.ihe.gazelle.hl7v3.datatypes.AdxpHouseNumber> jobj = of.createADHouseNumber(obj);
		this.getMixed().add(jobj);
	}
	
	
	/**
	 * Return houseNumberNumeric.
	 * @return houseNumberNumeric
	 */
	public List<net.ihe.gazelle.hl7v3.datatypes.AdxpHouseNumberNumeric> getHouseNumberNumeric() {
		List<net.ihe.gazelle.hl7v3.datatypes.AdxpHouseNumberNumeric> houseNumberNumeric_el = new ArrayList<>();
			for(java.io.Serializable obj : this.getMixed()){
			if (obj instanceof jakarta.xml.bind.JAXBElement){
				if (((jakarta.xml.bind.JAXBElement<?>)obj).getName().getLocalPart().equals("houseNumberNumeric")){
					houseNumberNumeric_el.add( (net.ihe.gazelle.hl7v3.datatypes.AdxpHouseNumberNumeric) ((jakarta.xml.bind.JAXBElement<?>)obj).getValue() );
				}
			}
		} 

	    return houseNumberNumeric_el;
	}
	
	public void addHouseNumberNumeric(net.ihe.gazelle.hl7v3.datatypes.AdxpHouseNumberNumeric obj){
		ObjectFactory of = new ObjectFactory();
		JAXBElement<net.ihe.gazelle.hl7v3.datatypes.AdxpHouseNumberNumeric> jobj = of.createADHouseNumberNumeric(obj);
		this.getMixed().add(jobj);
	}
	
	
	/**
	 * Return direction.
	 * @return direction
	 */
	public List<net.ihe.gazelle.hl7v3.datatypes.AdxpDirection> getDirection() {
		List<net.ihe.gazelle.hl7v3.datatypes.AdxpDirection> direction_el = new ArrayList<>();
			for(java.io.Serializable obj : this.getMixed()){
			if (obj instanceof jakarta.xml.bind.JAXBElement){
				if (((jakarta.xml.bind.JAXBElement<?>)obj).getName().getLocalPart().equals("direction")){
					direction_el.add( (net.ihe.gazelle.hl7v3.datatypes.AdxpDirection) ((jakarta.xml.bind.JAXBElement<?>)obj).getValue() );
				}
			}
		} 

	    return direction_el;
	}
	
	public void addDirection(net.ihe.gazelle.hl7v3.datatypes.AdxpDirection obj){
		ObjectFactory of = new ObjectFactory();
		JAXBElement<net.ihe.gazelle.hl7v3.datatypes.AdxpDirection> jobj = of.createADDirection(obj);
		this.getMixed().add(jobj);
	}
	
	
	/**
	 * Return streetName.
	 * @return streetName
	 */
	public List<net.ihe.gazelle.hl7v3.datatypes.AdxpStreetName> getStreetName() {
		List<net.ihe.gazelle.hl7v3.datatypes.AdxpStreetName> streetName_el = new ArrayList<>();
			for(java.io.Serializable obj : this.getMixed()){
			if (obj instanceof jakarta.xml.bind.JAXBElement){
				if (((jakarta.xml.bind.JAXBElement<?>)obj).getName().getLocalPart().equals("streetName")){
					streetName_el.add( (net.ihe.gazelle.hl7v3.datatypes.AdxpStreetName) ((jakarta.xml.bind.JAXBElement<?>)obj).getValue() );
				}
			}
		} 

	    return streetName_el;
	}
	
	public void addStreetName(net.ihe.gazelle.hl7v3.datatypes.AdxpStreetName obj){
		ObjectFactory of = new ObjectFactory();
		JAXBElement<net.ihe.gazelle.hl7v3.datatypes.AdxpStreetName> jobj = of.createADStreetName(obj);
		this.getMixed().add(jobj);
	}
	
	
	/**
	 * Return streetNameBase.
	 * @return streetNameBase
	 */
	public List<net.ihe.gazelle.hl7v3.datatypes.AdxpStreetNameBase> getStreetNameBase() {
		List<net.ihe.gazelle.hl7v3.datatypes.AdxpStreetNameBase> streetNameBase_el = new ArrayList<>();
			for(java.io.Serializable obj : this.getMixed()){
			if (obj instanceof jakarta.xml.bind.JAXBElement){
				if (((jakarta.xml.bind.JAXBElement<?>)obj).getName().getLocalPart().equals("streetNameBase")){
					streetNameBase_el.add( (net.ihe.gazelle.hl7v3.datatypes.AdxpStreetNameBase) ((jakarta.xml.bind.JAXBElement<?>)obj).getValue() );
				}
			}
		} 

	    return streetNameBase_el;
	}
	
	public void addStreetNameBase(net.ihe.gazelle.hl7v3.datatypes.AdxpStreetNameBase obj){
		ObjectFactory of = new ObjectFactory();
		JAXBElement<net.ihe.gazelle.hl7v3.datatypes.AdxpStreetNameBase> jobj = of.createADStreetNameBase(obj);
		this.getMixed().add(jobj);
	}
	
	
	/**
	 * Return streetNameType.
	 * @return streetNameType
	 */
	public List<net.ihe.gazelle.hl7v3.datatypes.AdxpStreetNameType> getStreetNameType() {
		List<net.ihe.gazelle.hl7v3.datatypes.AdxpStreetNameType> streetNameType_el = new ArrayList<>();
			for(java.io.Serializable obj : this.getMixed()){
			if (obj instanceof jakarta.xml.bind.JAXBElement){
				if (((jakarta.xml.bind.JAXBElement<?>)obj).getName().getLocalPart().equals("streetNameType")){
					streetNameType_el.add( (net.ihe.gazelle.hl7v3.datatypes.AdxpStreetNameType) ((jakarta.xml.bind.JAXBElement<?>)obj).getValue() );
				}
			}
		} 

	    return streetNameType_el;
	}
	
	public void addStreetNameType(net.ihe.gazelle.hl7v3.datatypes.AdxpStreetNameType obj){
		ObjectFactory of = new ObjectFactory();
		JAXBElement<net.ihe.gazelle.hl7v3.datatypes.AdxpStreetNameType> jobj = of.createADStreetNameType(obj);
		this.getMixed().add(jobj);
	}
	
	
	/**
	 * Return additionalLocator.
	 * @return additionalLocator
	 */
	public List<net.ihe.gazelle.hl7v3.datatypes.AdxpAdditionalLocator> getAdditionalLocator() {
		List<net.ihe.gazelle.hl7v3.datatypes.AdxpAdditionalLocator> additionalLocator_el = new ArrayList<>();
			for(java.io.Serializable obj : this.getMixed()){
			if (obj instanceof jakarta.xml.bind.JAXBElement){
				if (((jakarta.xml.bind.JAXBElement<?>)obj).getName().getLocalPart().equals("additionalLocator")){
					additionalLocator_el.add( (net.ihe.gazelle.hl7v3.datatypes.AdxpAdditionalLocator) ((jakarta.xml.bind.JAXBElement<?>)obj).getValue() );
				}
			}
		} 

	    return additionalLocator_el;
	}
	
	public void addAdditionalLocator(net.ihe.gazelle.hl7v3.datatypes.AdxpAdditionalLocator obj){
		ObjectFactory of = new ObjectFactory();
		JAXBElement<net.ihe.gazelle.hl7v3.datatypes.AdxpAdditionalLocator> jobj = of.createADAdditionalLocator(obj);
		this.getMixed().add(jobj);
	}
	
	
	/**
	 * Return unitID.
	 * @return unitID
	 */
	public List<net.ihe.gazelle.hl7v3.datatypes.AdxpUnitID> getUnitID() {
		List<net.ihe.gazelle.hl7v3.datatypes.AdxpUnitID> unitID_el = new ArrayList<>();
			for(java.io.Serializable obj : this.getMixed()){
			if (obj instanceof jakarta.xml.bind.JAXBElement){
				if (((jakarta.xml.bind.JAXBElement<?>)obj).getName().getLocalPart().equals("unitID")){
					unitID_el.add( (net.ihe.gazelle.hl7v3.datatypes.AdxpUnitID) ((jakarta.xml.bind.JAXBElement<?>)obj).getValue() );
				}
			}
		} 

	    return unitID_el;
	}
	
	public void addUnitID(net.ihe.gazelle.hl7v3.datatypes.AdxpUnitID obj){
		ObjectFactory of = new ObjectFactory();
		JAXBElement<net.ihe.gazelle.hl7v3.datatypes.AdxpUnitID> jobj = of.createADUnitID(obj);
		this.getMixed().add(jobj);
	}
	
	
	/**
	 * Return unitType.
	 * @return unitType
	 */
	public List<net.ihe.gazelle.hl7v3.datatypes.AdxpUnitType> getUnitType() {
		List<net.ihe.gazelle.hl7v3.datatypes.AdxpUnitType> unitType_el = new ArrayList<>();
			for(java.io.Serializable obj : this.getMixed()){
			if (obj instanceof jakarta.xml.bind.JAXBElement){
				if (((jakarta.xml.bind.JAXBElement<?>)obj).getName().getLocalPart().equals("unitType")){
					unitType_el.add( (net.ihe.gazelle.hl7v3.datatypes.AdxpUnitType) ((jakarta.xml.bind.JAXBElement<?>)obj).getValue() );
				}
			}
		} 

	    return unitType_el;
	}
	
	public void addUnitType(net.ihe.gazelle.hl7v3.datatypes.AdxpUnitType obj){
		ObjectFactory of = new ObjectFactory();
		JAXBElement<net.ihe.gazelle.hl7v3.datatypes.AdxpUnitType> jobj = of.createADUnitType(obj);
		this.getMixed().add(jobj);
	}
	
	
	/**
	 * Return careOf.
	 * @return careOf
	 */
	public List<net.ihe.gazelle.hl7v3.datatypes.AdxpCareOf> getCareOf() {
		List<net.ihe.gazelle.hl7v3.datatypes.AdxpCareOf> careOf_el = new ArrayList<>();
			for(java.io.Serializable obj : this.getMixed()){
			if (obj instanceof jakarta.xml.bind.JAXBElement){
				if (((jakarta.xml.bind.JAXBElement<?>)obj).getName().getLocalPart().equals("careOf")){
					careOf_el.add( (net.ihe.gazelle.hl7v3.datatypes.AdxpCareOf) ((jakarta.xml.bind.JAXBElement<?>)obj).getValue() );
				}
			}
		} 

	    return careOf_el;
	}
	
	public void addCareOf(net.ihe.gazelle.hl7v3.datatypes.AdxpCareOf obj){
		ObjectFactory of = new ObjectFactory();
		JAXBElement<net.ihe.gazelle.hl7v3.datatypes.AdxpCareOf> jobj = of.createADCareOf(obj);
		this.getMixed().add(jobj);
	}
	
	
	/**
	 * Return censusTract.
	 * @return censusTract
	 */
	public List<net.ihe.gazelle.hl7v3.datatypes.AdxpCensusTract> getCensusTract() {
		List<net.ihe.gazelle.hl7v3.datatypes.AdxpCensusTract> censusTract_el = new ArrayList<>();
			for(java.io.Serializable obj : this.getMixed()){
			if (obj instanceof jakarta.xml.bind.JAXBElement){
				if (((jakarta.xml.bind.JAXBElement<?>)obj).getName().getLocalPart().equals("censusTract")){
					censusTract_el.add( (net.ihe.gazelle.hl7v3.datatypes.AdxpCensusTract) ((jakarta.xml.bind.JAXBElement<?>)obj).getValue() );
				}
			}
		} 

	    return censusTract_el;
	}
	
	public void addCensusTract(net.ihe.gazelle.hl7v3.datatypes.AdxpCensusTract obj){
		ObjectFactory of = new ObjectFactory();
		JAXBElement<net.ihe.gazelle.hl7v3.datatypes.AdxpCensusTract> jobj = of.createADCensusTract(obj);
		this.getMixed().add(jobj);
	}
	
	
	/**
	 * Return deliveryAddressLine.
	 * @return deliveryAddressLine
	 */
	public List<net.ihe.gazelle.hl7v3.datatypes.AdxpDeliveryAddressLine> getDeliveryAddressLine() {
		List<net.ihe.gazelle.hl7v3.datatypes.AdxpDeliveryAddressLine> deliveryAddressLine_el = new ArrayList<>();
			for(java.io.Serializable obj : this.getMixed()){
			if (obj instanceof jakarta.xml.bind.JAXBElement){
				if (((jakarta.xml.bind.JAXBElement<?>)obj).getName().getLocalPart().equals("deliveryAddressLine")){
					deliveryAddressLine_el.add( (net.ihe.gazelle.hl7v3.datatypes.AdxpDeliveryAddressLine) ((jakarta.xml.bind.JAXBElement<?>)obj).getValue() );
				}
			}
		} 

	    return deliveryAddressLine_el;
	}
	
	public void addDeliveryAddressLine(net.ihe.gazelle.hl7v3.datatypes.AdxpDeliveryAddressLine obj){
		ObjectFactory of = new ObjectFactory();
		JAXBElement<net.ihe.gazelle.hl7v3.datatypes.AdxpDeliveryAddressLine> jobj = of.createADDeliveryAddressLine(obj);
		this.getMixed().add(jobj);
	}
	
	
	/**
	 * Return deliveryInstallationType.
	 * @return deliveryInstallationType
	 */
	public List<net.ihe.gazelle.hl7v3.datatypes.AdxpDeliveryInstallationType> getDeliveryInstallationType() {
		List<net.ihe.gazelle.hl7v3.datatypes.AdxpDeliveryInstallationType> deliveryInstallationType_el = new ArrayList<>();
			for(java.io.Serializable obj : this.getMixed()){
			if (obj instanceof jakarta.xml.bind.JAXBElement){
				if (((jakarta.xml.bind.JAXBElement<?>)obj).getName().getLocalPart().equals("deliveryInstallationType")){
					deliveryInstallationType_el.add( (net.ihe.gazelle.hl7v3.datatypes.AdxpDeliveryInstallationType) ((jakarta.xml.bind.JAXBElement<?>)obj).getValue() );
				}
			}
		} 

	    return deliveryInstallationType_el;
	}
	
	public void addDeliveryInstallationType(net.ihe.gazelle.hl7v3.datatypes.AdxpDeliveryInstallationType obj){
		ObjectFactory of = new ObjectFactory();
		JAXBElement<net.ihe.gazelle.hl7v3.datatypes.AdxpDeliveryInstallationType> jobj = of.createADDeliveryInstallationType(obj);
		this.getMixed().add(jobj);
	}
	
	
	/**
	 * Return deliveryInstallationArea.
	 * @return deliveryInstallationArea
	 */
	public List<net.ihe.gazelle.hl7v3.datatypes.AdxpDeliveryInstallationArea> getDeliveryInstallationArea() {
		List<net.ihe.gazelle.hl7v3.datatypes.AdxpDeliveryInstallationArea> deliveryInstallationArea_el = new ArrayList<>();
			for(java.io.Serializable obj : this.getMixed()){
			if (obj instanceof jakarta.xml.bind.JAXBElement){
				if (((jakarta.xml.bind.JAXBElement<?>)obj).getName().getLocalPart().equals("deliveryInstallationArea")){
					deliveryInstallationArea_el.add( (net.ihe.gazelle.hl7v3.datatypes.AdxpDeliveryInstallationArea) ((jakarta.xml.bind.JAXBElement<?>)obj).getValue() );
				}
			}
		} 

	    return deliveryInstallationArea_el;
	}
	
	public void addDeliveryInstallationArea(net.ihe.gazelle.hl7v3.datatypes.AdxpDeliveryInstallationArea obj){
		ObjectFactory of = new ObjectFactory();
		JAXBElement<net.ihe.gazelle.hl7v3.datatypes.AdxpDeliveryInstallationArea> jobj = of.createADDeliveryInstallationArea(obj);
		this.getMixed().add(jobj);
	}
	
	
	/**
	 * Return deliveryInstallationQualifier.
	 * @return deliveryInstallationQualifier
	 */
	public List<net.ihe.gazelle.hl7v3.datatypes.AdxpDeliveryInstallationQualifier> getDeliveryInstallationQualifier() {
		List<net.ihe.gazelle.hl7v3.datatypes.AdxpDeliveryInstallationQualifier> deliveryInstallationQualifier_el = new ArrayList<>();
			for(java.io.Serializable obj : this.getMixed()){
			if (obj instanceof jakarta.xml.bind.JAXBElement){
				if (((jakarta.xml.bind.JAXBElement<?>)obj).getName().getLocalPart().equals("deliveryInstallationQualifier")){
					deliveryInstallationQualifier_el.add( (net.ihe.gazelle.hl7v3.datatypes.AdxpDeliveryInstallationQualifier) ((jakarta.xml.bind.JAXBElement<?>)obj).getValue() );
				}
			}
		} 

	    return deliveryInstallationQualifier_el;
	}
	
	public void addDeliveryInstallationQualifier(net.ihe.gazelle.hl7v3.datatypes.AdxpDeliveryInstallationQualifier obj){
		ObjectFactory of = new ObjectFactory();
		JAXBElement<net.ihe.gazelle.hl7v3.datatypes.AdxpDeliveryInstallationQualifier> jobj = of.createADDeliveryInstallationQualifier(obj);
		this.getMixed().add(jobj);
	}
	
	
	/**
	 * Return deliveryMode.
	 * @return deliveryMode
	 */
	public List<net.ihe.gazelle.hl7v3.datatypes.AdxpDeliveryMode> getDeliveryMode() {
		List<net.ihe.gazelle.hl7v3.datatypes.AdxpDeliveryMode> deliveryMode_el = new ArrayList<>();
			for(java.io.Serializable obj : this.getMixed()){
			if (obj instanceof jakarta.xml.bind.JAXBElement){
				if (((jakarta.xml.bind.JAXBElement<?>)obj).getName().getLocalPart().equals("deliveryMode")){
					deliveryMode_el.add( (net.ihe.gazelle.hl7v3.datatypes.AdxpDeliveryMode) ((jakarta.xml.bind.JAXBElement<?>)obj).getValue() );
				}
			}
		} 

	    return deliveryMode_el;
	}
	
	public void addDeliveryMode(net.ihe.gazelle.hl7v3.datatypes.AdxpDeliveryMode obj){
		ObjectFactory of = new ObjectFactory();
		JAXBElement<net.ihe.gazelle.hl7v3.datatypes.AdxpDeliveryMode> jobj = of.createADDeliveryMode(obj);
		this.getMixed().add(jobj);
	}
	
	
	/**
	 * Return deliveryModeIdentifier.
	 * @return deliveryModeIdentifier
	 */
	public List<net.ihe.gazelle.hl7v3.datatypes.AdxpDeliveryModeIdentifier> getDeliveryModeIdentifier() {
		List<net.ihe.gazelle.hl7v3.datatypes.AdxpDeliveryModeIdentifier> deliveryModeIdentifier_el = new ArrayList<>();
			for(java.io.Serializable obj : this.getMixed()){
			if (obj instanceof jakarta.xml.bind.JAXBElement){
				if (((jakarta.xml.bind.JAXBElement<?>)obj).getName().getLocalPart().equals("deliveryModeIdentifier")){
					deliveryModeIdentifier_el.add( (net.ihe.gazelle.hl7v3.datatypes.AdxpDeliveryModeIdentifier) ((jakarta.xml.bind.JAXBElement<?>)obj).getValue() );
				}
			}
		} 

	    return deliveryModeIdentifier_el;
	}
	
	public void addDeliveryModeIdentifier(net.ihe.gazelle.hl7v3.datatypes.AdxpDeliveryModeIdentifier obj){
		ObjectFactory of = new ObjectFactory();
		JAXBElement<net.ihe.gazelle.hl7v3.datatypes.AdxpDeliveryModeIdentifier> jobj = of.createADDeliveryModeIdentifier(obj);
		this.getMixed().add(jobj);
	}
	
	
	/**
	 * Return buildingNumberSuffix.
	 * @return buildingNumberSuffix
	 */
	public List<net.ihe.gazelle.hl7v3.datatypes.AdxpBuildingNumberSuffix> getBuildingNumberSuffix() {
		List<net.ihe.gazelle.hl7v3.datatypes.AdxpBuildingNumberSuffix> buildingNumberSuffix_el = new ArrayList<>();
			for(java.io.Serializable obj : this.getMixed()){
			if (obj instanceof jakarta.xml.bind.JAXBElement){
				if (((jakarta.xml.bind.JAXBElement<?>)obj).getName().getLocalPart().equals("buildingNumberSuffix")){
					buildingNumberSuffix_el.add( (net.ihe.gazelle.hl7v3.datatypes.AdxpBuildingNumberSuffix) ((jakarta.xml.bind.JAXBElement<?>)obj).getValue() );
				}
			}
		} 

	    return buildingNumberSuffix_el;
	}
	
	public void addBuildingNumberSuffix(net.ihe.gazelle.hl7v3.datatypes.AdxpBuildingNumberSuffix obj){
		ObjectFactory of = new ObjectFactory();
		JAXBElement<net.ihe.gazelle.hl7v3.datatypes.AdxpBuildingNumberSuffix> jobj = of.createADBuildingNumberSuffix(obj);
		this.getMixed().add(jobj);
	}
	
	
	/**
	 * Return postBox.
	 * @return postBox
	 */
	public List<net.ihe.gazelle.hl7v3.datatypes.AdxpPostBox> getPostBox() {
		List<net.ihe.gazelle.hl7v3.datatypes.AdxpPostBox> postBox_el = new ArrayList<>();
			for(java.io.Serializable obj : this.getMixed()){
			if (obj instanceof jakarta.xml.bind.JAXBElement){
				if (((jakarta.xml.bind.JAXBElement<?>)obj).getName().getLocalPart().equals("postBox")){
					postBox_el.add( (net.ihe.gazelle.hl7v3.datatypes.AdxpPostBox) ((jakarta.xml.bind.JAXBElement<?>)obj).getValue() );
				}
			}
		} 

	    return postBox_el;
	}
	
	public void addPostBox(net.ihe.gazelle.hl7v3.datatypes.AdxpPostBox obj){
		ObjectFactory of = new ObjectFactory();
		JAXBElement<net.ihe.gazelle.hl7v3.datatypes.AdxpPostBox> jobj = of.createADPostBox(obj);
		this.getMixed().add(jobj);
	}
	
	
	/**
	 * Return precinct.
	 * @return precinct
	 */
	public List<net.ihe.gazelle.hl7v3.datatypes.AdxpPrecinct> getPrecinct() {
		List<net.ihe.gazelle.hl7v3.datatypes.AdxpPrecinct> precinct_el = new ArrayList<>();
			for(java.io.Serializable obj : this.getMixed()){
			if (obj instanceof jakarta.xml.bind.JAXBElement){
				if (((jakarta.xml.bind.JAXBElement<?>)obj).getName().getLocalPart().equals("precinct")){
					precinct_el.add( (net.ihe.gazelle.hl7v3.datatypes.AdxpPrecinct) ((jakarta.xml.bind.JAXBElement<?>)obj).getValue() );
				}
			}
		} 

	    return precinct_el;
	}
	
	public void addPrecinct(net.ihe.gazelle.hl7v3.datatypes.AdxpPrecinct obj){
		ObjectFactory of = new ObjectFactory();
		JAXBElement<net.ihe.gazelle.hl7v3.datatypes.AdxpPrecinct> jobj = of.createADPrecinct(obj);
		this.getMixed().add(jobj);
	}
	
	
	/**
	 * Return useablePeriod.
	 * @return useablePeriod
	 */
	public List<net.ihe.gazelle.hl7v3.datatypes.SXCMTS> getUseablePeriod() {
		List<net.ihe.gazelle.hl7v3.datatypes.SXCMTS> useablePeriod_el = new ArrayList<>();
			for(java.io.Serializable obj : this.getMixed()){
			if (obj instanceof jakarta.xml.bind.JAXBElement){
				if (((jakarta.xml.bind.JAXBElement<?>)obj).getName().getLocalPart().equals("useablePeriod")){
					useablePeriod_el.add( (net.ihe.gazelle.hl7v3.datatypes.SXCMTS) ((jakarta.xml.bind.JAXBElement<?>)obj).getValue() );
				}
			}
		} 

	    return useablePeriod_el;
	}
	
	public void addUseablePeriod(net.ihe.gazelle.hl7v3.datatypes.SXCMTS obj){
		ObjectFactory of = new ObjectFactory();
		JAXBElement<net.ihe.gazelle.hl7v3.datatypes.SXCMTS> jobj = of.createADUseablePeriod(obj);
		this.getMixed().add(jobj);
	}
	
	
	/**
	 * Return isNotOrdered.
	 * @return isNotOrdered : 
	                     A boolean value specifying whether the order of the
	                     address parts is known or not. While the address parts
	                     are always a Sequence, the order in which they are
	                     presented may or may not be known. Where this matters,
	                      can be used to convey this
	                     information.
	 */
	public Boolean getIsNotOrdered() {
	    return isNotOrdered;
	}
	
	/**
	 * Set a value to attribute isNotOrdered.
	 * @param isNotOrdered : 
	                     A boolean value specifying whether the order of the
	                     address parts is known or not. While the address parts
	                     are always a Sequence, the order in which they are
	                     presented may or may not be known. Where this matters,
	                      can be used to convey this
	                     information.
	 */
	public void setIsNotOrdered(Boolean isNotOrdered) {
	    this.isNotOrdered = isNotOrdered;
	}
	
	
	/**
	 * Return isNotOrdered.
	 * @return isNotOrdered : 
	                     A boolean value specifying whether the order of the
	                     address parts is known or not. While the address parts
	                     are always a Sequence, the order in which they are
	                     presented may or may not be known. Where this matters,
	                      can be used to convey this
	                     information.
	                  
	                     information.
	                  
	 * Generated for the use on jsf pages
	 */
	 @Deprecated
	public Boolean isIsNotOrdered() {
	    return isNotOrdered;
	}
	
	/**
	 * Return use.
	 * @return use : 
	                     A set of codes advising a system or user which address
	                     in a set of like addresses to select for a given purpose.
	 */
