/*
 * An XML document type.
 * Localname: service-profile
 * Namespace: http://www.bea.com/2003/03/wli/tpm
 * Java type: com.bea.x2003.x03.wli.tpm.ServiceProfileDocument
 *
 * Automatically generated - do not modify.
 */
package com.bea.x2003.x03.wli.tpm;


/**
 * A document containing one service-profile(@http://www.bea.com/2003/03/wli/tpm) element.
 *
 * This is a complex type.
 */
public interface ServiceProfileDocument extends org.apache.xmlbeans.XmlObject
{
    public static final org.apache.xmlbeans.SchemaType type = (org.apache.xmlbeans.SchemaType)
        org.apache.xmlbeans.XmlBeans.typeSystemForClassLoader(ServiceProfileDocument.class.getClassLoader(), "schemaorg_apache_xmlbeans.system.SchemasTypeSystem").resolveHandle("serviceprofilec4b9doctype");
    
    /**
     * Gets the "service-profile" element
     */
    com.bea.x2003.x03.wli.tpm.ServiceProfileDocument.ServiceProfile getServiceProfile();
    
    /**
     * Sets the "service-profile" element
     */
    void setServiceProfile(com.bea.x2003.x03.wli.tpm.ServiceProfileDocument.ServiceProfile serviceProfile);
    
    /**
     * Appends and returns a new empty "service-profile" element
     */
    com.bea.x2003.x03.wli.tpm.ServiceProfileDocument.ServiceProfile addNewServiceProfile();
    
    /**
     * An XML service-profile(@http://www.bea.com/2003/03/wli/tpm).
     *
     * This is a complex type.
     */
    public interface ServiceProfile extends org.apache.xmlbeans.XmlObject
    {
        public static final org.apache.xmlbeans.SchemaType type = (org.apache.xmlbeans.SchemaType)
            org.apache.xmlbeans.XmlBeans.typeSystemForClassLoader(ServiceProfile.class.getClassLoader(), "schemaorg_apache_xmlbeans.system.SchemasTypeSystem").resolveHandle("serviceprofilec5dcelemtype");
        
        /**
         * Gets the "local-trading-partner" attribute
         */
        java.lang.String getLocalTradingPartner();
        
        /**
         * Gets (as xml) the "local-trading-partner" attribute
         */
        com.bea.x2003.x03.wli.tpm.Reference xgetLocalTradingPartner();
        
        /**
         * True if has "local-trading-partner" attribute
         */
        boolean isSetLocalTradingPartner();
        
        /**
         * Sets the "local-trading-partner" attribute
         */
        void setLocalTradingPartner(java.lang.String localTradingPartner);
        
        /**
         * Sets (as xml) the "local-trading-partner" attribute
         */
        void xsetLocalTradingPartner(com.bea.x2003.x03.wli.tpm.Reference localTradingPartner);
        
        /**
         * Unsets the "local-trading-partner" attribute
         */
        void unsetLocalTradingPartner();
        
        /**
         * Gets the "local-binding" attribute
         */
        java.lang.String getLocalBinding();
        
        /**
         * Gets (as xml) the "local-binding" attribute
         */
        com.bea.x2003.x03.wli.tpm.Reference xgetLocalBinding();
        
        /**
         * True if has "local-binding" attribute
         */
        boolean isSetLocalBinding();
        
        /**
         * Sets the "local-binding" attribute
         */
        void setLocalBinding(java.lang.String localBinding);
        
        /**
         * Sets (as xml) the "local-binding" attribute
         */
        void xsetLocalBinding(com.bea.x2003.x03.wli.tpm.Reference localBinding);
        
        /**
         * Unsets the "local-binding" attribute
         */
        void unsetLocalBinding();
        
        /**
         * Gets the "external-trading-partner" attribute
         */
        java.lang.String getExternalTradingPartner();
        
        /**
         * Gets (as xml) the "external-trading-partner" attribute
         */
        com.bea.x2003.x03.wli.tpm.Reference xgetExternalTradingPartner();
        
