//
// This file was generated by the JavaTM Architecture for XML Binding(JAXB)
// Reference Implementation, v2.0.2-b01-fcs
// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Any modifications to this file will be lost upon recompilation of the
// source schema.
// Generated on: 2006.10.04 at 03:08:16 PM PDT
//


package org.apache.openjpa.persistence.xmlmapping.xmlbindings.myaddress;

import javax.xml.bind.JAXBElement;
import javax.xml.bind.annotation.XmlElementDecl;
import javax.xml.bind.annotation.XmlRegistry;
import javax.xml.namespace.QName;


/**
 * This object contains factory methods for each
 * Java content interface and Java element interface
 * generated in the myaddress package.
 * <p>An ObjectFactory allows you to programatically
 * construct new instances of the Java representation
 * for XML content. The Java representation of XML
 * content can consist of schema derived interfaces
 * and classes representing the binding of schema
 * type definitions, element declarations and model
 * groups.  Factory methods for each of these are
 * provided in this class.
 *
 */
@XmlRegistry
public class ObjectFactory {

    private final static QName _AddrUSA_QNAME = new QName("", "AddrUSA");
    private final static QName _AddrCAN_QNAME = new QName("", "AddrCAN");
    private final static QName _MailAddress_QNAME =
        new QName("", "MailAddress");
    private final static QName _AddrGBR_QNAME = new QName("", "AddrGBR");

    /**
     * Create a new ObjectFactory that can be used to create new instances of
     * schema derived classes for package: myaddress
     */
    public ObjectFactory() {
    }

    /**
     * Create an instance of {@link Address }
     *
     */
    public Address createAddress() {
        return new Address();
    }

    /**
     * Create an instance of {@link ShortAddress }
     *
     */
    public ShortAddress createShortAddress() {
        return new ShortAddress();
    }

    /**
     * Create an instance of {@link USAAddress }
     *
     */
    public USAAddress createUSAAddress() {
        return new USAAddress();
    }

    /**
     * Create an instance of {@link GBRAddress }
     *
     */
    public GBRAddress createGBRAddress() {
        return new GBRAddress();
    }

    /**
     * Create an instance of {@link CANAddress }
     *
     */
    public CANAddress createCANAddress() {
        return new CANAddress();
    }

    /**
     * Create an instance of
     * {@link JAXBElement }{@code <}{@link USAAddress }{@code >}}
     */
    @XmlElementDecl(namespace = "", name = "AddrUSA",
            substitutionHeadNamespace = "",
            substitutionHeadName = "MailAddress")
    public JAXBElement<USAAddress> createAddrUSA(USAAddress value) {
        return new JAXBElement<>(_AddrUSA_QNAME, USAAddress.class,
                null, value);
    }

    /**
     * Create an instance of
     * {@link JAXBElement }{@code <}{@link CANAddress }{@code >}}
     *
     */
    @XmlElementDecl(namespace = "", name = "AddrCAN",
            substitutionHeadNamespace = "",
            substitutionHeadName = "MailAddress")
    public JAXBElement<CANAddress> createAddrCAN(CANAddress value) {
        return new JAXBElement<>(_AddrCAN_QNAME, CANAddress.class,
                null, value);
    }

    /**
     * Create an instance of
     *  {@link JAXBElement }{@code <}{@link Address }{@code >}}
     */
    @XmlElementDecl(namespace = "", name = "MailAddress")
    public JAXBElement<Address> createMailAddress(Address value) {
        return new JAXBElement<>(_MailAddress_QNAME, Address.class, null,
                value);
    }

    /**
     * Create an instance of
     * {@link JAXBElement }{@code <}{@link GBRAddress }{@code >}}
     */
    @XmlElementDecl(namespace = "", name = "AddrGBR",
            substitutionHeadNamespace = "",
            substitutionHeadName = "MailAddress")
    public JAXBElement<GBRAddress> createAddrGBR(GBRAddress value) {
        return new JAXBElement<>(_AddrGBR_QNAME, GBRAddress.class,
                null, value);
    }

}
