/*******************************************************************************
 * Copyright (c) 2023 eclipse contributors and others.
 *
 * This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License 2.0
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/
 *
 * SPDX-License-Identifier: EPL-2.0
 *
 * Contributors:
 *     initially generated by jaxb reference implementation v2.2.8-b130911.1802
 *     Christoph Läubrich - adjusted to use the jakarta.xml namespace
 *******************************************************************************/
package org.eclipse.pde.osgi.xmlns.metatype.v1_4;

import javax.xml.namespace.QName;

import jakarta.xml.bind.JAXBElement;
import jakarta.xml.bind.annotation.XmlElementDecl;
import jakarta.xml.bind.annotation.XmlRegistry;

/**
 * This object contains factory methods for each Java content interface and Java
 * element interface generated in the org.osgi.xmlns.metatype.v1_4 package.
 * <p>
 * An ObjectFactory allows you to programmatically 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.
 * </p>
 * 
 */
@XmlRegistry
public class ObjectFactory {

    private final static QName _MetaData_QNAME = new QName("http://www.osgi.org/xmlns/metatype/v1.4.0", "MetaData");
    private final static QName _TattributeValue_QNAME = new QName("", "Value");
    private final static QName _TmetadataOCD_QNAME = new QName("", "OCD");
    private final static QName _TmetadataDesignate_QNAME = new QName("", "Designate");
    private final static QName _TadOption_QNAME = new QName("", "Option");
    private final static QName _TocdAD_QNAME = new QName("", "AD");
    private final static QName _TocdIcon_QNAME = new QName("", "Icon");
    private final static QName _TobjectAttribute_QNAME = new QName("", "Attribute");

    /**
     * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: org.osgi.xmlns.metatype.v1_4
     * 
     */
    public ObjectFactory() {
    }

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

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

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

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

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

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

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

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

    /**
     * Create an instance of {@link JAXBElement }{@code <}{@link Tmetadata }{@code >}}
     * 
     */
    @XmlElementDecl(namespace = "http://www.osgi.org/xmlns/metatype/v1.4.0", name = "MetaData")
    public JAXBElement<Tmetadata> createMetaData(Tmetadata value) {
        return new JAXBElement<Tmetadata>(_MetaData_QNAME, Tmetadata.class, null, value);
    }

    /**
     * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}}
     * 
     */
    @XmlElementDecl(namespace = "", name = "Value", scope = Tattribute.class)
    public JAXBElement<String> createTattributeValue(String value) {
        return new JAXBElement<String>(_TattributeValue_QNAME, String.class, Tattribute.class, value);
    }

    /**
     * Create an instance of {@link JAXBElement }{@code <}{@link Tocd }{@code >}}
     * 
     */
    @XmlElementDecl(namespace = "", name = "OCD", scope = Tmetadata.class)
    public JAXBElement<Tocd> createTmetadataOCD(Tocd value) {
        return new JAXBElement<Tocd>(_TmetadataOCD_QNAME, Tocd.class, Tmetadata.class, value);
    }

    /**
     * Create an instance of {@link JAXBElement }{@code <}{@link Tdesignate }{@code >}}
     * 
     */
    @XmlElementDecl(namespace = "", name = "Designate", scope = Tmetadata.class)
    public JAXBElement<Tdesignate> createTmetadataDesignate(Tdesignate value) {
        return new JAXBElement<Tdesignate>(_TmetadataDesignate_QNAME, Tdesignate.class, Tmetadata.class, value);
    }

    /**
     * Create an instance of {@link JAXBElement }{@code <}{@link Toption }{@code >}}
     * 
     */
    @XmlElementDecl(namespace = "", name = "Option", scope = Tad.class)
    public JAXBElement<Toption> createTadOption(Toption value) {
        return new JAXBElement<Toption>(_TadOption_QNAME, Toption.class, Tad.class, value);
    }

    /**
     * Create an instance of {@link JAXBElement }{@code <}{@link Tad }{@code >}}
     * 
     */
    @XmlElementDecl(namespace = "", name = "AD", scope = Tocd.class)
    public JAXBElement<Tad> createTocdAD(Tad value) {
        return new JAXBElement<Tad>(_TocdAD_QNAME, Tad.class, Tocd.class, value);
    }

    /**
     * Create an instance of {@link JAXBElement }{@code <}{@link Ticon }{@code >}}
     * 
     */
    @XmlElementDecl(namespace = "", name = "Icon", scope = Tocd.class)
    public JAXBElement<Ticon> createTocdIcon(Ticon value) {
        return new JAXBElement<Ticon>(_TocdIcon_QNAME, Ticon.class, Tocd.class, value);
    }

    /**
     * Create an instance of {@link JAXBElement }{@code <}{@link Tattribute }{@code >}}
     * 
     */
    @XmlElementDecl(namespace = "", name = "Attribute", scope = Tobject.class)
    public JAXBElement<Tattribute> createTobjectAttribute(Tattribute value) {
        return new JAXBElement<Tattribute>(_TobjectAttribute_QNAME, Tattribute.class, Tobject.class, value);
    }

}