        /**
         * Sets the "external-trading-partner" attribute
         */
        void setExternalTradingPartner(java.lang.String externalTradingPartner);
        
        /**
         * Sets (as xml) the "external-trading-partner" attribute
         */
        void xsetExternalTradingPartner(com.bea.x2003.x03.wli.tpm.Reference externalTradingPartner);
        
        /**
         * Gets the "external-binding" attribute
         */
        java.lang.String getExternalBinding();
        
        /**
         * Gets (as xml) the "external-binding" attribute
         */
        com.bea.x2003.x03.wli.tpm.Reference xgetExternalBinding();
        
        /**
         * True if has "external-binding" attribute
         */
        boolean isSetExternalBinding();
        
        /**
         * Sets the "external-binding" attribute
         */
        void setExternalBinding(java.lang.String externalBinding);
        
        /**
         * Sets (as xml) the "external-binding" attribute
         */
        void xsetExternalBinding(com.bea.x2003.x03.wli.tpm.Reference externalBinding);
        
        /**
         * Unsets the "external-binding" attribute
         */
        void unsetExternalBinding();
        
        /**
         * Gets the "status" attribute
         */
        com.bea.x2003.x03.wli.tpm.ServiceProfileDocument.ServiceProfile.Status.Enum getStatus();
        
        /**
         * Gets (as xml) the "status" attribute
         */
        com.bea.x2003.x03.wli.tpm.ServiceProfileDocument.ServiceProfile.Status xgetStatus();
        
        /**
         * True if has "status" attribute
         */
        boolean isSetStatus();
        
        /**
         * Sets the "status" attribute
         */
        void setStatus(com.bea.x2003.x03.wli.tpm.ServiceProfileDocument.ServiceProfile.Status.Enum status);
        
        /**
         * Sets (as xml) the "status" attribute
         */
        void xsetStatus(com.bea.x2003.x03.wli.tpm.ServiceProfileDocument.ServiceProfile.Status status);
        
        /**
         * Unsets the "status" attribute
         */
        void unsetStatus();
        
        /**
         * Gets the "message-tracking" attribute
         */
        com.bea.x2003.x03.wli.tpm.ServiceProfileDocument.ServiceProfile.MessageTracking.Enum getMessageTracking();
        
        /**
         * Gets (as xml) the "message-tracking" attribute
         */
        com.bea.x2003.x03.wli.tpm.ServiceProfileDocument.ServiceProfile.MessageTracking xgetMessageTracking();
        
        /**
         * True if has "message-tracking" attribute
         */
        boolean isSetMessageTracking();
        
        /**
         * Sets the "message-tracking" attribute
         */
        void setMessageTracking(com.bea.x2003.x03.wli.tpm.ServiceProfileDocument.ServiceProfile.MessageTracking.Enum messageTracking);
        
        /**
         * Sets (as xml) the "message-tracking" attribute
         */
        void xsetMessageTracking(com.bea.x2003.x03.wli.tpm.ServiceProfileDocument.ServiceProfile.MessageTracking messageTracking);
        
        /**
         * Unsets the "message-tracking" attribute
         */
        void unsetMessageTracking();
        
        /**
         * Gets the "service-profile-id" attribute
         */
        java.lang.String getServiceProfileId();
        
        /**
         * Gets (as xml) the "service-profile-id" attribute
         */
        org.apache.xmlbeans.XmlString xgetServiceProfileId();
        
        /**
         * True if has "service-profile-id" attribute
         */
        boolean isSetServiceProfileId();
        
        /**
         * Sets the "service-profile-id" attribute
         */
        void setServiceProfileId(java.lang.String serviceProfileId);
        
        /**
         * Sets (as xml) the "service-profile-id" attribute
         */
        void xsetServiceProfileId(org.apache.xmlbeans.XmlString serviceProfileId);
        
        /**
         * Unsets the "service-profile-id" attribute
         */
        void unsetServiceProfileId();
        
        /**
         * An XML status(@).
         *
         * This is an atomic type that is a restriction of com.bea.x2003.x03.wli.tpm.ServiceProfileDocument$ServiceProfile$Status.
         */
        public interface Status extends org.apache.xmlbeans.XmlNMTOKEN
        {
            public static final org.apache.xmlbeans.SchemaType type = (org.apache.xmlbeans.SchemaType)
                org.apache.xmlbeans.XmlBeans.typeSystemForClassLoader(Status.class.getClassLoader(), "schemaorg_apache_xmlbeans.system.SchemasTypeSystem").resolveHandle("statusca8aattrtype");
            
            org.apache.xmlbeans.StringEnumAbstractBase enumValue();
            void set(org.apache.xmlbeans.StringEnumAbstractBase e);
            
            static final Enum ENABLED = Enum.forString("ENABLED");
            static final Enum DISABLED = Enum.forString("DISABLED");
            
            static final int INT_ENABLED = Enum.INT_ENABLED;
            static final int INT_DISABLED = Enum.INT_DISABLED;
            
            /**
             * Enumeration value class for com.bea.x2003.x03.wli.tpm.ServiceProfileDocument$ServiceProfile$Status.
             * These enum values can be used as follows:
             * <pre>
             * enum.toString(); // returns the string value of the enum
             * enum.intValue(); // returns an int value, useful for switches
             * // e.g., case Enum.INT_ENABLED
             * Enum.forString(s); // returns the enum value for a string
             * Enum.forInt(i); // returns the enum value for an int
             * </pre>
             * Enumeration objects are immutable singleton objects that
             * can be compared using == object equality. They have no
             * public constructor. See the constants defined within this
             * class for all the valid values.
             */
            static final class Enum extends org.apache.xmlbeans.StringEnumAbstractBase
            {
                /**
                 * Returns the enum value for a string, or null if none.
                 */
                public static Enum forString(java.lang.String s)
                    { return (Enum)table.forString(s); }
                /**
                 * Returns the enum value corresponding to an int, or null if none.
                 */
                public static Enum forInt(int i)
                    { return (Enum)table.forInt(i); }
                
                private Enum(java.lang.String s, int i)
                    { super(s, i); }
                
                static final int INT_ENABLED = 1;
                static final int INT_DISABLED = 2;
                
                public static final org.apache.xmlbeans.StringEnumAbstractBase.Table table =
                    new org.apache.xmlbeans.StringEnumAbstractBase.Table
                (
                    new Enum[]
                    {
                      new Enum("ENABLED", INT_ENABLED),
                      new Enum("DISABLED", INT_DISABLED),
                    }
                );
                private static final long serialVersionUID = 1L;
                private java.lang.Object readResolve() { return forInt(intValue()); } 
            }
            
            /**
             * A factory class with static methods for creating instances
             * of this type.
             */
            
            public static final class Factory
            {
                public static com.bea.x2003.x03.wli.tpm.ServiceProfileDocument.ServiceProfile.Status newValue(java.lang.Object obj) {
                  return (com.bea.x2003.x03.wli.tpm.ServiceProfileDocument.ServiceProfile.Status) type.newValue( obj ); }
                
                public static com.bea.x2003.x03.wli.tpm.ServiceProfileDocument.ServiceProfile.Status newInstance() {
                  return (com.bea.x2003.x03.wli.tpm.ServiceProfileDocument.ServiceProfile.Status) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().newInstance( type, null ); }
                
                public static com.bea.x2003.x03.wli.tpm.ServiceProfileDocument.ServiceProfile.Status newInstance(org.apache.xmlbeans.XmlOptions options) {
                  return (com.bea.x2003.x03.wli.tpm.ServiceProfileDocument.ServiceProfile.Status) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().newInstance( type, options ); }
                
                private Factory() { } // No instance of this class allowed
            }
        }
        
        /**
         * An XML message-tracking(@).
         *
         * This is an atomic type that is a restriction of com.bea.x2003.x03.wli.tpm.ServiceProfileDocument$ServiceProfile$MessageTracking.
         */
        public interface MessageTracking extends org.apache.xmlbeans.XmlNMTOKEN
        {
            public static final org.apache.xmlbeans.SchemaType type = (org.apache.xmlbeans.SchemaType)
                org.apache.xmlbeans.XmlBeans.typeSystemForClassLoader(MessageTracking.class.getClassLoader(), "schemaorg_apache_xmlbeans.system.SchemasTypeSystem").resolveHandle("messagetrackingc15fattrtype");
            
            org.apache.xmlbeans.StringEnumAbstractBase enumValue();
            void set(org.apache.xmlbeans.StringEnumAbstractBase e);
            
            static final Enum NONE = Enum.forString("NONE");
            static final Enum DEFAULT = Enum.forString("DEFAULT");
            static final Enum METADATA = Enum.forString("METADATA");
            static final Enum ALL = Enum.forString("ALL");
            
            static final int INT_NONE = Enum.INT_NONE;
            static final int INT_DEFAULT = Enum.INT_DEFAULT;
            static final int INT_METADATA = Enum.INT_METADATA;
            static final int INT_ALL = Enum.INT_ALL;
            
            /**
             * Enumeration value class for com.bea.x2003.x03.wli.tpm.ServiceProfileDocument$ServiceProfile$MessageTracking.
             * These enum values can be used as follows:
             * <pre>
             * enum.toString(); // returns the string value of the enum
             * enum.intValue(); // returns an int value, useful for switches
             * // e.g., case Enum.INT_NONE
             * Enum.forString(s); // returns the enum value for a string
             * Enum.forInt(i); // returns the enum value for an int
             * </pre>
             * Enumeration objects are immutable singleton objects that
             * can be compared using == object equality. They have no
             * public constructor. See the constants defined within this
             * class for all the valid values.
             */
            static final class Enum extends org.apache.xmlbeans.StringEnumAbstractBase
            {
                /**
                 * Returns the enum value for a string, or null if none.
                 */
                public static Enum forString(java.lang.String s)
                    { return (Enum)table.forString(s); }
                /**
                 * Returns the enum value corresponding to an int, or null if none.
                 */
                public static Enum forInt(int i)
                    { return (Enum)table.forInt(i); }
                
                private Enum(java.lang.String s, int i)
                    { super(s, i); }
                
                static final int INT_NONE = 1;
                static final int INT_DEFAULT = 2;
                static final int INT_METADATA = 3;
                static final int INT_ALL = 4;
                
                public static final org.apache.xmlbeans.StringEnumAbstractBase.Table table =
                    new org.apache.xmlbeans.StringEnumAbstractBase.Table
                (
                    new Enum[]
                    {
                      new Enum("NONE", INT_NONE),
                      new Enum("DEFAULT", INT_DEFAULT),
                      new Enum("METADATA", INT_METADATA),
                      new Enum("ALL", INT_ALL),
                    }
                );
                private static final long serialVersionUID = 1L;
                private java.lang.Object readResolve() { return forInt(intValue()); } 
            }
            
            /**
             * A factory class with static methods for creating instances
             * of this type.
             */
            
            public static final class Factory
            {
                public static com.bea.x2003.x03.wli.tpm.ServiceProfileDocument.ServiceProfile.MessageTracking newValue(java.lang.Object obj) {
                  return (com.bea.x2003.x03.wli.tpm.ServiceProfileDocument.ServiceProfile.MessageTracking) type.newValue( obj ); }
                
                public static com.bea.x2003.x03.wli.tpm.ServiceProfileDocument.ServiceProfile.MessageTracking newInstance() {
                  return (com.bea.x2003.x03.wli.tpm.ServiceProfileDocument.ServiceProfile.MessageTracking) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().newInstance( type, null ); }
                
                public static com.bea.x2003.x03.wli.tpm.ServiceProfileDocument.ServiceProfile.MessageTracking newInstance(org.apache.xmlbeans.XmlOptions options) {
                  return (com.bea.x2003.x03.wli.tpm.ServiceProfileDocument.ServiceProfile.MessageTracking) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().newInstance( type, options ); }
                
                private Factory() { } // No instance of this class allowed
            }
        }
        
        /**
         * A factory class with static methods for creating instances
         * of this type.
         */
        
        public static final class Factory
        {
            public static com.bea.x2003.x03.wli.tpm.ServiceProfileDocument.ServiceProfile newInstance() {
              return (com.bea.x2003.x03.wli.tpm.ServiceProfileDocument.ServiceProfile) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().newInstance( type, null ); }
            
            public static com.bea.x2003.x03.wli.tpm.ServiceProfileDocument.ServiceProfile newInstance(org.apache.xmlbeans.XmlOptions options) {
              return (com.bea.x2003.x03.wli.tpm.ServiceProfileDocument.ServiceProfile) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().newInstance( type, options ); }
            
            private Factory() { } // No instance of this class allowed
        }
    }
    
    /**
     * A factory class with static methods for creating instances
     * of this type.
     */
    
    public static final class Factory
    {
        public static com.bea.x2003.x03.wli.tpm.ServiceProfileDocument newInstance() {
          return (com.bea.x2003.x03.wli.tpm.ServiceProfileDocument) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().newInstance( type, null ); }
        
        public static com.bea.x2003.x03.wli.tpm.ServiceProfileDocument newInstance(org.apache.xmlbeans.XmlOptions options) {
          return (com.bea.x2003.x03.wli.tpm.ServiceProfileDocument) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().newInstance( type, options ); }
        
        /** @param xmlAsString the string value to parse */
        public static com.bea.x2003.x03.wli.tpm.ServiceProfileDocument parse(java.lang.String xmlAsString) throws org.apache.xmlbeans.XmlException {
          return (com.bea.x2003.x03.wli.tpm.ServiceProfileDocument) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().parse( xmlAsString, type, null ); }
        
        public static com.bea.x2003.x03.wli.tpm.ServiceProfileDocument parse(java.lang.String xmlAsString, org.apache.xmlbeans.XmlOptions options) throws org.apache.xmlbeans.XmlException {
          return (com.bea.x2003.x03.wli.tpm.ServiceProfileDocument) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().parse( xmlAsString, type, options ); }
        
        /** @param file the file from which to load an xml document */
        public static com.bea.x2003.x03.wli.tpm.ServiceProfileDocument parse(java.io.File file) throws org.apache.xmlbeans.XmlException, java.io.IOException {
          return (com.bea.x2003.x03.wli.tpm.ServiceProfileDocument) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().parse( file, type, null ); }
        
        public static com.bea.x2003.x03.wli.tpm.ServiceProfileDocument parse(java.io.File file, org.apache.xmlbeans.XmlOptions options) throws org.apache.xmlbeans.XmlException, java.io.IOException {
          return (com.bea.x2003.x03.wli.tpm.ServiceProfileDocument) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().parse( file, type, options ); }
        
        public static com.bea.x2003.x03.wli.tpm.ServiceProfileDocument parse(java.net.URL u) throws org.apache.xmlbeans.XmlException, java.io.IOException {
          return (com.bea.x2003.x03.wli.tpm.ServiceProfileDocument) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().parse( u, type, null ); }
        
        public static com.bea.x2003.x03.wli.tpm.ServiceProfileDocument parse(java.net.URL u, org.apache.xmlbeans.XmlOptions options) throws org.apache.xmlbeans.XmlException, java.io.IOException {
          return (com.bea.x2003.x03.wli.tpm.ServiceProfileDocument) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().parse( u, type, options ); }
        
        public static com.bea.x2003.x03.wli.tpm.ServiceProfileDocument parse(java.io.InputStream is) throws org.apache.xmlbeans.XmlException, java.io.IOException {
          return (com.bea.x2003.x03.wli.tpm.ServiceProfileDocument) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().parse( is, type, null ); }
        
        public static com.bea.x2003.x03.wli.tpm.ServiceProfileDocument parse(java.io.InputStream is, org.apache.xmlbeans.XmlOptions options) throws org.apache.xmlbeans.XmlException, java.io.IOException {
          return (com.bea.x2003.x03.wli.tpm.ServiceProfileDocument) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().parse( is, type, options ); }
        
        public static com.bea.x2003.x03.wli.tpm.ServiceProfileDocument parse(java.io.Reader r) throws org.apache.xmlbeans.XmlException, java.io.IOException {
          return (com.bea.x2003.x03.wli.tpm.ServiceProfileDocument) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().parse( r, type, null ); }
        
        public static com.bea.x2003.x03.wli.tpm.ServiceProfileDocument parse(java.io.Reader r, org.apache.xmlbeans.XmlOptions options) throws org.apache.xmlbeans.XmlException, java.io.IOException {
          return (com.bea.x2003.x03.wli.tpm.ServiceProfileDocument) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().parse( r, type, options ); }
        
        public static com.bea.x2003.x03.wli.tpm.ServiceProfileDocument parse(javax.xml.stream.XMLStreamReader sr) throws org.apache.xmlbeans.XmlException {
          return (com.bea.x2003.x03.wli.tpm.ServiceProfileDocument) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().parse( sr, type, null ); }
        
        public static com.bea.x2003.x03.wli.tpm.ServiceProfileDocument parse(javax.xml.stream.XMLStreamReader sr, org.apache.xmlbeans.XmlOptions options) throws org.apache.xmlbeans.XmlException {
          return (com.bea.x2003.x03.wli.tpm.ServiceProfileDocument) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().parse( sr, type, options ); }
        
        public static com.bea.x2003.x03.wli.tpm.ServiceProfileDocument parse(org.w3c.dom.Node node) throws org.apache.xmlbeans.XmlException {
          return (com.bea.x2003.x03.wli.tpm.ServiceProfileDocument) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().parse( node, type, null ); }
        
        public static com.bea.x2003.x03.wli.tpm.ServiceProfileDocument parse(org.w3c.dom.Node node, org.apache.xmlbeans.XmlOptions options) throws org.apache.xmlbeans.XmlException {
          return (com.bea.x2003.x03.wli.tpm.ServiceProfileDocument) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().parse( node, type, options ); }
        
        /** @deprecated {@link XMLInputStream} */
        public static com.bea.x2003.x03.wli.tpm.ServiceProfileDocument parse(org.apache.xmlbeans.xml.stream.XMLInputStream xis) throws org.apache.xmlbeans.XmlException, org.apache.xmlbeans.xml.stream.XMLStreamException {
          return (com.bea.x2003.x03.wli.tpm.ServiceProfileDocument) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().parse( xis, type, null ); }
        
        /** @deprecated {@link XMLInputStream} */
        public static com.bea.x2003.x03.wli.tpm.ServiceProfileDocument parse(org.apache.xmlbeans.xml.stream.XMLInputStream xis, org.apache.xmlbeans.XmlOptions options) throws org.apache.xmlbeans.XmlException, org.apache.xmlbeans.xml.stream.XMLStreamException {
          return (com.bea.x2003.x03.wli.tpm.ServiceProfileDocument) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().parse( xis, type, options ); }
        
        /** @deprecated {@link XMLInputStream} */
        public static org.apache.xmlbeans.xml.stream.XMLInputStream newValidatingXMLInputStream(org.apache.xmlbeans.xml.stream.XMLInputStream xis) throws org.apache.xmlbeans.XmlException, org.apache.xmlbeans.xml.stream.XMLStreamException {
          return org.apache.xmlbeans.XmlBeans.getContextTypeLoader().newValidatingXMLInputStream( xis, type, null ); }
        
        /** @deprecated {@link XMLInputStream} */
        public static org.apache.xmlbeans.xml.stream.XMLInputStream newValidatingXMLInputStream(org.apache.xmlbeans.xml.stream.XMLInputStream xis, org.apache.xmlbeans.XmlOptions options) throws org.apache.xmlbeans.XmlException, org.apache.xmlbeans.xml.stream.XMLStreamException {
          return org.apache.xmlbeans.XmlBeans.getContextTypeLoader().newValidatingXMLInputStream( xis, type, options ); }
        
        private Factory() { } // No instance of this class allowed
    }
}
