/* ========================================================================
 * Copyright (c) 2005-2021 The OPC Foundation, Inc. All rights reserved.
 *
 * OPC Foundation MIT License 1.00
 * 
 * Permission is hereby granted, free of charge, to any person
 * obtaining a copy of this software and associated documentation
 * files (the "Software"), to deal in the Software without
 * restriction, including without limitation the rights to use,
 * copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the
 * Software is furnished to do so, subject to the following
 * conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 * OTHER DEALINGS IN THE SOFTWARE.
 *
 * The complete license agreement can be found here:
 * http://opcfoundation.org/License/MIT/1.00/
 * ======================================================================*/

using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.Runtime.Serialization;

namespace Opc.Ua
{
    #region Enumeration Enumeration
    #if (!OPCUA_EXCLUDE_Enumeration)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public enum Enumeration
    {
    }

    #region EnumerationCollection Class
    /// <summary>
    /// A collection of Enumeration objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfEnumeration", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "Enumeration")]
    #if !NET_STANDARD
    public partial class EnumerationCollection : List<Enumeration>, ICloneable
    #else
    public partial class EnumerationCollection : List<Enumeration>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public EnumerationCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public EnumerationCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public EnumerationCollection(IEnumerable<Enumeration> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator EnumerationCollection(Enumeration[] values)
        {
            if (values != null)
            {
                return new EnumerationCollection(values);
            }

            return new EnumerationCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator Enumeration[](EnumerationCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (EnumerationCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            EnumerationCollection clone = new EnumerationCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((Enumeration)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region NamingRuleType Enumeration
    #if (!OPCUA_EXCLUDE_NamingRuleType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public enum NamingRuleType
    {
        /// <remarks />
        [EnumMember(Value = "Mandatory_1")]
        Mandatory = 1,

        /// <remarks />
        [EnumMember(Value = "Optional_2")]
        Optional = 2,

        /// <remarks />
        [EnumMember(Value = "Constraint_3")]
        Constraint = 3,
    }

    #region NamingRuleTypeCollection Class
    /// <summary>
    /// A collection of NamingRuleType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfNamingRuleType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "NamingRuleType")]
    #if !NET_STANDARD
    public partial class NamingRuleTypeCollection : List<NamingRuleType>, ICloneable
    #else
    public partial class NamingRuleTypeCollection : List<NamingRuleType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public NamingRuleTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public NamingRuleTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public NamingRuleTypeCollection(IEnumerable<NamingRuleType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator NamingRuleTypeCollection(NamingRuleType[] values)
        {
            if (values != null)
            {
                return new NamingRuleTypeCollection(values);
            }

            return new NamingRuleTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator NamingRuleType[](NamingRuleTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (NamingRuleTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            NamingRuleTypeCollection clone = new NamingRuleTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((NamingRuleType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region Union Class
    #if (!OPCUA_EXCLUDE_Union)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class Union : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public Union()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
        }
        #endregion

        #region Public Properties
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.Union; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.Union_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.Union_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            Union value = encodeable as Union;

            if (value == null)
            {
                return false;
            }


            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (Union)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            Union clone = (Union)base.MemberwiseClone();


            return clone;
        }
        #endregion

        #region Private Fields
        #endregion
    }

    #region UnionCollection Class
    /// <summary>
    /// A collection of Union objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfUnion", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "Union")]
    #if !NET_STANDARD
    public partial class UnionCollection : List<Union>, ICloneable
    #else
    public partial class UnionCollection : List<Union>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public UnionCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public UnionCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public UnionCollection(IEnumerable<Union> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator UnionCollection(Union[] values)
        {
            if (values != null)
            {
                return new UnionCollection(values);
            }

            return new UnionCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator Union[](UnionCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (UnionCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            UnionCollection clone = new UnionCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((Union)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region KeyValuePair Class
    #if (!OPCUA_EXCLUDE_KeyValuePair)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class KeyValuePair : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public KeyValuePair()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_key = null;
            m_value = Variant.Null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "Key", IsRequired = false, Order = 1)]
        public QualifiedName Key
        {
            get { return m_key;  }
            set { m_key = value; }
        }

        /// <remarks />
        [DataMember(Name = "Value", IsRequired = false, Order = 2)]
        public Variant Value
        {
            get { return m_value;  }
            set { m_value = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.KeyValuePair; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.KeyValuePair_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.KeyValuePair_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteQualifiedName("Key", Key);
            encoder.WriteVariant("Value", Value);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            Key = decoder.ReadQualifiedName("Key");
            Value = decoder.ReadVariant("Value");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            KeyValuePair value = encodeable as KeyValuePair;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_key, value.m_key)) return false;
            if (!Utils.IsEqual(m_value, value.m_value)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (KeyValuePair)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            KeyValuePair clone = (KeyValuePair)base.MemberwiseClone();

            clone.m_key = (QualifiedName)Utils.Clone(this.m_key);
            clone.m_value = (Variant)Utils.Clone(this.m_value);

            return clone;
        }
        #endregion

        #region Private Fields
        private QualifiedName m_key;
        private Variant m_value;
        #endregion
    }

    #region KeyValuePairCollection Class
    /// <summary>
    /// A collection of KeyValuePair objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfKeyValuePair", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "KeyValuePair")]
    #if !NET_STANDARD
    public partial class KeyValuePairCollection : List<KeyValuePair>, ICloneable
    #else
    public partial class KeyValuePairCollection : List<KeyValuePair>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public KeyValuePairCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public KeyValuePairCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public KeyValuePairCollection(IEnumerable<KeyValuePair> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator KeyValuePairCollection(KeyValuePair[] values)
        {
            if (values != null)
            {
                return new KeyValuePairCollection(values);
            }

            return new KeyValuePairCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator KeyValuePair[](KeyValuePairCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (KeyValuePairCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            KeyValuePairCollection clone = new KeyValuePairCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((KeyValuePair)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region AdditionalParametersType Class
    #if (!OPCUA_EXCLUDE_AdditionalParametersType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class AdditionalParametersType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public AdditionalParametersType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_parameters = new KeyValuePairCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "Parameters", IsRequired = false, Order = 1)]
        public KeyValuePairCollection Parameters
        {
            get
            {
                return m_parameters;
            }

            set
            {
                m_parameters = value;

                if (value == null)
                {
                    m_parameters = new KeyValuePairCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.AdditionalParametersType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.AdditionalParametersType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.AdditionalParametersType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeableArray("Parameters", Parameters.ToArray(), typeof(KeyValuePair));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            Parameters = (KeyValuePairCollection)decoder.ReadEncodeableArray("Parameters", typeof(KeyValuePair));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            AdditionalParametersType value = encodeable as AdditionalParametersType;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_parameters, value.m_parameters)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (AdditionalParametersType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            AdditionalParametersType clone = (AdditionalParametersType)base.MemberwiseClone();

            clone.m_parameters = (KeyValuePairCollection)Utils.Clone(this.m_parameters);

            return clone;
        }
        #endregion

        #region Private Fields
        private KeyValuePairCollection m_parameters;
        #endregion
    }
    #endif
    #endregion

    #region EphemeralKeyType Class
    #if (!OPCUA_EXCLUDE_EphemeralKeyType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class EphemeralKeyType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public EphemeralKeyType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_publicKey = null;
            m_signature = null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "PublicKey", IsRequired = false, Order = 1)]
        public byte[] PublicKey
        {
            get { return m_publicKey;  }
            set { m_publicKey = value; }
        }

        /// <remarks />
        [DataMember(Name = "Signature", IsRequired = false, Order = 2)]
        public byte[] Signature
        {
            get { return m_signature;  }
            set { m_signature = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.EphemeralKeyType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.EphemeralKeyType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.EphemeralKeyType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteByteString("PublicKey", PublicKey);
            encoder.WriteByteString("Signature", Signature);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            PublicKey = decoder.ReadByteString("PublicKey");
            Signature = decoder.ReadByteString("Signature");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            EphemeralKeyType value = encodeable as EphemeralKeyType;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_publicKey, value.m_publicKey)) return false;
            if (!Utils.IsEqual(m_signature, value.m_signature)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (EphemeralKeyType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            EphemeralKeyType clone = (EphemeralKeyType)base.MemberwiseClone();

            clone.m_publicKey = (byte[])Utils.Clone(this.m_publicKey);
            clone.m_signature = (byte[])Utils.Clone(this.m_signature);

            return clone;
        }
        #endregion

        #region Private Fields
        private byte[] m_publicKey;
        private byte[] m_signature;
        #endregion
    }
    #endif
    #endregion

    #region EndpointType Class
    #if (!OPCUA_EXCLUDE_EndpointType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class EndpointType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public EndpointType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_endpointUrl = null;
            m_securityMode = MessageSecurityMode.Invalid;
            m_securityPolicyUri = null;
            m_transportProfileUri = null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "EndpointUrl", IsRequired = false, Order = 1)]
        public string EndpointUrl
        {
            get { return m_endpointUrl;  }
            set { m_endpointUrl = value; }
        }

        /// <remarks />
        [DataMember(Name = "SecurityMode", IsRequired = false, Order = 2)]
        public MessageSecurityMode SecurityMode
        {
            get { return m_securityMode;  }
            set { m_securityMode = value; }
        }

        /// <remarks />
        [DataMember(Name = "SecurityPolicyUri", IsRequired = false, Order = 3)]
        public string SecurityPolicyUri
        {
            get { return m_securityPolicyUri;  }
            set { m_securityPolicyUri = value; }
        }

        /// <remarks />
        [DataMember(Name = "TransportProfileUri", IsRequired = false, Order = 4)]
        public string TransportProfileUri
        {
            get { return m_transportProfileUri;  }
            set { m_transportProfileUri = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.EndpointType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.EndpointType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.EndpointType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteString("EndpointUrl", EndpointUrl);
            encoder.WriteEnumerated("SecurityMode", SecurityMode);
            encoder.WriteString("SecurityPolicyUri", SecurityPolicyUri);
            encoder.WriteString("TransportProfileUri", TransportProfileUri);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            EndpointUrl = decoder.ReadString("EndpointUrl");
            SecurityMode = (MessageSecurityMode)decoder.ReadEnumerated("SecurityMode", typeof(MessageSecurityMode));
            SecurityPolicyUri = decoder.ReadString("SecurityPolicyUri");
            TransportProfileUri = decoder.ReadString("TransportProfileUri");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            EndpointType value = encodeable as EndpointType;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_endpointUrl, value.m_endpointUrl)) return false;
            if (!Utils.IsEqual(m_securityMode, value.m_securityMode)) return false;
            if (!Utils.IsEqual(m_securityPolicyUri, value.m_securityPolicyUri)) return false;
            if (!Utils.IsEqual(m_transportProfileUri, value.m_transportProfileUri)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (EndpointType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            EndpointType clone = (EndpointType)base.MemberwiseClone();

            clone.m_endpointUrl = (string)Utils.Clone(this.m_endpointUrl);
            clone.m_securityMode = (MessageSecurityMode)Utils.Clone(this.m_securityMode);
            clone.m_securityPolicyUri = (string)Utils.Clone(this.m_securityPolicyUri);
            clone.m_transportProfileUri = (string)Utils.Clone(this.m_transportProfileUri);

            return clone;
        }
        #endregion

        #region Private Fields
        private string m_endpointUrl;
        private MessageSecurityMode m_securityMode;
        private string m_securityPolicyUri;
        private string m_transportProfileUri;
        #endregion
    }

    #region EndpointTypeCollection Class
    /// <summary>
    /// A collection of EndpointType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfEndpointType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "EndpointType")]
    #if !NET_STANDARD
    public partial class EndpointTypeCollection : List<EndpointType>, ICloneable
    #else
    public partial class EndpointTypeCollection : List<EndpointType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public EndpointTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public EndpointTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public EndpointTypeCollection(IEnumerable<EndpointType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator EndpointTypeCollection(EndpointType[] values)
        {
            if (values != null)
            {
                return new EndpointTypeCollection(values);
            }

            return new EndpointTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator EndpointType[](EndpointTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (EndpointTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            EndpointTypeCollection clone = new EndpointTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((EndpointType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region RationalNumber Class
    #if (!OPCUA_EXCLUDE_RationalNumber)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class RationalNumber : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public RationalNumber()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_numerator = (int)0;
            m_denominator = (uint)0;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "Numerator", IsRequired = false, Order = 1)]
        public int Numerator
        {
            get { return m_numerator;  }
            set { m_numerator = value; }
        }

        /// <remarks />
        [DataMember(Name = "Denominator", IsRequired = false, Order = 2)]
        public uint Denominator
        {
            get { return m_denominator;  }
            set { m_denominator = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.RationalNumber; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.RationalNumber_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.RationalNumber_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteInt32("Numerator", Numerator);
            encoder.WriteUInt32("Denominator", Denominator);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            Numerator = decoder.ReadInt32("Numerator");
            Denominator = decoder.ReadUInt32("Denominator");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            RationalNumber value = encodeable as RationalNumber;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_numerator, value.m_numerator)) return false;
            if (!Utils.IsEqual(m_denominator, value.m_denominator)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (RationalNumber)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            RationalNumber clone = (RationalNumber)base.MemberwiseClone();

            clone.m_numerator = (int)Utils.Clone(this.m_numerator);
            clone.m_denominator = (uint)Utils.Clone(this.m_denominator);

            return clone;
        }
        #endregion

        #region Private Fields
        private int m_numerator;
        private uint m_denominator;
        #endregion
    }

    #region RationalNumberCollection Class
    /// <summary>
    /// A collection of RationalNumber objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfRationalNumber", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "RationalNumber")]
    #if !NET_STANDARD
    public partial class RationalNumberCollection : List<RationalNumber>, ICloneable
    #else
    public partial class RationalNumberCollection : List<RationalNumber>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public RationalNumberCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public RationalNumberCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public RationalNumberCollection(IEnumerable<RationalNumber> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator RationalNumberCollection(RationalNumber[] values)
        {
            if (values != null)
            {
                return new RationalNumberCollection(values);
            }

            return new RationalNumberCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator RationalNumber[](RationalNumberCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (RationalNumberCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            RationalNumberCollection clone = new RationalNumberCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((RationalNumber)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region Vector Class
    #if (!OPCUA_EXCLUDE_Vector)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class Vector : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public Vector()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
        }
        #endregion

        #region Public Properties
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.Vector; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.Vector_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.Vector_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            Vector value = encodeable as Vector;

            if (value == null)
            {
                return false;
            }


            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (Vector)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            Vector clone = (Vector)base.MemberwiseClone();


            return clone;
        }
        #endregion

        #region Private Fields
        #endregion
    }

    #region VectorCollection Class
    /// <summary>
    /// A collection of Vector objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfVector", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "Vector")]
    #if !NET_STANDARD
    public partial class VectorCollection : List<Vector>, ICloneable
    #else
    public partial class VectorCollection : List<Vector>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public VectorCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public VectorCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public VectorCollection(IEnumerable<Vector> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator VectorCollection(Vector[] values)
        {
            if (values != null)
            {
                return new VectorCollection(values);
            }

            return new VectorCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator Vector[](VectorCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (VectorCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            VectorCollection clone = new VectorCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((Vector)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region ThreeDVector Class
    #if (!OPCUA_EXCLUDE_ThreeDVector)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ThreeDVector : Vector
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ThreeDVector()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_x = (double)0;
            m_y = (double)0;
            m_z = (double)0;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "X", IsRequired = false, Order = 1)]
        public double X
        {
            get { return m_x;  }
            set { m_x = value; }
        }

        /// <remarks />
        [DataMember(Name = "Y", IsRequired = false, Order = 2)]
        public double Y
        {
            get { return m_y;  }
            set { m_y = value; }
        }

        /// <remarks />
        [DataMember(Name = "Z", IsRequired = false, Order = 3)]
        public double Z
        {
            get { return m_z;  }
            set { m_z = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ThreeDVector; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ThreeDVector_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ThreeDVector_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteDouble("X", X);
            encoder.WriteDouble("Y", Y);
            encoder.WriteDouble("Z", Z);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            X = decoder.ReadDouble("X");
            Y = decoder.ReadDouble("Y");
            Z = decoder.ReadDouble("Z");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ThreeDVector value = encodeable as ThreeDVector;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_x, value.m_x)) return false;
            if (!Utils.IsEqual(m_y, value.m_y)) return false;
            if (!Utils.IsEqual(m_z, value.m_z)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (ThreeDVector)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ThreeDVector clone = (ThreeDVector)base.MemberwiseClone();

            clone.m_x = (double)Utils.Clone(this.m_x);
            clone.m_y = (double)Utils.Clone(this.m_y);
            clone.m_z = (double)Utils.Clone(this.m_z);

            return clone;
        }
        #endregion

        #region Private Fields
        private double m_x;
        private double m_y;
        private double m_z;
        #endregion
    }

    #region ThreeDVectorCollection Class
    /// <summary>
    /// A collection of ThreeDVector objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfThreeDVector", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "ThreeDVector")]
    #if !NET_STANDARD
    public partial class ThreeDVectorCollection : List<ThreeDVector>, ICloneable
    #else
    public partial class ThreeDVectorCollection : List<ThreeDVector>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public ThreeDVectorCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public ThreeDVectorCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public ThreeDVectorCollection(IEnumerable<ThreeDVector> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator ThreeDVectorCollection(ThreeDVector[] values)
        {
            if (values != null)
            {
                return new ThreeDVectorCollection(values);
            }

            return new ThreeDVectorCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator ThreeDVector[](ThreeDVectorCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (ThreeDVectorCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ThreeDVectorCollection clone = new ThreeDVectorCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((ThreeDVector)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region CartesianCoordinates Class
    #if (!OPCUA_EXCLUDE_CartesianCoordinates)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class CartesianCoordinates : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public CartesianCoordinates()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
        }
        #endregion

        #region Public Properties
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.CartesianCoordinates; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.CartesianCoordinates_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.CartesianCoordinates_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            CartesianCoordinates value = encodeable as CartesianCoordinates;

            if (value == null)
            {
                return false;
            }


            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (CartesianCoordinates)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            CartesianCoordinates clone = (CartesianCoordinates)base.MemberwiseClone();


            return clone;
        }
        #endregion

        #region Private Fields
        #endregion
    }

    #region CartesianCoordinatesCollection Class
    /// <summary>
    /// A collection of CartesianCoordinates objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfCartesianCoordinates", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "CartesianCoordinates")]
    #if !NET_STANDARD
    public partial class CartesianCoordinatesCollection : List<CartesianCoordinates>, ICloneable
    #else
    public partial class CartesianCoordinatesCollection : List<CartesianCoordinates>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public CartesianCoordinatesCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public CartesianCoordinatesCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public CartesianCoordinatesCollection(IEnumerable<CartesianCoordinates> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator CartesianCoordinatesCollection(CartesianCoordinates[] values)
        {
            if (values != null)
            {
                return new CartesianCoordinatesCollection(values);
            }

            return new CartesianCoordinatesCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator CartesianCoordinates[](CartesianCoordinatesCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (CartesianCoordinatesCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            CartesianCoordinatesCollection clone = new CartesianCoordinatesCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((CartesianCoordinates)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region ThreeDCartesianCoordinates Class
    #if (!OPCUA_EXCLUDE_ThreeDCartesianCoordinates)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ThreeDCartesianCoordinates : CartesianCoordinates
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ThreeDCartesianCoordinates()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_x = (double)0;
            m_y = (double)0;
            m_z = (double)0;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "X", IsRequired = false, Order = 1)]
        public double X
        {
            get { return m_x;  }
            set { m_x = value; }
        }

        /// <remarks />
        [DataMember(Name = "Y", IsRequired = false, Order = 2)]
        public double Y
        {
            get { return m_y;  }
            set { m_y = value; }
        }

        /// <remarks />
        [DataMember(Name = "Z", IsRequired = false, Order = 3)]
        public double Z
        {
            get { return m_z;  }
            set { m_z = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ThreeDCartesianCoordinates; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ThreeDCartesianCoordinates_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ThreeDCartesianCoordinates_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteDouble("X", X);
            encoder.WriteDouble("Y", Y);
            encoder.WriteDouble("Z", Z);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            X = decoder.ReadDouble("X");
            Y = decoder.ReadDouble("Y");
            Z = decoder.ReadDouble("Z");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ThreeDCartesianCoordinates value = encodeable as ThreeDCartesianCoordinates;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_x, value.m_x)) return false;
            if (!Utils.IsEqual(m_y, value.m_y)) return false;
            if (!Utils.IsEqual(m_z, value.m_z)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (ThreeDCartesianCoordinates)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ThreeDCartesianCoordinates clone = (ThreeDCartesianCoordinates)base.MemberwiseClone();

            clone.m_x = (double)Utils.Clone(this.m_x);
            clone.m_y = (double)Utils.Clone(this.m_y);
            clone.m_z = (double)Utils.Clone(this.m_z);

            return clone;
        }
        #endregion

        #region Private Fields
        private double m_x;
        private double m_y;
        private double m_z;
        #endregion
    }

    #region ThreeDCartesianCoordinatesCollection Class
    /// <summary>
    /// A collection of ThreeDCartesianCoordinates objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfThreeDCartesianCoordinates", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "ThreeDCartesianCoordinates")]
    #if !NET_STANDARD
    public partial class ThreeDCartesianCoordinatesCollection : List<ThreeDCartesianCoordinates>, ICloneable
    #else
    public partial class ThreeDCartesianCoordinatesCollection : List<ThreeDCartesianCoordinates>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public ThreeDCartesianCoordinatesCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public ThreeDCartesianCoordinatesCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public ThreeDCartesianCoordinatesCollection(IEnumerable<ThreeDCartesianCoordinates> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator ThreeDCartesianCoordinatesCollection(ThreeDCartesianCoordinates[] values)
        {
            if (values != null)
            {
                return new ThreeDCartesianCoordinatesCollection(values);
            }

            return new ThreeDCartesianCoordinatesCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator ThreeDCartesianCoordinates[](ThreeDCartesianCoordinatesCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (ThreeDCartesianCoordinatesCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ThreeDCartesianCoordinatesCollection clone = new ThreeDCartesianCoordinatesCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((ThreeDCartesianCoordinates)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region Orientation Class
    #if (!OPCUA_EXCLUDE_Orientation)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class Orientation : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public Orientation()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
        }
        #endregion

        #region Public Properties
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.Orientation; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.Orientation_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.Orientation_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            Orientation value = encodeable as Orientation;

            if (value == null)
            {
                return false;
            }


            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (Orientation)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            Orientation clone = (Orientation)base.MemberwiseClone();


            return clone;
        }
        #endregion

        #region Private Fields
        #endregion
    }

    #region OrientationCollection Class
    /// <summary>
    /// A collection of Orientation objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfOrientation", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "Orientation")]
    #if !NET_STANDARD
    public partial class OrientationCollection : List<Orientation>, ICloneable
    #else
    public partial class OrientationCollection : List<Orientation>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public OrientationCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public OrientationCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public OrientationCollection(IEnumerable<Orientation> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator OrientationCollection(Orientation[] values)
        {
            if (values != null)
            {
                return new OrientationCollection(values);
            }

            return new OrientationCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator Orientation[](OrientationCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (OrientationCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            OrientationCollection clone = new OrientationCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((Orientation)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region ThreeDOrientation Class
    #if (!OPCUA_EXCLUDE_ThreeDOrientation)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ThreeDOrientation : Orientation
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ThreeDOrientation()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_a = (double)0;
            m_b = (double)0;
            m_c = (double)0;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "A", IsRequired = false, Order = 1)]
        public double A
        {
            get { return m_a;  }
            set { m_a = value; }
        }

        /// <remarks />
        [DataMember(Name = "B", IsRequired = false, Order = 2)]
        public double B
        {
            get { return m_b;  }
            set { m_b = value; }
        }

        /// <remarks />
        [DataMember(Name = "C", IsRequired = false, Order = 3)]
        public double C
        {
            get { return m_c;  }
            set { m_c = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ThreeDOrientation; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ThreeDOrientation_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ThreeDOrientation_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteDouble("A", A);
            encoder.WriteDouble("B", B);
            encoder.WriteDouble("C", C);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            A = decoder.ReadDouble("A");
            B = decoder.ReadDouble("B");
            C = decoder.ReadDouble("C");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ThreeDOrientation value = encodeable as ThreeDOrientation;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_a, value.m_a)) return false;
            if (!Utils.IsEqual(m_b, value.m_b)) return false;
            if (!Utils.IsEqual(m_c, value.m_c)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (ThreeDOrientation)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ThreeDOrientation clone = (ThreeDOrientation)base.MemberwiseClone();

            clone.m_a = (double)Utils.Clone(this.m_a);
            clone.m_b = (double)Utils.Clone(this.m_b);
            clone.m_c = (double)Utils.Clone(this.m_c);

            return clone;
        }
        #endregion

        #region Private Fields
        private double m_a;
        private double m_b;
        private double m_c;
        #endregion
    }

    #region ThreeDOrientationCollection Class
    /// <summary>
    /// A collection of ThreeDOrientation objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfThreeDOrientation", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "ThreeDOrientation")]
    #if !NET_STANDARD
    public partial class ThreeDOrientationCollection : List<ThreeDOrientation>, ICloneable
    #else
    public partial class ThreeDOrientationCollection : List<ThreeDOrientation>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public ThreeDOrientationCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public ThreeDOrientationCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public ThreeDOrientationCollection(IEnumerable<ThreeDOrientation> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator ThreeDOrientationCollection(ThreeDOrientation[] values)
        {
            if (values != null)
            {
                return new ThreeDOrientationCollection(values);
            }

            return new ThreeDOrientationCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator ThreeDOrientation[](ThreeDOrientationCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (ThreeDOrientationCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ThreeDOrientationCollection clone = new ThreeDOrientationCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((ThreeDOrientation)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region Frame Class
    #if (!OPCUA_EXCLUDE_Frame)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class Frame : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public Frame()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
        }
        #endregion

        #region Public Properties
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.Frame; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.Frame_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.Frame_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            Frame value = encodeable as Frame;

            if (value == null)
            {
                return false;
            }


            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (Frame)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            Frame clone = (Frame)base.MemberwiseClone();


            return clone;
        }
        #endregion

        #region Private Fields
        #endregion
    }

    #region FrameCollection Class
    /// <summary>
    /// A collection of Frame objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfFrame", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "Frame")]
    #if !NET_STANDARD
    public partial class FrameCollection : List<Frame>, ICloneable
    #else
    public partial class FrameCollection : List<Frame>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public FrameCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public FrameCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public FrameCollection(IEnumerable<Frame> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator FrameCollection(Frame[] values)
        {
            if (values != null)
            {
                return new FrameCollection(values);
            }

            return new FrameCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator Frame[](FrameCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (FrameCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            FrameCollection clone = new FrameCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((Frame)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region ThreeDFrame Class
    #if (!OPCUA_EXCLUDE_ThreeDFrame)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ThreeDFrame : Frame
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ThreeDFrame()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_cartesianCoordinates = new ThreeDCartesianCoordinates();
            m_orientation = new ThreeDOrientation();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "CartesianCoordinates", IsRequired = false, Order = 1)]
        public ThreeDCartesianCoordinates CartesianCoordinates
        {
            get
            {
                return m_cartesianCoordinates;
            }

            set
            {
                m_cartesianCoordinates = value;

                if (value == null)
                {
                    m_cartesianCoordinates = new ThreeDCartesianCoordinates();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "Orientation", IsRequired = false, Order = 2)]
        public ThreeDOrientation Orientation
        {
            get
            {
                return m_orientation;
            }

            set
            {
                m_orientation = value;

                if (value == null)
                {
                    m_orientation = new ThreeDOrientation();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ThreeDFrame; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ThreeDFrame_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ThreeDFrame_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("CartesianCoordinates", CartesianCoordinates, typeof(ThreeDCartesianCoordinates));
            encoder.WriteEncodeable("Orientation", Orientation, typeof(ThreeDOrientation));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            CartesianCoordinates = (ThreeDCartesianCoordinates)decoder.ReadEncodeable("CartesianCoordinates", typeof(ThreeDCartesianCoordinates));
            Orientation = (ThreeDOrientation)decoder.ReadEncodeable("Orientation", typeof(ThreeDOrientation));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ThreeDFrame value = encodeable as ThreeDFrame;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_cartesianCoordinates, value.m_cartesianCoordinates)) return false;
            if (!Utils.IsEqual(m_orientation, value.m_orientation)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (ThreeDFrame)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ThreeDFrame clone = (ThreeDFrame)base.MemberwiseClone();

            clone.m_cartesianCoordinates = (ThreeDCartesianCoordinates)Utils.Clone(this.m_cartesianCoordinates);
            clone.m_orientation = (ThreeDOrientation)Utils.Clone(this.m_orientation);

            return clone;
        }
        #endregion

        #region Private Fields
        private ThreeDCartesianCoordinates m_cartesianCoordinates;
        private ThreeDOrientation m_orientation;
        #endregion
    }

    #region ThreeDFrameCollection Class
    /// <summary>
    /// A collection of ThreeDFrame objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfThreeDFrame", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "ThreeDFrame")]
    #if !NET_STANDARD
    public partial class ThreeDFrameCollection : List<ThreeDFrame>, ICloneable
    #else
    public partial class ThreeDFrameCollection : List<ThreeDFrame>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public ThreeDFrameCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public ThreeDFrameCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public ThreeDFrameCollection(IEnumerable<ThreeDFrame> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator ThreeDFrameCollection(ThreeDFrame[] values)
        {
            if (values != null)
            {
                return new ThreeDFrameCollection(values);
            }

            return new ThreeDFrameCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator ThreeDFrame[](ThreeDFrameCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (ThreeDFrameCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ThreeDFrameCollection clone = new ThreeDFrameCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((ThreeDFrame)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region OpenFileMode Enumeration
    #if (!OPCUA_EXCLUDE_OpenFileMode)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public enum OpenFileMode
    {
        /// <remarks />
        [EnumMember(Value = "Read_1")]
        Read = 1,

        /// <remarks />
        [EnumMember(Value = "Write_2")]
        Write = 2,

        /// <remarks />
        [EnumMember(Value = "EraseExisting_4")]
        EraseExisting = 4,

        /// <remarks />
        [EnumMember(Value = "Append_8")]
        Append = 8,
    }

    #region OpenFileModeCollection Class
    /// <summary>
    /// A collection of OpenFileMode objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfOpenFileMode", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "OpenFileMode")]
    #if !NET_STANDARD
    public partial class OpenFileModeCollection : List<OpenFileMode>, ICloneable
    #else
    public partial class OpenFileModeCollection : List<OpenFileMode>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public OpenFileModeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public OpenFileModeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public OpenFileModeCollection(IEnumerable<OpenFileMode> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator OpenFileModeCollection(OpenFileMode[] values)
        {
            if (values != null)
            {
                return new OpenFileModeCollection(values);
            }

            return new OpenFileModeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator OpenFileMode[](OpenFileModeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (OpenFileModeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            OpenFileModeCollection clone = new OpenFileModeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((OpenFileMode)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region IdentityCriteriaType Enumeration
    #if (!OPCUA_EXCLUDE_IdentityCriteriaType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public enum IdentityCriteriaType
    {
        /// <remarks />
        [EnumMember(Value = "UserName_1")]
        UserName = 1,

        /// <remarks />
        [EnumMember(Value = "Thumbprint_2")]
        Thumbprint = 2,

        /// <remarks />
        [EnumMember(Value = "Role_3")]
        Role = 3,

        /// <remarks />
        [EnumMember(Value = "GroupId_4")]
        GroupId = 4,

        /// <remarks />
        [EnumMember(Value = "Anonymous_5")]
        Anonymous = 5,

        /// <remarks />
        [EnumMember(Value = "AuthenticatedUser_6")]
        AuthenticatedUser = 6,

        /// <remarks />
        [EnumMember(Value = "Application_7")]
        Application = 7,
    }

    #region IdentityCriteriaTypeCollection Class
    /// <summary>
    /// A collection of IdentityCriteriaType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfIdentityCriteriaType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "IdentityCriteriaType")]
    #if !NET_STANDARD
    public partial class IdentityCriteriaTypeCollection : List<IdentityCriteriaType>, ICloneable
    #else
    public partial class IdentityCriteriaTypeCollection : List<IdentityCriteriaType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public IdentityCriteriaTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public IdentityCriteriaTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public IdentityCriteriaTypeCollection(IEnumerable<IdentityCriteriaType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator IdentityCriteriaTypeCollection(IdentityCriteriaType[] values)
        {
            if (values != null)
            {
                return new IdentityCriteriaTypeCollection(values);
            }

            return new IdentityCriteriaTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator IdentityCriteriaType[](IdentityCriteriaTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (IdentityCriteriaTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            IdentityCriteriaTypeCollection clone = new IdentityCriteriaTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((IdentityCriteriaType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region IdentityMappingRuleType Class
    #if (!OPCUA_EXCLUDE_IdentityMappingRuleType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class IdentityMappingRuleType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public IdentityMappingRuleType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_criteriaType = IdentityCriteriaType.UserName;
            m_criteria = null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "CriteriaType", IsRequired = false, Order = 1)]
        public IdentityCriteriaType CriteriaType
        {
            get { return m_criteriaType;  }
            set { m_criteriaType = value; }
        }

        /// <remarks />
        [DataMember(Name = "Criteria", IsRequired = false, Order = 2)]
        public string Criteria
        {
            get { return m_criteria;  }
            set { m_criteria = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.IdentityMappingRuleType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.IdentityMappingRuleType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.IdentityMappingRuleType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEnumerated("CriteriaType", CriteriaType);
            encoder.WriteString("Criteria", Criteria);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            CriteriaType = (IdentityCriteriaType)decoder.ReadEnumerated("CriteriaType", typeof(IdentityCriteriaType));
            Criteria = decoder.ReadString("Criteria");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            IdentityMappingRuleType value = encodeable as IdentityMappingRuleType;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_criteriaType, value.m_criteriaType)) return false;
            if (!Utils.IsEqual(m_criteria, value.m_criteria)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (IdentityMappingRuleType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            IdentityMappingRuleType clone = (IdentityMappingRuleType)base.MemberwiseClone();

            clone.m_criteriaType = (IdentityCriteriaType)Utils.Clone(this.m_criteriaType);
            clone.m_criteria = (string)Utils.Clone(this.m_criteria);

            return clone;
        }
        #endregion

        #region Private Fields
        private IdentityCriteriaType m_criteriaType;
        private string m_criteria;
        #endregion
    }

    #region IdentityMappingRuleTypeCollection Class
    /// <summary>
    /// A collection of IdentityMappingRuleType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfIdentityMappingRuleType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "IdentityMappingRuleType")]
    #if !NET_STANDARD
    public partial class IdentityMappingRuleTypeCollection : List<IdentityMappingRuleType>, ICloneable
    #else
    public partial class IdentityMappingRuleTypeCollection : List<IdentityMappingRuleType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public IdentityMappingRuleTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public IdentityMappingRuleTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public IdentityMappingRuleTypeCollection(IEnumerable<IdentityMappingRuleType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator IdentityMappingRuleTypeCollection(IdentityMappingRuleType[] values)
        {
            if (values != null)
            {
                return new IdentityMappingRuleTypeCollection(values);
            }

            return new IdentityMappingRuleTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator IdentityMappingRuleType[](IdentityMappingRuleTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (IdentityMappingRuleTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            IdentityMappingRuleTypeCollection clone = new IdentityMappingRuleTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((IdentityMappingRuleType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region CurrencyUnitType Class
    #if (!OPCUA_EXCLUDE_CurrencyUnitType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class CurrencyUnitType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public CurrencyUnitType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_numericCode = (short)0;
            m_exponent = (sbyte)0;
            m_alphabeticCode = null;
            m_currency = null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "NumericCode", IsRequired = false, Order = 1)]
        public short NumericCode
        {
            get { return m_numericCode;  }
            set { m_numericCode = value; }
        }

        /// <remarks />
        [DataMember(Name = "Exponent", IsRequired = false, Order = 2)]
        public sbyte Exponent
        {
            get { return m_exponent;  }
            set { m_exponent = value; }
        }

        /// <remarks />
        [DataMember(Name = "AlphabeticCode", IsRequired = false, Order = 3)]
        public string AlphabeticCode
        {
            get { return m_alphabeticCode;  }
            set { m_alphabeticCode = value; }
        }

        /// <remarks />
        [DataMember(Name = "Currency", IsRequired = false, Order = 4)]
        public LocalizedText Currency
        {
            get { return m_currency;  }
            set { m_currency = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.CurrencyUnitType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.CurrencyUnitType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.CurrencyUnitType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteInt16("NumericCode", NumericCode);
            encoder.WriteSByte("Exponent", Exponent);
            encoder.WriteString("AlphabeticCode", AlphabeticCode);
            encoder.WriteLocalizedText("Currency", Currency);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            NumericCode = decoder.ReadInt16("NumericCode");
            Exponent = decoder.ReadSByte("Exponent");
            AlphabeticCode = decoder.ReadString("AlphabeticCode");
            Currency = decoder.ReadLocalizedText("Currency");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            CurrencyUnitType value = encodeable as CurrencyUnitType;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_numericCode, value.m_numericCode)) return false;
            if (!Utils.IsEqual(m_exponent, value.m_exponent)) return false;
            if (!Utils.IsEqual(m_alphabeticCode, value.m_alphabeticCode)) return false;
            if (!Utils.IsEqual(m_currency, value.m_currency)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (CurrencyUnitType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            CurrencyUnitType clone = (CurrencyUnitType)base.MemberwiseClone();

            clone.m_numericCode = (short)Utils.Clone(this.m_numericCode);
            clone.m_exponent = (sbyte)Utils.Clone(this.m_exponent);
            clone.m_alphabeticCode = (string)Utils.Clone(this.m_alphabeticCode);
            clone.m_currency = (LocalizedText)Utils.Clone(this.m_currency);

            return clone;
        }
        #endregion

        #region Private Fields
        private short m_numericCode;
        private sbyte m_exponent;
        private string m_alphabeticCode;
        private LocalizedText m_currency;
        #endregion
    }

    #region CurrencyUnitTypeCollection Class
    /// <summary>
    /// A collection of CurrencyUnitType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfCurrencyUnitType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "CurrencyUnitType")]
    #if !NET_STANDARD
    public partial class CurrencyUnitTypeCollection : List<CurrencyUnitType>, ICloneable
    #else
    public partial class CurrencyUnitTypeCollection : List<CurrencyUnitType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public CurrencyUnitTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public CurrencyUnitTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public CurrencyUnitTypeCollection(IEnumerable<CurrencyUnitType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator CurrencyUnitTypeCollection(CurrencyUnitType[] values)
        {
            if (values != null)
            {
                return new CurrencyUnitTypeCollection(values);
            }

            return new CurrencyUnitTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator CurrencyUnitType[](CurrencyUnitTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (CurrencyUnitTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            CurrencyUnitTypeCollection clone = new CurrencyUnitTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((CurrencyUnitType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region TrustListMasks Enumeration
    #if (!OPCUA_EXCLUDE_TrustListMasks)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public enum TrustListMasks
    {
        /// <remarks />
        [EnumMember(Value = "None_0")]
        None = 0,

        /// <remarks />
        [EnumMember(Value = "TrustedCertificates_1")]
        TrustedCertificates = 1,

        /// <remarks />
        [EnumMember(Value = "TrustedCrls_2")]
        TrustedCrls = 2,

        /// <remarks />
        [EnumMember(Value = "IssuerCertificates_4")]
        IssuerCertificates = 4,

        /// <remarks />
        [EnumMember(Value = "IssuerCrls_8")]
        IssuerCrls = 8,

        /// <remarks />
        [EnumMember(Value = "All_15")]
        All = 15,
    }
    #endif
    #endregion

    #region TrustListDataType Class
    #if (!OPCUA_EXCLUDE_TrustListDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class TrustListDataType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public TrustListDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_specifiedLists = (uint)0;
            m_trustedCertificates = new ByteStringCollection();
            m_trustedCrls = new ByteStringCollection();
            m_issuerCertificates = new ByteStringCollection();
            m_issuerCrls = new ByteStringCollection();
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "SpecifiedLists", IsRequired = false, Order = 1)]
        public uint SpecifiedLists
        {
            get { return m_specifiedLists;  }
            set { m_specifiedLists = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "TrustedCertificates", IsRequired = false, Order = 2)]
        public ByteStringCollection TrustedCertificates
        {
            get
            {
                return m_trustedCertificates;
            }

            set
            {
                m_trustedCertificates = value;

                if (value == null)
                {
                    m_trustedCertificates = new ByteStringCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "TrustedCrls", IsRequired = false, Order = 3)]
        public ByteStringCollection TrustedCrls
        {
            get
            {
                return m_trustedCrls;
            }

            set
            {
                m_trustedCrls = value;

                if (value == null)
                {
                    m_trustedCrls = new ByteStringCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "IssuerCertificates", IsRequired = false, Order = 4)]
        public ByteStringCollection IssuerCertificates
        {
            get
            {
                return m_issuerCertificates;
            }

            set
            {
                m_issuerCertificates = value;

                if (value == null)
                {
                    m_issuerCertificates = new ByteStringCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "IssuerCrls", IsRequired = false, Order = 5)]
        public ByteStringCollection IssuerCrls
        {
            get
            {
                return m_issuerCrls;
            }

            set
            {
                m_issuerCrls = value;

                if (value == null)
                {
                    m_issuerCrls = new ByteStringCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.TrustListDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.TrustListDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.TrustListDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteUInt32("SpecifiedLists", SpecifiedLists);
            encoder.WriteByteStringArray("TrustedCertificates", TrustedCertificates);
            encoder.WriteByteStringArray("TrustedCrls", TrustedCrls);
            encoder.WriteByteStringArray("IssuerCertificates", IssuerCertificates);
            encoder.WriteByteStringArray("IssuerCrls", IssuerCrls);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            SpecifiedLists = decoder.ReadUInt32("SpecifiedLists");
            TrustedCertificates = decoder.ReadByteStringArray("TrustedCertificates");
            TrustedCrls = decoder.ReadByteStringArray("TrustedCrls");
            IssuerCertificates = decoder.ReadByteStringArray("IssuerCertificates");
            IssuerCrls = decoder.ReadByteStringArray("IssuerCrls");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            TrustListDataType value = encodeable as TrustListDataType;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_specifiedLists, value.m_specifiedLists)) return false;
            if (!Utils.IsEqual(m_trustedCertificates, value.m_trustedCertificates)) return false;
            if (!Utils.IsEqual(m_trustedCrls, value.m_trustedCrls)) return false;
            if (!Utils.IsEqual(m_issuerCertificates, value.m_issuerCertificates)) return false;
            if (!Utils.IsEqual(m_issuerCrls, value.m_issuerCrls)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (TrustListDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            TrustListDataType clone = (TrustListDataType)base.MemberwiseClone();

            clone.m_specifiedLists = (uint)Utils.Clone(this.m_specifiedLists);
            clone.m_trustedCertificates = (ByteStringCollection)Utils.Clone(this.m_trustedCertificates);
            clone.m_trustedCrls = (ByteStringCollection)Utils.Clone(this.m_trustedCrls);
            clone.m_issuerCertificates = (ByteStringCollection)Utils.Clone(this.m_issuerCertificates);
            clone.m_issuerCrls = (ByteStringCollection)Utils.Clone(this.m_issuerCrls);

            return clone;
        }
        #endregion

        #region Private Fields
        private uint m_specifiedLists;
        private ByteStringCollection m_trustedCertificates;
        private ByteStringCollection m_trustedCrls;
        private ByteStringCollection m_issuerCertificates;
        private ByteStringCollection m_issuerCrls;
        #endregion
    }

    #region TrustListDataTypeCollection Class
    /// <summary>
    /// A collection of TrustListDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfTrustListDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "TrustListDataType")]
    #if !NET_STANDARD
    public partial class TrustListDataTypeCollection : List<TrustListDataType>, ICloneable
    #else
    public partial class TrustListDataTypeCollection : List<TrustListDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public TrustListDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public TrustListDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public TrustListDataTypeCollection(IEnumerable<TrustListDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator TrustListDataTypeCollection(TrustListDataType[] values)
        {
            if (values != null)
            {
                return new TrustListDataTypeCollection(values);
            }

            return new TrustListDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator TrustListDataType[](TrustListDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (TrustListDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            TrustListDataTypeCollection clone = new TrustListDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((TrustListDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region DecimalDataType Class
    #if (!OPCUA_EXCLUDE_DecimalDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class DecimalDataType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public DecimalDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_scale = (short)0;
            m_value = null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "Scale", IsRequired = false, Order = 1)]
        public short Scale
        {
            get { return m_scale;  }
            set { m_scale = value; }
        }

        /// <remarks />
        [DataMember(Name = "Value", IsRequired = false, Order = 2)]
        public byte[] Value
        {
            get { return m_value;  }
            set { m_value = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.DecimalDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.DecimalDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.DecimalDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteInt16("Scale", Scale);
            encoder.WriteByteString("Value", Value);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            Scale = decoder.ReadInt16("Scale");
            Value = decoder.ReadByteString("Value");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            DecimalDataType value = encodeable as DecimalDataType;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_scale, value.m_scale)) return false;
            if (!Utils.IsEqual(m_value, value.m_value)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (DecimalDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            DecimalDataType clone = (DecimalDataType)base.MemberwiseClone();

            clone.m_scale = (short)Utils.Clone(this.m_scale);
            clone.m_value = (byte[])Utils.Clone(this.m_value);

            return clone;
        }
        #endregion

        #region Private Fields
        private short m_scale;
        private byte[] m_value;
        #endregion
    }
    #endif
    #endregion

    #region DataTypeSchemaHeader Class
    #if (!OPCUA_EXCLUDE_DataTypeSchemaHeader)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class DataTypeSchemaHeader : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public DataTypeSchemaHeader()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_namespaces = new StringCollection();
            m_structureDataTypes = new StructureDescriptionCollection();
            m_enumDataTypes = new EnumDescriptionCollection();
            m_simpleDataTypes = new SimpleTypeDescriptionCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "Namespaces", IsRequired = false, Order = 1)]
        public StringCollection Namespaces
        {
            get
            {
                return m_namespaces;
            }

            set
            {
                m_namespaces = value;

                if (value == null)
                {
                    m_namespaces = new StringCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "StructureDataTypes", IsRequired = false, Order = 2)]
        public StructureDescriptionCollection StructureDataTypes
        {
            get
            {
                return m_structureDataTypes;
            }

            set
            {
                m_structureDataTypes = value;

                if (value == null)
                {
                    m_structureDataTypes = new StructureDescriptionCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "EnumDataTypes", IsRequired = false, Order = 3)]
        public EnumDescriptionCollection EnumDataTypes
        {
            get
            {
                return m_enumDataTypes;
            }

            set
            {
                m_enumDataTypes = value;

                if (value == null)
                {
                    m_enumDataTypes = new EnumDescriptionCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "SimpleDataTypes", IsRequired = false, Order = 4)]
        public SimpleTypeDescriptionCollection SimpleDataTypes
        {
            get
            {
                return m_simpleDataTypes;
            }

            set
            {
                m_simpleDataTypes = value;

                if (value == null)
                {
                    m_simpleDataTypes = new SimpleTypeDescriptionCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.DataTypeSchemaHeader; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.DataTypeSchemaHeader_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.DataTypeSchemaHeader_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteStringArray("Namespaces", Namespaces);
            encoder.WriteEncodeableArray("StructureDataTypes", StructureDataTypes.ToArray(), typeof(StructureDescription));
            encoder.WriteEncodeableArray("EnumDataTypes", EnumDataTypes.ToArray(), typeof(EnumDescription));
            encoder.WriteEncodeableArray("SimpleDataTypes", SimpleDataTypes.ToArray(), typeof(SimpleTypeDescription));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            Namespaces = decoder.ReadStringArray("Namespaces");
            StructureDataTypes = (StructureDescriptionCollection)decoder.ReadEncodeableArray("StructureDataTypes", typeof(StructureDescription));
            EnumDataTypes = (EnumDescriptionCollection)decoder.ReadEncodeableArray("EnumDataTypes", typeof(EnumDescription));
            SimpleDataTypes = (SimpleTypeDescriptionCollection)decoder.ReadEncodeableArray("SimpleDataTypes", typeof(SimpleTypeDescription));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            DataTypeSchemaHeader value = encodeable as DataTypeSchemaHeader;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_namespaces, value.m_namespaces)) return false;
            if (!Utils.IsEqual(m_structureDataTypes, value.m_structureDataTypes)) return false;
            if (!Utils.IsEqual(m_enumDataTypes, value.m_enumDataTypes)) return false;
            if (!Utils.IsEqual(m_simpleDataTypes, value.m_simpleDataTypes)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (DataTypeSchemaHeader)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            DataTypeSchemaHeader clone = (DataTypeSchemaHeader)base.MemberwiseClone();

            clone.m_namespaces = (StringCollection)Utils.Clone(this.m_namespaces);
            clone.m_structureDataTypes = (StructureDescriptionCollection)Utils.Clone(this.m_structureDataTypes);
            clone.m_enumDataTypes = (EnumDescriptionCollection)Utils.Clone(this.m_enumDataTypes);
            clone.m_simpleDataTypes = (SimpleTypeDescriptionCollection)Utils.Clone(this.m_simpleDataTypes);

            return clone;
        }
        #endregion

        #region Private Fields
        private StringCollection m_namespaces;
        private StructureDescriptionCollection m_structureDataTypes;
        private EnumDescriptionCollection m_enumDataTypes;
        private SimpleTypeDescriptionCollection m_simpleDataTypes;
        #endregion
    }

    #region DataTypeSchemaHeaderCollection Class
    /// <summary>
    /// A collection of DataTypeSchemaHeader objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfDataTypeSchemaHeader", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "DataTypeSchemaHeader")]
    #if !NET_STANDARD
    public partial class DataTypeSchemaHeaderCollection : List<DataTypeSchemaHeader>, ICloneable
    #else
    public partial class DataTypeSchemaHeaderCollection : List<DataTypeSchemaHeader>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public DataTypeSchemaHeaderCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public DataTypeSchemaHeaderCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public DataTypeSchemaHeaderCollection(IEnumerable<DataTypeSchemaHeader> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator DataTypeSchemaHeaderCollection(DataTypeSchemaHeader[] values)
        {
            if (values != null)
            {
                return new DataTypeSchemaHeaderCollection(values);
            }

            return new DataTypeSchemaHeaderCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator DataTypeSchemaHeader[](DataTypeSchemaHeaderCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (DataTypeSchemaHeaderCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            DataTypeSchemaHeaderCollection clone = new DataTypeSchemaHeaderCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((DataTypeSchemaHeader)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region DataTypeDescription Class
    #if (!OPCUA_EXCLUDE_DataTypeDescription)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class DataTypeDescription : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public DataTypeDescription()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_dataTypeId = null;
            m_name = null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "DataTypeId", IsRequired = false, Order = 1)]
        public NodeId DataTypeId
        {
            get { return m_dataTypeId;  }
            set { m_dataTypeId = value; }
        }

        /// <remarks />
        [DataMember(Name = "Name", IsRequired = false, Order = 2)]
        public QualifiedName Name
        {
            get { return m_name;  }
            set { m_name = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.DataTypeDescription; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.DataTypeDescription_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.DataTypeDescription_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteNodeId("DataTypeId", DataTypeId);
            encoder.WriteQualifiedName("Name", Name);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            DataTypeId = decoder.ReadNodeId("DataTypeId");
            Name = decoder.ReadQualifiedName("Name");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            DataTypeDescription value = encodeable as DataTypeDescription;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_dataTypeId, value.m_dataTypeId)) return false;
            if (!Utils.IsEqual(m_name, value.m_name)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (DataTypeDescription)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            DataTypeDescription clone = (DataTypeDescription)base.MemberwiseClone();

            clone.m_dataTypeId = (NodeId)Utils.Clone(this.m_dataTypeId);
            clone.m_name = (QualifiedName)Utils.Clone(this.m_name);

            return clone;
        }
        #endregion

        #region Private Fields
        private NodeId m_dataTypeId;
        private QualifiedName m_name;
        #endregion
    }

    #region DataTypeDescriptionCollection Class
    /// <summary>
    /// A collection of DataTypeDescription objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfDataTypeDescription", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "DataTypeDescription")]
    #if !NET_STANDARD
    public partial class DataTypeDescriptionCollection : List<DataTypeDescription>, ICloneable
    #else
    public partial class DataTypeDescriptionCollection : List<DataTypeDescription>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public DataTypeDescriptionCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public DataTypeDescriptionCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public DataTypeDescriptionCollection(IEnumerable<DataTypeDescription> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator DataTypeDescriptionCollection(DataTypeDescription[] values)
        {
            if (values != null)
            {
                return new DataTypeDescriptionCollection(values);
            }

            return new DataTypeDescriptionCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator DataTypeDescription[](DataTypeDescriptionCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (DataTypeDescriptionCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            DataTypeDescriptionCollection clone = new DataTypeDescriptionCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((DataTypeDescription)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region StructureDescription Class
    #if (!OPCUA_EXCLUDE_StructureDescription)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class StructureDescription : DataTypeDescription
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public StructureDescription()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_structureDefinition = new StructureDefinition();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "StructureDefinition", IsRequired = false, Order = 1)]
        public StructureDefinition StructureDefinition
        {
            get
            {
                return m_structureDefinition;
            }

            set
            {
                m_structureDefinition = value;

                if (value == null)
                {
                    m_structureDefinition = new StructureDefinition();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.StructureDescription; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.StructureDescription_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.StructureDescription_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("StructureDefinition", StructureDefinition, typeof(StructureDefinition));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            StructureDefinition = (StructureDefinition)decoder.ReadEncodeable("StructureDefinition", typeof(StructureDefinition));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            StructureDescription value = encodeable as StructureDescription;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_structureDefinition, value.m_structureDefinition)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (StructureDescription)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            StructureDescription clone = (StructureDescription)base.MemberwiseClone();

            clone.m_structureDefinition = (StructureDefinition)Utils.Clone(this.m_structureDefinition);

            return clone;
        }
        #endregion

        #region Private Fields
        private StructureDefinition m_structureDefinition;
        #endregion
    }

    #region StructureDescriptionCollection Class
    /// <summary>
    /// A collection of StructureDescription objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfStructureDescription", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "StructureDescription")]
    #if !NET_STANDARD
    public partial class StructureDescriptionCollection : List<StructureDescription>, ICloneable
    #else
    public partial class StructureDescriptionCollection : List<StructureDescription>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public StructureDescriptionCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public StructureDescriptionCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public StructureDescriptionCollection(IEnumerable<StructureDescription> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator StructureDescriptionCollection(StructureDescription[] values)
        {
            if (values != null)
            {
                return new StructureDescriptionCollection(values);
            }

            return new StructureDescriptionCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator StructureDescription[](StructureDescriptionCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (StructureDescriptionCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            StructureDescriptionCollection clone = new StructureDescriptionCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((StructureDescription)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region EnumDescription Class
    #if (!OPCUA_EXCLUDE_EnumDescription)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class EnumDescription : DataTypeDescription
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public EnumDescription()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_enumDefinition = new EnumDefinition();
            m_builtInType = (byte)0;
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "EnumDefinition", IsRequired = false, Order = 1)]
        public EnumDefinition EnumDefinition
        {
            get
            {
                return m_enumDefinition;
            }

            set
            {
                m_enumDefinition = value;

                if (value == null)
                {
                    m_enumDefinition = new EnumDefinition();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "BuiltInType", IsRequired = false, Order = 2)]
        public byte BuiltInType
        {
            get { return m_builtInType;  }
            set { m_builtInType = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.EnumDescription; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.EnumDescription_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.EnumDescription_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("EnumDefinition", EnumDefinition, typeof(EnumDefinition));
            encoder.WriteByte("BuiltInType", BuiltInType);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            EnumDefinition = (EnumDefinition)decoder.ReadEncodeable("EnumDefinition", typeof(EnumDefinition));
            BuiltInType = decoder.ReadByte("BuiltInType");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            EnumDescription value = encodeable as EnumDescription;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_enumDefinition, value.m_enumDefinition)) return false;
            if (!Utils.IsEqual(m_builtInType, value.m_builtInType)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (EnumDescription)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            EnumDescription clone = (EnumDescription)base.MemberwiseClone();

            clone.m_enumDefinition = (EnumDefinition)Utils.Clone(this.m_enumDefinition);
            clone.m_builtInType = (byte)Utils.Clone(this.m_builtInType);

            return clone;
        }
        #endregion

        #region Private Fields
        private EnumDefinition m_enumDefinition;
        private byte m_builtInType;
        #endregion
    }

    #region EnumDescriptionCollection Class
    /// <summary>
    /// A collection of EnumDescription objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfEnumDescription", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "EnumDescription")]
    #if !NET_STANDARD
    public partial class EnumDescriptionCollection : List<EnumDescription>, ICloneable
    #else
    public partial class EnumDescriptionCollection : List<EnumDescription>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public EnumDescriptionCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public EnumDescriptionCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public EnumDescriptionCollection(IEnumerable<EnumDescription> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator EnumDescriptionCollection(EnumDescription[] values)
        {
            if (values != null)
            {
                return new EnumDescriptionCollection(values);
            }

            return new EnumDescriptionCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator EnumDescription[](EnumDescriptionCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (EnumDescriptionCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            EnumDescriptionCollection clone = new EnumDescriptionCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((EnumDescription)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region SimpleTypeDescription Class
    #if (!OPCUA_EXCLUDE_SimpleTypeDescription)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class SimpleTypeDescription : DataTypeDescription
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public SimpleTypeDescription()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_baseDataType = null;
            m_builtInType = (byte)0;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "BaseDataType", IsRequired = false, Order = 1)]
        public NodeId BaseDataType
        {
            get { return m_baseDataType;  }
            set { m_baseDataType = value; }
        }

        /// <remarks />
        [DataMember(Name = "BuiltInType", IsRequired = false, Order = 2)]
        public byte BuiltInType
        {
            get { return m_builtInType;  }
            set { m_builtInType = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.SimpleTypeDescription; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.SimpleTypeDescription_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.SimpleTypeDescription_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteNodeId("BaseDataType", BaseDataType);
            encoder.WriteByte("BuiltInType", BuiltInType);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            BaseDataType = decoder.ReadNodeId("BaseDataType");
            BuiltInType = decoder.ReadByte("BuiltInType");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            SimpleTypeDescription value = encodeable as SimpleTypeDescription;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_baseDataType, value.m_baseDataType)) return false;
            if (!Utils.IsEqual(m_builtInType, value.m_builtInType)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (SimpleTypeDescription)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            SimpleTypeDescription clone = (SimpleTypeDescription)base.MemberwiseClone();

            clone.m_baseDataType = (NodeId)Utils.Clone(this.m_baseDataType);
            clone.m_builtInType = (byte)Utils.Clone(this.m_builtInType);

            return clone;
        }
        #endregion

        #region Private Fields
        private NodeId m_baseDataType;
        private byte m_builtInType;
        #endregion
    }

    #region SimpleTypeDescriptionCollection Class
    /// <summary>
    /// A collection of SimpleTypeDescription objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfSimpleTypeDescription", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "SimpleTypeDescription")]
    #if !NET_STANDARD
    public partial class SimpleTypeDescriptionCollection : List<SimpleTypeDescription>, ICloneable
    #else
    public partial class SimpleTypeDescriptionCollection : List<SimpleTypeDescription>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public SimpleTypeDescriptionCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public SimpleTypeDescriptionCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public SimpleTypeDescriptionCollection(IEnumerable<SimpleTypeDescription> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator SimpleTypeDescriptionCollection(SimpleTypeDescription[] values)
        {
            if (values != null)
            {
                return new SimpleTypeDescriptionCollection(values);
            }

            return new SimpleTypeDescriptionCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator SimpleTypeDescription[](SimpleTypeDescriptionCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (SimpleTypeDescriptionCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            SimpleTypeDescriptionCollection clone = new SimpleTypeDescriptionCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((SimpleTypeDescription)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region UABinaryFileDataType Class
    #if (!OPCUA_EXCLUDE_UABinaryFileDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class UABinaryFileDataType : DataTypeSchemaHeader
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public UABinaryFileDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_schemaLocation = null;
            m_fileHeader = new KeyValuePairCollection();
            m_body = Variant.Null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "SchemaLocation", IsRequired = false, Order = 1)]
        public string SchemaLocation
        {
            get { return m_schemaLocation;  }
            set { m_schemaLocation = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "FileHeader", IsRequired = false, Order = 2)]
        public KeyValuePairCollection FileHeader
        {
            get
            {
                return m_fileHeader;
            }

            set
            {
                m_fileHeader = value;

                if (value == null)
                {
                    m_fileHeader = new KeyValuePairCollection();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "Body", IsRequired = false, Order = 3)]
        public Variant Body
        {
            get { return m_body;  }
            set { m_body = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.UABinaryFileDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.UABinaryFileDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.UABinaryFileDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteString("SchemaLocation", SchemaLocation);
            encoder.WriteEncodeableArray("FileHeader", FileHeader.ToArray(), typeof(KeyValuePair));
            encoder.WriteVariant("Body", Body);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            SchemaLocation = decoder.ReadString("SchemaLocation");
            FileHeader = (KeyValuePairCollection)decoder.ReadEncodeableArray("FileHeader", typeof(KeyValuePair));
            Body = decoder.ReadVariant("Body");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            UABinaryFileDataType value = encodeable as UABinaryFileDataType;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_schemaLocation, value.m_schemaLocation)) return false;
            if (!Utils.IsEqual(m_fileHeader, value.m_fileHeader)) return false;
            if (!Utils.IsEqual(m_body, value.m_body)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (UABinaryFileDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            UABinaryFileDataType clone = (UABinaryFileDataType)base.MemberwiseClone();

            clone.m_schemaLocation = (string)Utils.Clone(this.m_schemaLocation);
            clone.m_fileHeader = (KeyValuePairCollection)Utils.Clone(this.m_fileHeader);
            clone.m_body = (Variant)Utils.Clone(this.m_body);

            return clone;
        }
        #endregion

        #region Private Fields
        private string m_schemaLocation;
        private KeyValuePairCollection m_fileHeader;
        private Variant m_body;
        #endregion
    }

    #region UABinaryFileDataTypeCollection Class
    /// <summary>
    /// A collection of UABinaryFileDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfUABinaryFileDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "UABinaryFileDataType")]
    #if !NET_STANDARD
    public partial class UABinaryFileDataTypeCollection : List<UABinaryFileDataType>, ICloneable
    #else
    public partial class UABinaryFileDataTypeCollection : List<UABinaryFileDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public UABinaryFileDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public UABinaryFileDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public UABinaryFileDataTypeCollection(IEnumerable<UABinaryFileDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator UABinaryFileDataTypeCollection(UABinaryFileDataType[] values)
        {
            if (values != null)
            {
                return new UABinaryFileDataTypeCollection(values);
            }

            return new UABinaryFileDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator UABinaryFileDataType[](UABinaryFileDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (UABinaryFileDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            UABinaryFileDataTypeCollection clone = new UABinaryFileDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((UABinaryFileDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region PubSubState Enumeration
    #if (!OPCUA_EXCLUDE_PubSubState)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public enum PubSubState
    {
        /// <remarks />
        [EnumMember(Value = "Disabled_0")]
        Disabled = 0,

        /// <remarks />
        [EnumMember(Value = "Paused_1")]
        Paused = 1,

        /// <remarks />
        [EnumMember(Value = "Operational_2")]
        Operational = 2,

        /// <remarks />
        [EnumMember(Value = "Error_3")]
        Error = 3,

        /// <remarks />
        [EnumMember(Value = "PreOperational_4")]
        PreOperational = 4,
    }

    #region PubSubStateCollection Class
    /// <summary>
    /// A collection of PubSubState objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfPubSubState", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "PubSubState")]
    #if !NET_STANDARD
    public partial class PubSubStateCollection : List<PubSubState>, ICloneable
    #else
    public partial class PubSubStateCollection : List<PubSubState>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public PubSubStateCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public PubSubStateCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public PubSubStateCollection(IEnumerable<PubSubState> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator PubSubStateCollection(PubSubState[] values)
        {
            if (values != null)
            {
                return new PubSubStateCollection(values);
            }

            return new PubSubStateCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator PubSubState[](PubSubStateCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (PubSubStateCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            PubSubStateCollection clone = new PubSubStateCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((PubSubState)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region DataSetMetaDataType Class
    #if (!OPCUA_EXCLUDE_DataSetMetaDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class DataSetMetaDataType : DataTypeSchemaHeader
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public DataSetMetaDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_name = null;
            m_description = null;
            m_fields = new FieldMetaDataCollection();
            m_dataSetClassId = Uuid.Empty;
            m_configurationVersion = new ConfigurationVersionDataType();
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "Name", IsRequired = false, Order = 1)]
        public string Name
        {
            get { return m_name;  }
            set { m_name = value; }
        }

        /// <remarks />
        [DataMember(Name = "Description", IsRequired = false, Order = 2)]
        public LocalizedText Description
        {
            get { return m_description;  }
            set { m_description = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "Fields", IsRequired = false, Order = 3)]
        public FieldMetaDataCollection Fields
        {
            get
            {
                return m_fields;
            }

            set
            {
                m_fields = value;

                if (value == null)
                {
                    m_fields = new FieldMetaDataCollection();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "DataSetClassId", IsRequired = false, Order = 4)]
        public Uuid DataSetClassId
        {
            get { return m_dataSetClassId;  }
            set { m_dataSetClassId = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ConfigurationVersion", IsRequired = false, Order = 5)]
        public ConfigurationVersionDataType ConfigurationVersion
        {
            get
            {
                return m_configurationVersion;
            }

            set
            {
                m_configurationVersion = value;

                if (value == null)
                {
                    m_configurationVersion = new ConfigurationVersionDataType();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.DataSetMetaDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.DataSetMetaDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.DataSetMetaDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteString("Name", Name);
            encoder.WriteLocalizedText("Description", Description);
            encoder.WriteEncodeableArray("Fields", Fields.ToArray(), typeof(FieldMetaData));
            encoder.WriteGuid("DataSetClassId", DataSetClassId);
            encoder.WriteEncodeable("ConfigurationVersion", ConfigurationVersion, typeof(ConfigurationVersionDataType));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            Name = decoder.ReadString("Name");
            Description = decoder.ReadLocalizedText("Description");
            Fields = (FieldMetaDataCollection)decoder.ReadEncodeableArray("Fields", typeof(FieldMetaData));
            DataSetClassId = decoder.ReadGuid("DataSetClassId");
            ConfigurationVersion = (ConfigurationVersionDataType)decoder.ReadEncodeable("ConfigurationVersion", typeof(ConfigurationVersionDataType));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            DataSetMetaDataType value = encodeable as DataSetMetaDataType;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_name, value.m_name)) return false;
            if (!Utils.IsEqual(m_description, value.m_description)) return false;
            if (!Utils.IsEqual(m_fields, value.m_fields)) return false;
            if (!Utils.IsEqual(m_dataSetClassId, value.m_dataSetClassId)) return false;
            if (!Utils.IsEqual(m_configurationVersion, value.m_configurationVersion)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (DataSetMetaDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            DataSetMetaDataType clone = (DataSetMetaDataType)base.MemberwiseClone();

            clone.m_name = (string)Utils.Clone(this.m_name);
            clone.m_description = (LocalizedText)Utils.Clone(this.m_description);
            clone.m_fields = (FieldMetaDataCollection)Utils.Clone(this.m_fields);
            clone.m_dataSetClassId = (Uuid)Utils.Clone(this.m_dataSetClassId);
            clone.m_configurationVersion = (ConfigurationVersionDataType)Utils.Clone(this.m_configurationVersion);

            return clone;
        }
        #endregion

        #region Private Fields
        private string m_name;
        private LocalizedText m_description;
        private FieldMetaDataCollection m_fields;
        private Uuid m_dataSetClassId;
        private ConfigurationVersionDataType m_configurationVersion;
        #endregion
    }

    #region DataSetMetaDataTypeCollection Class
    /// <summary>
    /// A collection of DataSetMetaDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfDataSetMetaDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "DataSetMetaDataType")]
    #if !NET_STANDARD
    public partial class DataSetMetaDataTypeCollection : List<DataSetMetaDataType>, ICloneable
    #else
    public partial class DataSetMetaDataTypeCollection : List<DataSetMetaDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public DataSetMetaDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public DataSetMetaDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public DataSetMetaDataTypeCollection(IEnumerable<DataSetMetaDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator DataSetMetaDataTypeCollection(DataSetMetaDataType[] values)
        {
            if (values != null)
            {
                return new DataSetMetaDataTypeCollection(values);
            }

            return new DataSetMetaDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator DataSetMetaDataType[](DataSetMetaDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (DataSetMetaDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            DataSetMetaDataTypeCollection clone = new DataSetMetaDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((DataSetMetaDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region FieldMetaData Class
    #if (!OPCUA_EXCLUDE_FieldMetaData)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class FieldMetaData : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public FieldMetaData()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_name = null;
            m_description = null;
            m_fieldFlags = 0;
            m_builtInType = (byte)0;
            m_dataType = null;
            m_valueRank = (int)0;
            m_arrayDimensions = new UInt32Collection();
            m_maxStringLength = (uint)0;
            m_dataSetFieldId = Uuid.Empty;
            m_properties = new KeyValuePairCollection();
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "Name", IsRequired = false, Order = 1)]
        public string Name
        {
            get { return m_name;  }
            set { m_name = value; }
        }

        /// <remarks />
        [DataMember(Name = "Description", IsRequired = false, Order = 2)]
        public LocalizedText Description
        {
            get { return m_description;  }
            set { m_description = value; }
        }

        /// <remarks />
        [DataMember(Name = "FieldFlags", IsRequired = false, Order = 3)]
        public ushort FieldFlags
        {
            get { return m_fieldFlags;  }
            set { m_fieldFlags = value; }
        }

        /// <remarks />
        [DataMember(Name = "BuiltInType", IsRequired = false, Order = 4)]
        public byte BuiltInType
        {
            get { return m_builtInType;  }
            set { m_builtInType = value; }
        }

        /// <remarks />
        [DataMember(Name = "DataType", IsRequired = false, Order = 5)]
        public NodeId DataType
        {
            get { return m_dataType;  }
            set { m_dataType = value; }
        }

        /// <remarks />
        [DataMember(Name = "ValueRank", IsRequired = false, Order = 6)]
        public int ValueRank
        {
            get { return m_valueRank;  }
            set { m_valueRank = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ArrayDimensions", IsRequired = false, Order = 7)]
        public UInt32Collection ArrayDimensions
        {
            get
            {
                return m_arrayDimensions;
            }

            set
            {
                m_arrayDimensions = value;

                if (value == null)
                {
                    m_arrayDimensions = new UInt32Collection();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "MaxStringLength", IsRequired = false, Order = 8)]
        public uint MaxStringLength
        {
            get { return m_maxStringLength;  }
            set { m_maxStringLength = value; }
        }

        /// <remarks />
        [DataMember(Name = "DataSetFieldId", IsRequired = false, Order = 9)]
        public Uuid DataSetFieldId
        {
            get { return m_dataSetFieldId;  }
            set { m_dataSetFieldId = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "Properties", IsRequired = false, Order = 10)]
        public KeyValuePairCollection Properties
        {
            get
            {
                return m_properties;
            }

            set
            {
                m_properties = value;

                if (value == null)
                {
                    m_properties = new KeyValuePairCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.FieldMetaData; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.FieldMetaData_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.FieldMetaData_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteString("Name", Name);
            encoder.WriteLocalizedText("Description", Description);
            encoder.WriteUInt16("FieldFlags", FieldFlags);
            encoder.WriteByte("BuiltInType", BuiltInType);
            encoder.WriteNodeId("DataType", DataType);
            encoder.WriteInt32("ValueRank", ValueRank);
            encoder.WriteUInt32Array("ArrayDimensions", ArrayDimensions);
            encoder.WriteUInt32("MaxStringLength", MaxStringLength);
            encoder.WriteGuid("DataSetFieldId", DataSetFieldId);
            encoder.WriteEncodeableArray("Properties", Properties.ToArray(), typeof(KeyValuePair));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            Name = decoder.ReadString("Name");
            Description = decoder.ReadLocalizedText("Description");
            FieldFlags = decoder.ReadUInt16("FieldFlags");
            BuiltInType = decoder.ReadByte("BuiltInType");
            DataType = decoder.ReadNodeId("DataType");
            ValueRank = decoder.ReadInt32("ValueRank");
            ArrayDimensions = decoder.ReadUInt32Array("ArrayDimensions");
            MaxStringLength = decoder.ReadUInt32("MaxStringLength");
            DataSetFieldId = decoder.ReadGuid("DataSetFieldId");
            Properties = (KeyValuePairCollection)decoder.ReadEncodeableArray("Properties", typeof(KeyValuePair));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            FieldMetaData value = encodeable as FieldMetaData;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_name, value.m_name)) return false;
            if (!Utils.IsEqual(m_description, value.m_description)) return false;
            if (!Utils.IsEqual(m_fieldFlags, value.m_fieldFlags)) return false;
            if (!Utils.IsEqual(m_builtInType, value.m_builtInType)) return false;
            if (!Utils.IsEqual(m_dataType, value.m_dataType)) return false;
            if (!Utils.IsEqual(m_valueRank, value.m_valueRank)) return false;
            if (!Utils.IsEqual(m_arrayDimensions, value.m_arrayDimensions)) return false;
            if (!Utils.IsEqual(m_maxStringLength, value.m_maxStringLength)) return false;
            if (!Utils.IsEqual(m_dataSetFieldId, value.m_dataSetFieldId)) return false;
            if (!Utils.IsEqual(m_properties, value.m_properties)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (FieldMetaData)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            FieldMetaData clone = (FieldMetaData)base.MemberwiseClone();

            clone.m_name = (string)Utils.Clone(this.m_name);
            clone.m_description = (LocalizedText)Utils.Clone(this.m_description);
            clone.m_fieldFlags = (ushort)Utils.Clone(this.m_fieldFlags);
            clone.m_builtInType = (byte)Utils.Clone(this.m_builtInType);
            clone.m_dataType = (NodeId)Utils.Clone(this.m_dataType);
            clone.m_valueRank = (int)Utils.Clone(this.m_valueRank);
            clone.m_arrayDimensions = (UInt32Collection)Utils.Clone(this.m_arrayDimensions);
            clone.m_maxStringLength = (uint)Utils.Clone(this.m_maxStringLength);
            clone.m_dataSetFieldId = (Uuid)Utils.Clone(this.m_dataSetFieldId);
            clone.m_properties = (KeyValuePairCollection)Utils.Clone(this.m_properties);

            return clone;
        }
        #endregion

        #region Private Fields
        private string m_name;
        private LocalizedText m_description;
        private ushort m_fieldFlags;
        private byte m_builtInType;
        private NodeId m_dataType;
        private int m_valueRank;
        private UInt32Collection m_arrayDimensions;
        private uint m_maxStringLength;
        private Uuid m_dataSetFieldId;
        private KeyValuePairCollection m_properties;
        #endregion
    }

    #region FieldMetaDataCollection Class
    /// <summary>
    /// A collection of FieldMetaData objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfFieldMetaData", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "FieldMetaData")]
    #if !NET_STANDARD
    public partial class FieldMetaDataCollection : List<FieldMetaData>, ICloneable
    #else
    public partial class FieldMetaDataCollection : List<FieldMetaData>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public FieldMetaDataCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public FieldMetaDataCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public FieldMetaDataCollection(IEnumerable<FieldMetaData> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator FieldMetaDataCollection(FieldMetaData[] values)
        {
            if (values != null)
            {
                return new FieldMetaDataCollection(values);
            }

            return new FieldMetaDataCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator FieldMetaData[](FieldMetaDataCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (FieldMetaDataCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            FieldMetaDataCollection clone = new FieldMetaDataCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((FieldMetaData)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region DataSetFieldFlags Enumeration
    #if (!OPCUA_EXCLUDE_DataSetFieldFlags)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)][Flags]
    public enum DataSetFieldFlags : UInt16
    {
        /// <remarks />
        [EnumMember(Value = "None_0")]
        None = 0,

        /// <remarks />
        [EnumMember(Value = "PromotedField_1")]
        PromotedField = 1,
    }
    #endif
    #endregion

    #region ConfigurationVersionDataType Class
    #if (!OPCUA_EXCLUDE_ConfigurationVersionDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ConfigurationVersionDataType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ConfigurationVersionDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_majorVersion = (uint)0;
            m_minorVersion = (uint)0;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "MajorVersion", IsRequired = false, Order = 1)]
        public uint MajorVersion
        {
            get { return m_majorVersion;  }
            set { m_majorVersion = value; }
        }

        /// <remarks />
        [DataMember(Name = "MinorVersion", IsRequired = false, Order = 2)]
        public uint MinorVersion
        {
            get { return m_minorVersion;  }
            set { m_minorVersion = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ConfigurationVersionDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ConfigurationVersionDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ConfigurationVersionDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteUInt32("MajorVersion", MajorVersion);
            encoder.WriteUInt32("MinorVersion", MinorVersion);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            MajorVersion = decoder.ReadUInt32("MajorVersion");
            MinorVersion = decoder.ReadUInt32("MinorVersion");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ConfigurationVersionDataType value = encodeable as ConfigurationVersionDataType;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_majorVersion, value.m_majorVersion)) return false;
            if (!Utils.IsEqual(m_minorVersion, value.m_minorVersion)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (ConfigurationVersionDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ConfigurationVersionDataType clone = (ConfigurationVersionDataType)base.MemberwiseClone();

            clone.m_majorVersion = (uint)Utils.Clone(this.m_majorVersion);
            clone.m_minorVersion = (uint)Utils.Clone(this.m_minorVersion);

            return clone;
        }
        #endregion

        #region Private Fields
        private uint m_majorVersion;
        private uint m_minorVersion;
        #endregion
    }

    #region ConfigurationVersionDataTypeCollection Class
    /// <summary>
    /// A collection of ConfigurationVersionDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfConfigurationVersionDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "ConfigurationVersionDataType")]
    #if !NET_STANDARD
    public partial class ConfigurationVersionDataTypeCollection : List<ConfigurationVersionDataType>, ICloneable
    #else
    public partial class ConfigurationVersionDataTypeCollection : List<ConfigurationVersionDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public ConfigurationVersionDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public ConfigurationVersionDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public ConfigurationVersionDataTypeCollection(IEnumerable<ConfigurationVersionDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator ConfigurationVersionDataTypeCollection(ConfigurationVersionDataType[] values)
        {
            if (values != null)
            {
                return new ConfigurationVersionDataTypeCollection(values);
            }

            return new ConfigurationVersionDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator ConfigurationVersionDataType[](ConfigurationVersionDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (ConfigurationVersionDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ConfigurationVersionDataTypeCollection clone = new ConfigurationVersionDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((ConfigurationVersionDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region PublishedDataSetDataType Class
    #if (!OPCUA_EXCLUDE_PublishedDataSetDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class PublishedDataSetDataType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public PublishedDataSetDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_name = null;
            m_dataSetFolder = new StringCollection();
            m_dataSetMetaData = new DataSetMetaDataType();
            m_extensionFields = new KeyValuePairCollection();
            m_dataSetSource = null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "Name", IsRequired = false, Order = 1)]
        public string Name
        {
            get { return m_name;  }
            set { m_name = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "DataSetFolder", IsRequired = false, Order = 2)]
        public StringCollection DataSetFolder
        {
            get
            {
                return m_dataSetFolder;
            }

            set
            {
                m_dataSetFolder = value;

                if (value == null)
                {
                    m_dataSetFolder = new StringCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "DataSetMetaData", IsRequired = false, Order = 3)]
        public DataSetMetaDataType DataSetMetaData
        {
            get
            {
                return m_dataSetMetaData;
            }

            set
            {
                m_dataSetMetaData = value;

                if (value == null)
                {
                    m_dataSetMetaData = new DataSetMetaDataType();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ExtensionFields", IsRequired = false, Order = 4)]
        public KeyValuePairCollection ExtensionFields
        {
            get
            {
                return m_extensionFields;
            }

            set
            {
                m_extensionFields = value;

                if (value == null)
                {
                    m_extensionFields = new KeyValuePairCollection();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "DataSetSource", IsRequired = false, Order = 5)]
        public ExtensionObject DataSetSource
        {
            get { return m_dataSetSource;  }
            set { m_dataSetSource = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.PublishedDataSetDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.PublishedDataSetDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.PublishedDataSetDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteString("Name", Name);
            encoder.WriteStringArray("DataSetFolder", DataSetFolder);
            encoder.WriteEncodeable("DataSetMetaData", DataSetMetaData, typeof(DataSetMetaDataType));
            encoder.WriteEncodeableArray("ExtensionFields", ExtensionFields.ToArray(), typeof(KeyValuePair));
            encoder.WriteExtensionObject("DataSetSource", DataSetSource);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            Name = decoder.ReadString("Name");
            DataSetFolder = decoder.ReadStringArray("DataSetFolder");
            DataSetMetaData = (DataSetMetaDataType)decoder.ReadEncodeable("DataSetMetaData", typeof(DataSetMetaDataType));
            ExtensionFields = (KeyValuePairCollection)decoder.ReadEncodeableArray("ExtensionFields", typeof(KeyValuePair));
            DataSetSource = decoder.ReadExtensionObject("DataSetSource");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            PublishedDataSetDataType value = encodeable as PublishedDataSetDataType;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_name, value.m_name)) return false;
            if (!Utils.IsEqual(m_dataSetFolder, value.m_dataSetFolder)) return false;
            if (!Utils.IsEqual(m_dataSetMetaData, value.m_dataSetMetaData)) return false;
            if (!Utils.IsEqual(m_extensionFields, value.m_extensionFields)) return false;
            if (!Utils.IsEqual(m_dataSetSource, value.m_dataSetSource)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (PublishedDataSetDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            PublishedDataSetDataType clone = (PublishedDataSetDataType)base.MemberwiseClone();

            clone.m_name = (string)Utils.Clone(this.m_name);
            clone.m_dataSetFolder = (StringCollection)Utils.Clone(this.m_dataSetFolder);
            clone.m_dataSetMetaData = (DataSetMetaDataType)Utils.Clone(this.m_dataSetMetaData);
            clone.m_extensionFields = (KeyValuePairCollection)Utils.Clone(this.m_extensionFields);
            clone.m_dataSetSource = (ExtensionObject)Utils.Clone(this.m_dataSetSource);

            return clone;
        }
        #endregion

        #region Private Fields
        private string m_name;
        private StringCollection m_dataSetFolder;
        private DataSetMetaDataType m_dataSetMetaData;
        private KeyValuePairCollection m_extensionFields;
        private ExtensionObject m_dataSetSource;
        #endregion
    }

    #region PublishedDataSetDataTypeCollection Class
    /// <summary>
    /// A collection of PublishedDataSetDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfPublishedDataSetDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "PublishedDataSetDataType")]
    #if !NET_STANDARD
    public partial class PublishedDataSetDataTypeCollection : List<PublishedDataSetDataType>, ICloneable
    #else
    public partial class PublishedDataSetDataTypeCollection : List<PublishedDataSetDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public PublishedDataSetDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public PublishedDataSetDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public PublishedDataSetDataTypeCollection(IEnumerable<PublishedDataSetDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator PublishedDataSetDataTypeCollection(PublishedDataSetDataType[] values)
        {
            if (values != null)
            {
                return new PublishedDataSetDataTypeCollection(values);
            }

            return new PublishedDataSetDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator PublishedDataSetDataType[](PublishedDataSetDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (PublishedDataSetDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            PublishedDataSetDataTypeCollection clone = new PublishedDataSetDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((PublishedDataSetDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region PublishedDataSetSourceDataType Class
    #if (!OPCUA_EXCLUDE_PublishedDataSetSourceDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class PublishedDataSetSourceDataType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public PublishedDataSetSourceDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
        }
        #endregion

        #region Public Properties
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.PublishedDataSetSourceDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.PublishedDataSetSourceDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.PublishedDataSetSourceDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            PublishedDataSetSourceDataType value = encodeable as PublishedDataSetSourceDataType;

            if (value == null)
            {
                return false;
            }


            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (PublishedDataSetSourceDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            PublishedDataSetSourceDataType clone = (PublishedDataSetSourceDataType)base.MemberwiseClone();


            return clone;
        }
        #endregion

        #region Private Fields
        #endregion
    }

    #region PublishedDataSetSourceDataTypeCollection Class
    /// <summary>
    /// A collection of PublishedDataSetSourceDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfPublishedDataSetSourceDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "PublishedDataSetSourceDataType")]
    #if !NET_STANDARD
    public partial class PublishedDataSetSourceDataTypeCollection : List<PublishedDataSetSourceDataType>, ICloneable
    #else
    public partial class PublishedDataSetSourceDataTypeCollection : List<PublishedDataSetSourceDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public PublishedDataSetSourceDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public PublishedDataSetSourceDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public PublishedDataSetSourceDataTypeCollection(IEnumerable<PublishedDataSetSourceDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator PublishedDataSetSourceDataTypeCollection(PublishedDataSetSourceDataType[] values)
        {
            if (values != null)
            {
                return new PublishedDataSetSourceDataTypeCollection(values);
            }

            return new PublishedDataSetSourceDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator PublishedDataSetSourceDataType[](PublishedDataSetSourceDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (PublishedDataSetSourceDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            PublishedDataSetSourceDataTypeCollection clone = new PublishedDataSetSourceDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((PublishedDataSetSourceDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region PublishedVariableDataType Class
    #if (!OPCUA_EXCLUDE_PublishedVariableDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class PublishedVariableDataType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public PublishedVariableDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_publishedVariable = null;
            m_attributeId = (uint)0;
            m_samplingIntervalHint = (double)0;
            m_deadbandType = (uint)0;
            m_deadbandValue = (double)0;
            m_indexRange = null;
            m_substituteValue = Variant.Null;
            m_metaDataProperties = new QualifiedNameCollection();
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "PublishedVariable", IsRequired = false, Order = 1)]
        public NodeId PublishedVariable
        {
            get { return m_publishedVariable;  }
            set { m_publishedVariable = value; }
        }

        /// <remarks />
        [DataMember(Name = "AttributeId", IsRequired = false, Order = 2)]
        public uint AttributeId
        {
            get { return m_attributeId;  }
            set { m_attributeId = value; }
        }

        /// <remarks />
        [DataMember(Name = "SamplingIntervalHint", IsRequired = false, Order = 3)]
        public double SamplingIntervalHint
        {
            get { return m_samplingIntervalHint;  }
            set { m_samplingIntervalHint = value; }
        }

        /// <remarks />
        [DataMember(Name = "DeadbandType", IsRequired = false, Order = 4)]
        public uint DeadbandType
        {
            get { return m_deadbandType;  }
            set { m_deadbandType = value; }
        }

        /// <remarks />
        [DataMember(Name = "DeadbandValue", IsRequired = false, Order = 5)]
        public double DeadbandValue
        {
            get { return m_deadbandValue;  }
            set { m_deadbandValue = value; }
        }

        /// <remarks />
        [DataMember(Name = "IndexRange", IsRequired = false, Order = 6)]
        public string IndexRange
        {
            get { return m_indexRange;  }
            set { m_indexRange = value; }
        }

        /// <remarks />
        [DataMember(Name = "SubstituteValue", IsRequired = false, Order = 7)]
        public Variant SubstituteValue
        {
            get { return m_substituteValue;  }
            set { m_substituteValue = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "MetaDataProperties", IsRequired = false, Order = 8)]
        public QualifiedNameCollection MetaDataProperties
        {
            get
            {
                return m_metaDataProperties;
            }

            set
            {
                m_metaDataProperties = value;

                if (value == null)
                {
                    m_metaDataProperties = new QualifiedNameCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.PublishedVariableDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.PublishedVariableDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.PublishedVariableDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteNodeId("PublishedVariable", PublishedVariable);
            encoder.WriteUInt32("AttributeId", AttributeId);
            encoder.WriteDouble("SamplingIntervalHint", SamplingIntervalHint);
            encoder.WriteUInt32("DeadbandType", DeadbandType);
            encoder.WriteDouble("DeadbandValue", DeadbandValue);
            encoder.WriteString("IndexRange", IndexRange);
            encoder.WriteVariant("SubstituteValue", SubstituteValue);
            encoder.WriteQualifiedNameArray("MetaDataProperties", MetaDataProperties);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            PublishedVariable = decoder.ReadNodeId("PublishedVariable");
            AttributeId = decoder.ReadUInt32("AttributeId");
            SamplingIntervalHint = decoder.ReadDouble("SamplingIntervalHint");
            DeadbandType = decoder.ReadUInt32("DeadbandType");
            DeadbandValue = decoder.ReadDouble("DeadbandValue");
            IndexRange = decoder.ReadString("IndexRange");
            SubstituteValue = decoder.ReadVariant("SubstituteValue");
            MetaDataProperties = decoder.ReadQualifiedNameArray("MetaDataProperties");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            PublishedVariableDataType value = encodeable as PublishedVariableDataType;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_publishedVariable, value.m_publishedVariable)) return false;
            if (!Utils.IsEqual(m_attributeId, value.m_attributeId)) return false;
            if (!Utils.IsEqual(m_samplingIntervalHint, value.m_samplingIntervalHint)) return false;
            if (!Utils.IsEqual(m_deadbandType, value.m_deadbandType)) return false;
            if (!Utils.IsEqual(m_deadbandValue, value.m_deadbandValue)) return false;
            if (!Utils.IsEqual(m_indexRange, value.m_indexRange)) return false;
            if (!Utils.IsEqual(m_substituteValue, value.m_substituteValue)) return false;
            if (!Utils.IsEqual(m_metaDataProperties, value.m_metaDataProperties)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (PublishedVariableDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            PublishedVariableDataType clone = (PublishedVariableDataType)base.MemberwiseClone();

            clone.m_publishedVariable = (NodeId)Utils.Clone(this.m_publishedVariable);
            clone.m_attributeId = (uint)Utils.Clone(this.m_attributeId);
            clone.m_samplingIntervalHint = (double)Utils.Clone(this.m_samplingIntervalHint);
            clone.m_deadbandType = (uint)Utils.Clone(this.m_deadbandType);
            clone.m_deadbandValue = (double)Utils.Clone(this.m_deadbandValue);
            clone.m_indexRange = (string)Utils.Clone(this.m_indexRange);
            clone.m_substituteValue = (Variant)Utils.Clone(this.m_substituteValue);
            clone.m_metaDataProperties = (QualifiedNameCollection)Utils.Clone(this.m_metaDataProperties);

            return clone;
        }
        #endregion

        #region Private Fields
        private NodeId m_publishedVariable;
        private uint m_attributeId;
        private double m_samplingIntervalHint;
        private uint m_deadbandType;
        private double m_deadbandValue;
        private string m_indexRange;
        private Variant m_substituteValue;
        private QualifiedNameCollection m_metaDataProperties;
        #endregion
    }

    #region PublishedVariableDataTypeCollection Class
    /// <summary>
    /// A collection of PublishedVariableDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfPublishedVariableDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "PublishedVariableDataType")]
    #if !NET_STANDARD
    public partial class PublishedVariableDataTypeCollection : List<PublishedVariableDataType>, ICloneable
    #else
    public partial class PublishedVariableDataTypeCollection : List<PublishedVariableDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public PublishedVariableDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public PublishedVariableDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public PublishedVariableDataTypeCollection(IEnumerable<PublishedVariableDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator PublishedVariableDataTypeCollection(PublishedVariableDataType[] values)
        {
            if (values != null)
            {
                return new PublishedVariableDataTypeCollection(values);
            }

            return new PublishedVariableDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator PublishedVariableDataType[](PublishedVariableDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (PublishedVariableDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            PublishedVariableDataTypeCollection clone = new PublishedVariableDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((PublishedVariableDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region PublishedDataItemsDataType Class
    #if (!OPCUA_EXCLUDE_PublishedDataItemsDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class PublishedDataItemsDataType : PublishedDataSetSourceDataType
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public PublishedDataItemsDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_publishedData = new PublishedVariableDataTypeCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "PublishedData", IsRequired = false, Order = 1)]
        public PublishedVariableDataTypeCollection PublishedData
        {
            get
            {
                return m_publishedData;
            }

            set
            {
                m_publishedData = value;

                if (value == null)
                {
                    m_publishedData = new PublishedVariableDataTypeCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.PublishedDataItemsDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.PublishedDataItemsDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.PublishedDataItemsDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeableArray("PublishedData", PublishedData.ToArray(), typeof(PublishedVariableDataType));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            PublishedData = (PublishedVariableDataTypeCollection)decoder.ReadEncodeableArray("PublishedData", typeof(PublishedVariableDataType));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            PublishedDataItemsDataType value = encodeable as PublishedDataItemsDataType;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_publishedData, value.m_publishedData)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (PublishedDataItemsDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            PublishedDataItemsDataType clone = (PublishedDataItemsDataType)base.MemberwiseClone();

            clone.m_publishedData = (PublishedVariableDataTypeCollection)Utils.Clone(this.m_publishedData);

            return clone;
        }
        #endregion

        #region Private Fields
        private PublishedVariableDataTypeCollection m_publishedData;
        #endregion
    }

    #region PublishedDataItemsDataTypeCollection Class
    /// <summary>
    /// A collection of PublishedDataItemsDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfPublishedDataItemsDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "PublishedDataItemsDataType")]
    #if !NET_STANDARD
    public partial class PublishedDataItemsDataTypeCollection : List<PublishedDataItemsDataType>, ICloneable
    #else
    public partial class PublishedDataItemsDataTypeCollection : List<PublishedDataItemsDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public PublishedDataItemsDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public PublishedDataItemsDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public PublishedDataItemsDataTypeCollection(IEnumerable<PublishedDataItemsDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator PublishedDataItemsDataTypeCollection(PublishedDataItemsDataType[] values)
        {
            if (values != null)
            {
                return new PublishedDataItemsDataTypeCollection(values);
            }

            return new PublishedDataItemsDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator PublishedDataItemsDataType[](PublishedDataItemsDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (PublishedDataItemsDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            PublishedDataItemsDataTypeCollection clone = new PublishedDataItemsDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((PublishedDataItemsDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region PublishedEventsDataType Class
    #if (!OPCUA_EXCLUDE_PublishedEventsDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class PublishedEventsDataType : PublishedDataSetSourceDataType
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public PublishedEventsDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_eventNotifier = null;
            m_selectedFields = new SimpleAttributeOperandCollection();
            m_filter = new ContentFilter();
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "EventNotifier", IsRequired = false, Order = 1)]
        public NodeId EventNotifier
        {
            get { return m_eventNotifier;  }
            set { m_eventNotifier = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "SelectedFields", IsRequired = false, Order = 2)]
        public SimpleAttributeOperandCollection SelectedFields
        {
            get
            {
                return m_selectedFields;
            }

            set
            {
                m_selectedFields = value;

                if (value == null)
                {
                    m_selectedFields = new SimpleAttributeOperandCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "Filter", IsRequired = false, Order = 3)]
        public ContentFilter Filter
        {
            get
            {
                return m_filter;
            }

            set
            {
                m_filter = value;

                if (value == null)
                {
                    m_filter = new ContentFilter();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.PublishedEventsDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.PublishedEventsDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.PublishedEventsDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteNodeId("EventNotifier", EventNotifier);
            encoder.WriteEncodeableArray("SelectedFields", SelectedFields.ToArray(), typeof(SimpleAttributeOperand));
            encoder.WriteEncodeable("Filter", Filter, typeof(ContentFilter));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            EventNotifier = decoder.ReadNodeId("EventNotifier");
            SelectedFields = (SimpleAttributeOperandCollection)decoder.ReadEncodeableArray("SelectedFields", typeof(SimpleAttributeOperand));
            Filter = (ContentFilter)decoder.ReadEncodeable("Filter", typeof(ContentFilter));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            PublishedEventsDataType value = encodeable as PublishedEventsDataType;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_eventNotifier, value.m_eventNotifier)) return false;
            if (!Utils.IsEqual(m_selectedFields, value.m_selectedFields)) return false;
            if (!Utils.IsEqual(m_filter, value.m_filter)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (PublishedEventsDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            PublishedEventsDataType clone = (PublishedEventsDataType)base.MemberwiseClone();

            clone.m_eventNotifier = (NodeId)Utils.Clone(this.m_eventNotifier);
            clone.m_selectedFields = (SimpleAttributeOperandCollection)Utils.Clone(this.m_selectedFields);
            clone.m_filter = (ContentFilter)Utils.Clone(this.m_filter);

            return clone;
        }
        #endregion

        #region Private Fields
        private NodeId m_eventNotifier;
        private SimpleAttributeOperandCollection m_selectedFields;
        private ContentFilter m_filter;
        #endregion
    }

    #region PublishedEventsDataTypeCollection Class
    /// <summary>
    /// A collection of PublishedEventsDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfPublishedEventsDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "PublishedEventsDataType")]
    #if !NET_STANDARD
    public partial class PublishedEventsDataTypeCollection : List<PublishedEventsDataType>, ICloneable
    #else
    public partial class PublishedEventsDataTypeCollection : List<PublishedEventsDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public PublishedEventsDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public PublishedEventsDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public PublishedEventsDataTypeCollection(IEnumerable<PublishedEventsDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator PublishedEventsDataTypeCollection(PublishedEventsDataType[] values)
        {
            if (values != null)
            {
                return new PublishedEventsDataTypeCollection(values);
            }

            return new PublishedEventsDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator PublishedEventsDataType[](PublishedEventsDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (PublishedEventsDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            PublishedEventsDataTypeCollection clone = new PublishedEventsDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((PublishedEventsDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region DataSetFieldContentMask Enumeration
    #if (!OPCUA_EXCLUDE_DataSetFieldContentMask)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)][Flags]
    public enum DataSetFieldContentMask : UInt32
    {
        /// <remarks />
        [EnumMember(Value = "None_0")]
        None = 0,

        /// <remarks />
        [EnumMember(Value = "StatusCode_1")]
        StatusCode = 1,

        /// <remarks />
        [EnumMember(Value = "SourceTimestamp_2")]
        SourceTimestamp = 2,

        /// <remarks />
        [EnumMember(Value = "ServerTimestamp_4")]
        ServerTimestamp = 4,

        /// <remarks />
        [EnumMember(Value = "SourcePicoSeconds_8")]
        SourcePicoSeconds = 8,

        /// <remarks />
        [EnumMember(Value = "ServerPicoSeconds_16")]
        ServerPicoSeconds = 16,

        /// <remarks />
        [EnumMember(Value = "RawData_32")]
        RawData = 32,
    }

    #region DataSetFieldContentMaskCollection Class
    /// <summary>
    /// A collection of DataSetFieldContentMask objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfDataSetFieldContentMask", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "DataSetFieldContentMask")]
    #if !NET_STANDARD
    public partial class DataSetFieldContentMaskCollection : List<DataSetFieldContentMask>, ICloneable
    #else
    public partial class DataSetFieldContentMaskCollection : List<DataSetFieldContentMask>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public DataSetFieldContentMaskCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public DataSetFieldContentMaskCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public DataSetFieldContentMaskCollection(IEnumerable<DataSetFieldContentMask> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator DataSetFieldContentMaskCollection(DataSetFieldContentMask[] values)
        {
            if (values != null)
            {
                return new DataSetFieldContentMaskCollection(values);
            }

            return new DataSetFieldContentMaskCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator DataSetFieldContentMask[](DataSetFieldContentMaskCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (DataSetFieldContentMaskCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            DataSetFieldContentMaskCollection clone = new DataSetFieldContentMaskCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((DataSetFieldContentMask)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region DataSetWriterDataType Class
    #if (!OPCUA_EXCLUDE_DataSetWriterDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class DataSetWriterDataType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public DataSetWriterDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_name = null;
            m_enabled = true;
            m_dataSetWriterId = (ushort)0;
            m_dataSetFieldContentMask = 0;
            m_keyFrameCount = (uint)0;
            m_dataSetName = null;
            m_dataSetWriterProperties = new KeyValuePairCollection();
            m_transportSettings = null;
            m_messageSettings = null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "Name", IsRequired = false, Order = 1)]
        public string Name
        {
            get { return m_name;  }
            set { m_name = value; }
        }

        /// <remarks />
        [DataMember(Name = "Enabled", IsRequired = false, Order = 2)]
        public bool Enabled
        {
            get { return m_enabled;  }
            set { m_enabled = value; }
        }

        /// <remarks />
        [DataMember(Name = "DataSetWriterId", IsRequired = false, Order = 3)]
        public ushort DataSetWriterId
        {
            get { return m_dataSetWriterId;  }
            set { m_dataSetWriterId = value; }
        }

        /// <remarks />
        [DataMember(Name = "DataSetFieldContentMask", IsRequired = false, Order = 4)]
        public uint DataSetFieldContentMask
        {
            get { return m_dataSetFieldContentMask;  }
            set { m_dataSetFieldContentMask = value; }
        }

        /// <remarks />
        [DataMember(Name = "KeyFrameCount", IsRequired = false, Order = 5)]
        public uint KeyFrameCount
        {
            get { return m_keyFrameCount;  }
            set { m_keyFrameCount = value; }
        }

        /// <remarks />
        [DataMember(Name = "DataSetName", IsRequired = false, Order = 6)]
        public string DataSetName
        {
            get { return m_dataSetName;  }
            set { m_dataSetName = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "DataSetWriterProperties", IsRequired = false, Order = 7)]
        public KeyValuePairCollection DataSetWriterProperties
        {
            get
            {
                return m_dataSetWriterProperties;
            }

            set
            {
                m_dataSetWriterProperties = value;

                if (value == null)
                {
                    m_dataSetWriterProperties = new KeyValuePairCollection();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "TransportSettings", IsRequired = false, Order = 8)]
        public ExtensionObject TransportSettings
        {
            get { return m_transportSettings;  }
            set { m_transportSettings = value; }
        }

        /// <remarks />
        [DataMember(Name = "MessageSettings", IsRequired = false, Order = 9)]
        public ExtensionObject MessageSettings
        {
            get { return m_messageSettings;  }
            set { m_messageSettings = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.DataSetWriterDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.DataSetWriterDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.DataSetWriterDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteString("Name", Name);
            encoder.WriteBoolean("Enabled", Enabled);
            encoder.WriteUInt16("DataSetWriterId", DataSetWriterId);
            encoder.WriteUInt32("DataSetFieldContentMask", DataSetFieldContentMask);
            encoder.WriteUInt32("KeyFrameCount", KeyFrameCount);
            encoder.WriteString("DataSetName", DataSetName);
            encoder.WriteEncodeableArray("DataSetWriterProperties", DataSetWriterProperties.ToArray(), typeof(KeyValuePair));
            encoder.WriteExtensionObject("TransportSettings", TransportSettings);
            encoder.WriteExtensionObject("MessageSettings", MessageSettings);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            Name = decoder.ReadString("Name");
            Enabled = decoder.ReadBoolean("Enabled");
            DataSetWriterId = decoder.ReadUInt16("DataSetWriterId");
            DataSetFieldContentMask = decoder.ReadUInt32("DataSetFieldContentMask");
            KeyFrameCount = decoder.ReadUInt32("KeyFrameCount");
            DataSetName = decoder.ReadString("DataSetName");
            DataSetWriterProperties = (KeyValuePairCollection)decoder.ReadEncodeableArray("DataSetWriterProperties", typeof(KeyValuePair));
            TransportSettings = decoder.ReadExtensionObject("TransportSettings");
            MessageSettings = decoder.ReadExtensionObject("MessageSettings");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            DataSetWriterDataType value = encodeable as DataSetWriterDataType;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_name, value.m_name)) return false;
            if (!Utils.IsEqual(m_enabled, value.m_enabled)) return false;
            if (!Utils.IsEqual(m_dataSetWriterId, value.m_dataSetWriterId)) return false;
            if (!Utils.IsEqual(m_dataSetFieldContentMask, value.m_dataSetFieldContentMask)) return false;
            if (!Utils.IsEqual(m_keyFrameCount, value.m_keyFrameCount)) return false;
            if (!Utils.IsEqual(m_dataSetName, value.m_dataSetName)) return false;
            if (!Utils.IsEqual(m_dataSetWriterProperties, value.m_dataSetWriterProperties)) return false;
            if (!Utils.IsEqual(m_transportSettings, value.m_transportSettings)) return false;
            if (!Utils.IsEqual(m_messageSettings, value.m_messageSettings)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (DataSetWriterDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            DataSetWriterDataType clone = (DataSetWriterDataType)base.MemberwiseClone();

            clone.m_name = (string)Utils.Clone(this.m_name);
            clone.m_enabled = (bool)Utils.Clone(this.m_enabled);
            clone.m_dataSetWriterId = (ushort)Utils.Clone(this.m_dataSetWriterId);
            clone.m_dataSetFieldContentMask = (uint)Utils.Clone(this.m_dataSetFieldContentMask);
            clone.m_keyFrameCount = (uint)Utils.Clone(this.m_keyFrameCount);
            clone.m_dataSetName = (string)Utils.Clone(this.m_dataSetName);
            clone.m_dataSetWriterProperties = (KeyValuePairCollection)Utils.Clone(this.m_dataSetWriterProperties);
            clone.m_transportSettings = (ExtensionObject)Utils.Clone(this.m_transportSettings);
            clone.m_messageSettings = (ExtensionObject)Utils.Clone(this.m_messageSettings);

            return clone;
        }
        #endregion

        #region Private Fields
        private string m_name;
        private bool m_enabled;
        private ushort m_dataSetWriterId;
        private uint m_dataSetFieldContentMask;
        private uint m_keyFrameCount;
        private string m_dataSetName;
        private KeyValuePairCollection m_dataSetWriterProperties;
        private ExtensionObject m_transportSettings;
        private ExtensionObject m_messageSettings;
        #endregion
    }

    #region DataSetWriterDataTypeCollection Class
    /// <summary>
    /// A collection of DataSetWriterDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfDataSetWriterDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "DataSetWriterDataType")]
    #if !NET_STANDARD
    public partial class DataSetWriterDataTypeCollection : List<DataSetWriterDataType>, ICloneable
    #else
    public partial class DataSetWriterDataTypeCollection : List<DataSetWriterDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public DataSetWriterDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public DataSetWriterDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public DataSetWriterDataTypeCollection(IEnumerable<DataSetWriterDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator DataSetWriterDataTypeCollection(DataSetWriterDataType[] values)
        {
            if (values != null)
            {
                return new DataSetWriterDataTypeCollection(values);
            }

            return new DataSetWriterDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator DataSetWriterDataType[](DataSetWriterDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (DataSetWriterDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            DataSetWriterDataTypeCollection clone = new DataSetWriterDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((DataSetWriterDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region DataSetWriterTransportDataType Class
    #if (!OPCUA_EXCLUDE_DataSetWriterTransportDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class DataSetWriterTransportDataType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public DataSetWriterTransportDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
        }
        #endregion

        #region Public Properties
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.DataSetWriterTransportDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.DataSetWriterTransportDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.DataSetWriterTransportDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            DataSetWriterTransportDataType value = encodeable as DataSetWriterTransportDataType;

            if (value == null)
            {
                return false;
            }


            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (DataSetWriterTransportDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            DataSetWriterTransportDataType clone = (DataSetWriterTransportDataType)base.MemberwiseClone();


            return clone;
        }
        #endregion

        #region Private Fields
        #endregion
    }

    #region DataSetWriterTransportDataTypeCollection Class
    /// <summary>
    /// A collection of DataSetWriterTransportDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfDataSetWriterTransportDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "DataSetWriterTransportDataType")]
    #if !NET_STANDARD
    public partial class DataSetWriterTransportDataTypeCollection : List<DataSetWriterTransportDataType>, ICloneable
    #else
    public partial class DataSetWriterTransportDataTypeCollection : List<DataSetWriterTransportDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public DataSetWriterTransportDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public DataSetWriterTransportDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public DataSetWriterTransportDataTypeCollection(IEnumerable<DataSetWriterTransportDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator DataSetWriterTransportDataTypeCollection(DataSetWriterTransportDataType[] values)
        {
            if (values != null)
            {
                return new DataSetWriterTransportDataTypeCollection(values);
            }

            return new DataSetWriterTransportDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator DataSetWriterTransportDataType[](DataSetWriterTransportDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (DataSetWriterTransportDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            DataSetWriterTransportDataTypeCollection clone = new DataSetWriterTransportDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((DataSetWriterTransportDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region DataSetWriterMessageDataType Class
    #if (!OPCUA_EXCLUDE_DataSetWriterMessageDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class DataSetWriterMessageDataType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public DataSetWriterMessageDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
        }
        #endregion

        #region Public Properties
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.DataSetWriterMessageDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.DataSetWriterMessageDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.DataSetWriterMessageDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            DataSetWriterMessageDataType value = encodeable as DataSetWriterMessageDataType;

            if (value == null)
            {
                return false;
            }


            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (DataSetWriterMessageDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            DataSetWriterMessageDataType clone = (DataSetWriterMessageDataType)base.MemberwiseClone();


            return clone;
        }
        #endregion

        #region Private Fields
        #endregion
    }

    #region DataSetWriterMessageDataTypeCollection Class
    /// <summary>
    /// A collection of DataSetWriterMessageDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfDataSetWriterMessageDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "DataSetWriterMessageDataType")]
    #if !NET_STANDARD
    public partial class DataSetWriterMessageDataTypeCollection : List<DataSetWriterMessageDataType>, ICloneable
    #else
    public partial class DataSetWriterMessageDataTypeCollection : List<DataSetWriterMessageDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public DataSetWriterMessageDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public DataSetWriterMessageDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public DataSetWriterMessageDataTypeCollection(IEnumerable<DataSetWriterMessageDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator DataSetWriterMessageDataTypeCollection(DataSetWriterMessageDataType[] values)
        {
            if (values != null)
            {
                return new DataSetWriterMessageDataTypeCollection(values);
            }

            return new DataSetWriterMessageDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator DataSetWriterMessageDataType[](DataSetWriterMessageDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (DataSetWriterMessageDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            DataSetWriterMessageDataTypeCollection clone = new DataSetWriterMessageDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((DataSetWriterMessageDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region PubSubGroupDataType Class
    #if (!OPCUA_EXCLUDE_PubSubGroupDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class PubSubGroupDataType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public PubSubGroupDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_name = null;
            m_enabled = true;
            m_securityMode = MessageSecurityMode.Invalid;
            m_securityGroupId = null;
            m_securityKeyServices = new EndpointDescriptionCollection();
            m_maxNetworkMessageSize = (uint)0;
            m_groupProperties = new KeyValuePairCollection();
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "Name", IsRequired = false, Order = 1)]
        public string Name
        {
            get { return m_name;  }
            set { m_name = value; }
        }

        /// <remarks />
        [DataMember(Name = "Enabled", IsRequired = false, Order = 2)]
        public bool Enabled
        {
            get { return m_enabled;  }
            set { m_enabled = value; }
        }

        /// <remarks />
        [DataMember(Name = "SecurityMode", IsRequired = false, Order = 3)]
        public MessageSecurityMode SecurityMode
        {
            get { return m_securityMode;  }
            set { m_securityMode = value; }
        }

        /// <remarks />
        [DataMember(Name = "SecurityGroupId", IsRequired = false, Order = 4)]
        public string SecurityGroupId
        {
            get { return m_securityGroupId;  }
            set { m_securityGroupId = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "SecurityKeyServices", IsRequired = false, Order = 5)]
        public EndpointDescriptionCollection SecurityKeyServices
        {
            get
            {
                return m_securityKeyServices;
            }

            set
            {
                m_securityKeyServices = value;

                if (value == null)
                {
                    m_securityKeyServices = new EndpointDescriptionCollection();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "MaxNetworkMessageSize", IsRequired = false, Order = 6)]
        public uint MaxNetworkMessageSize
        {
            get { return m_maxNetworkMessageSize;  }
            set { m_maxNetworkMessageSize = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "GroupProperties", IsRequired = false, Order = 7)]
        public KeyValuePairCollection GroupProperties
        {
            get
            {
                return m_groupProperties;
            }

            set
            {
                m_groupProperties = value;

                if (value == null)
                {
                    m_groupProperties = new KeyValuePairCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.PubSubGroupDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.PubSubGroupDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.PubSubGroupDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteString("Name", Name);
            encoder.WriteBoolean("Enabled", Enabled);
            encoder.WriteEnumerated("SecurityMode", SecurityMode);
            encoder.WriteString("SecurityGroupId", SecurityGroupId);
            encoder.WriteEncodeableArray("SecurityKeyServices", SecurityKeyServices.ToArray(), typeof(EndpointDescription));
            encoder.WriteUInt32("MaxNetworkMessageSize", MaxNetworkMessageSize);
            encoder.WriteEncodeableArray("GroupProperties", GroupProperties.ToArray(), typeof(KeyValuePair));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            Name = decoder.ReadString("Name");
            Enabled = decoder.ReadBoolean("Enabled");
            SecurityMode = (MessageSecurityMode)decoder.ReadEnumerated("SecurityMode", typeof(MessageSecurityMode));
            SecurityGroupId = decoder.ReadString("SecurityGroupId");
            SecurityKeyServices = (EndpointDescriptionCollection)decoder.ReadEncodeableArray("SecurityKeyServices", typeof(EndpointDescription));
            MaxNetworkMessageSize = decoder.ReadUInt32("MaxNetworkMessageSize");
            GroupProperties = (KeyValuePairCollection)decoder.ReadEncodeableArray("GroupProperties", typeof(KeyValuePair));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            PubSubGroupDataType value = encodeable as PubSubGroupDataType;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_name, value.m_name)) return false;
            if (!Utils.IsEqual(m_enabled, value.m_enabled)) return false;
            if (!Utils.IsEqual(m_securityMode, value.m_securityMode)) return false;
            if (!Utils.IsEqual(m_securityGroupId, value.m_securityGroupId)) return false;
            if (!Utils.IsEqual(m_securityKeyServices, value.m_securityKeyServices)) return false;
            if (!Utils.IsEqual(m_maxNetworkMessageSize, value.m_maxNetworkMessageSize)) return false;
            if (!Utils.IsEqual(m_groupProperties, value.m_groupProperties)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (PubSubGroupDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            PubSubGroupDataType clone = (PubSubGroupDataType)base.MemberwiseClone();

            clone.m_name = (string)Utils.Clone(this.m_name);
            clone.m_enabled = (bool)Utils.Clone(this.m_enabled);
            clone.m_securityMode = (MessageSecurityMode)Utils.Clone(this.m_securityMode);
            clone.m_securityGroupId = (string)Utils.Clone(this.m_securityGroupId);
            clone.m_securityKeyServices = (EndpointDescriptionCollection)Utils.Clone(this.m_securityKeyServices);
            clone.m_maxNetworkMessageSize = (uint)Utils.Clone(this.m_maxNetworkMessageSize);
            clone.m_groupProperties = (KeyValuePairCollection)Utils.Clone(this.m_groupProperties);

            return clone;
        }
        #endregion

        #region Private Fields
        private string m_name;
        private bool m_enabled;
        private MessageSecurityMode m_securityMode;
        private string m_securityGroupId;
        private EndpointDescriptionCollection m_securityKeyServices;
        private uint m_maxNetworkMessageSize;
        private KeyValuePairCollection m_groupProperties;
        #endregion
    }

    #region PubSubGroupDataTypeCollection Class
    /// <summary>
    /// A collection of PubSubGroupDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfPubSubGroupDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "PubSubGroupDataType")]
    #if !NET_STANDARD
    public partial class PubSubGroupDataTypeCollection : List<PubSubGroupDataType>, ICloneable
    #else
    public partial class PubSubGroupDataTypeCollection : List<PubSubGroupDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public PubSubGroupDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public PubSubGroupDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public PubSubGroupDataTypeCollection(IEnumerable<PubSubGroupDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator PubSubGroupDataTypeCollection(PubSubGroupDataType[] values)
        {
            if (values != null)
            {
                return new PubSubGroupDataTypeCollection(values);
            }

            return new PubSubGroupDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator PubSubGroupDataType[](PubSubGroupDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (PubSubGroupDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            PubSubGroupDataTypeCollection clone = new PubSubGroupDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((PubSubGroupDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region WriterGroupDataType Class
    #if (!OPCUA_EXCLUDE_WriterGroupDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class WriterGroupDataType : PubSubGroupDataType
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public WriterGroupDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_writerGroupId = (ushort)0;
            m_publishingInterval = (double)0;
            m_keepAliveTime = (double)0;
            m_priority = (byte)0;
            m_localeIds = new StringCollection();
            m_headerLayoutUri = null;
            m_transportSettings = null;
            m_messageSettings = null;
            m_dataSetWriters = new DataSetWriterDataTypeCollection();
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "WriterGroupId", IsRequired = false, Order = 1)]
        public ushort WriterGroupId
        {
            get { return m_writerGroupId;  }
            set { m_writerGroupId = value; }
        }

        /// <remarks />
        [DataMember(Name = "PublishingInterval", IsRequired = false, Order = 2)]
        public double PublishingInterval
        {
            get { return m_publishingInterval;  }
            set { m_publishingInterval = value; }
        }

        /// <remarks />
        [DataMember(Name = "KeepAliveTime", IsRequired = false, Order = 3)]
        public double KeepAliveTime
        {
            get { return m_keepAliveTime;  }
            set { m_keepAliveTime = value; }
        }

        /// <remarks />
        [DataMember(Name = "Priority", IsRequired = false, Order = 4)]
        public byte Priority
        {
            get { return m_priority;  }
            set { m_priority = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "LocaleIds", IsRequired = false, Order = 5)]
        public StringCollection LocaleIds
        {
            get
            {
                return m_localeIds;
            }

            set
            {
                m_localeIds = value;

                if (value == null)
                {
                    m_localeIds = new StringCollection();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "HeaderLayoutUri", IsRequired = false, Order = 6)]
        public string HeaderLayoutUri
        {
            get { return m_headerLayoutUri;  }
            set { m_headerLayoutUri = value; }
        }

        /// <remarks />
        [DataMember(Name = "TransportSettings", IsRequired = false, Order = 7)]
        public ExtensionObject TransportSettings
        {
            get { return m_transportSettings;  }
            set { m_transportSettings = value; }
        }

        /// <remarks />
        [DataMember(Name = "MessageSettings", IsRequired = false, Order = 8)]
        public ExtensionObject MessageSettings
        {
            get { return m_messageSettings;  }
            set { m_messageSettings = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "DataSetWriters", IsRequired = false, Order = 9)]
        public DataSetWriterDataTypeCollection DataSetWriters
        {
            get
            {
                return m_dataSetWriters;
            }

            set
            {
                m_dataSetWriters = value;

                if (value == null)
                {
                    m_dataSetWriters = new DataSetWriterDataTypeCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.WriterGroupDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.WriterGroupDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.WriterGroupDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteUInt16("WriterGroupId", WriterGroupId);
            encoder.WriteDouble("PublishingInterval", PublishingInterval);
            encoder.WriteDouble("KeepAliveTime", KeepAliveTime);
            encoder.WriteByte("Priority", Priority);
            encoder.WriteStringArray("LocaleIds", LocaleIds);
            encoder.WriteString("HeaderLayoutUri", HeaderLayoutUri);
            encoder.WriteExtensionObject("TransportSettings", TransportSettings);
            encoder.WriteExtensionObject("MessageSettings", MessageSettings);
            encoder.WriteEncodeableArray("DataSetWriters", DataSetWriters.ToArray(), typeof(DataSetWriterDataType));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            WriterGroupId = decoder.ReadUInt16("WriterGroupId");
            PublishingInterval = decoder.ReadDouble("PublishingInterval");
            KeepAliveTime = decoder.ReadDouble("KeepAliveTime");
            Priority = decoder.ReadByte("Priority");
            LocaleIds = decoder.ReadStringArray("LocaleIds");
            HeaderLayoutUri = decoder.ReadString("HeaderLayoutUri");
            TransportSettings = decoder.ReadExtensionObject("TransportSettings");
            MessageSettings = decoder.ReadExtensionObject("MessageSettings");
            DataSetWriters = (DataSetWriterDataTypeCollection)decoder.ReadEncodeableArray("DataSetWriters", typeof(DataSetWriterDataType));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            WriterGroupDataType value = encodeable as WriterGroupDataType;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_writerGroupId, value.m_writerGroupId)) return false;
            if (!Utils.IsEqual(m_publishingInterval, value.m_publishingInterval)) return false;
            if (!Utils.IsEqual(m_keepAliveTime, value.m_keepAliveTime)) return false;
            if (!Utils.IsEqual(m_priority, value.m_priority)) return false;
            if (!Utils.IsEqual(m_localeIds, value.m_localeIds)) return false;
            if (!Utils.IsEqual(m_headerLayoutUri, value.m_headerLayoutUri)) return false;
            if (!Utils.IsEqual(m_transportSettings, value.m_transportSettings)) return false;
            if (!Utils.IsEqual(m_messageSettings, value.m_messageSettings)) return false;
            if (!Utils.IsEqual(m_dataSetWriters, value.m_dataSetWriters)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (WriterGroupDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            WriterGroupDataType clone = (WriterGroupDataType)base.MemberwiseClone();

            clone.m_writerGroupId = (ushort)Utils.Clone(this.m_writerGroupId);
            clone.m_publishingInterval = (double)Utils.Clone(this.m_publishingInterval);
            clone.m_keepAliveTime = (double)Utils.Clone(this.m_keepAliveTime);
            clone.m_priority = (byte)Utils.Clone(this.m_priority);
            clone.m_localeIds = (StringCollection)Utils.Clone(this.m_localeIds);
            clone.m_headerLayoutUri = (string)Utils.Clone(this.m_headerLayoutUri);
            clone.m_transportSettings = (ExtensionObject)Utils.Clone(this.m_transportSettings);
            clone.m_messageSettings = (ExtensionObject)Utils.Clone(this.m_messageSettings);
            clone.m_dataSetWriters = (DataSetWriterDataTypeCollection)Utils.Clone(this.m_dataSetWriters);

            return clone;
        }
        #endregion

        #region Private Fields
        private ushort m_writerGroupId;
        private double m_publishingInterval;
        private double m_keepAliveTime;
        private byte m_priority;
        private StringCollection m_localeIds;
        private string m_headerLayoutUri;
        private ExtensionObject m_transportSettings;
        private ExtensionObject m_messageSettings;
        private DataSetWriterDataTypeCollection m_dataSetWriters;
        #endregion
    }

    #region WriterGroupDataTypeCollection Class
    /// <summary>
    /// A collection of WriterGroupDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfWriterGroupDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "WriterGroupDataType")]
    #if !NET_STANDARD
    public partial class WriterGroupDataTypeCollection : List<WriterGroupDataType>, ICloneable
    #else
    public partial class WriterGroupDataTypeCollection : List<WriterGroupDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public WriterGroupDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public WriterGroupDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public WriterGroupDataTypeCollection(IEnumerable<WriterGroupDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator WriterGroupDataTypeCollection(WriterGroupDataType[] values)
        {
            if (values != null)
            {
                return new WriterGroupDataTypeCollection(values);
            }

            return new WriterGroupDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator WriterGroupDataType[](WriterGroupDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (WriterGroupDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            WriterGroupDataTypeCollection clone = new WriterGroupDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((WriterGroupDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region WriterGroupTransportDataType Class
    #if (!OPCUA_EXCLUDE_WriterGroupTransportDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class WriterGroupTransportDataType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public WriterGroupTransportDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
        }
        #endregion

        #region Public Properties
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.WriterGroupTransportDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.WriterGroupTransportDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.WriterGroupTransportDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            WriterGroupTransportDataType value = encodeable as WriterGroupTransportDataType;

            if (value == null)
            {
                return false;
            }


            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (WriterGroupTransportDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            WriterGroupTransportDataType clone = (WriterGroupTransportDataType)base.MemberwiseClone();


            return clone;
        }
        #endregion

        #region Private Fields
        #endregion
    }

    #region WriterGroupTransportDataTypeCollection Class
    /// <summary>
    /// A collection of WriterGroupTransportDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfWriterGroupTransportDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "WriterGroupTransportDataType")]
    #if !NET_STANDARD
    public partial class WriterGroupTransportDataTypeCollection : List<WriterGroupTransportDataType>, ICloneable
    #else
    public partial class WriterGroupTransportDataTypeCollection : List<WriterGroupTransportDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public WriterGroupTransportDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public WriterGroupTransportDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public WriterGroupTransportDataTypeCollection(IEnumerable<WriterGroupTransportDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator WriterGroupTransportDataTypeCollection(WriterGroupTransportDataType[] values)
        {
            if (values != null)
            {
                return new WriterGroupTransportDataTypeCollection(values);
            }

            return new WriterGroupTransportDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator WriterGroupTransportDataType[](WriterGroupTransportDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (WriterGroupTransportDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            WriterGroupTransportDataTypeCollection clone = new WriterGroupTransportDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((WriterGroupTransportDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region WriterGroupMessageDataType Class
    #if (!OPCUA_EXCLUDE_WriterGroupMessageDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class WriterGroupMessageDataType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public WriterGroupMessageDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
        }
        #endregion

        #region Public Properties
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.WriterGroupMessageDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.WriterGroupMessageDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.WriterGroupMessageDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            WriterGroupMessageDataType value = encodeable as WriterGroupMessageDataType;

            if (value == null)
            {
                return false;
            }


            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (WriterGroupMessageDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            WriterGroupMessageDataType clone = (WriterGroupMessageDataType)base.MemberwiseClone();


            return clone;
        }
        #endregion

        #region Private Fields
        #endregion
    }

    #region WriterGroupMessageDataTypeCollection Class
    /// <summary>
    /// A collection of WriterGroupMessageDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfWriterGroupMessageDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "WriterGroupMessageDataType")]
    #if !NET_STANDARD
    public partial class WriterGroupMessageDataTypeCollection : List<WriterGroupMessageDataType>, ICloneable
    #else
    public partial class WriterGroupMessageDataTypeCollection : List<WriterGroupMessageDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public WriterGroupMessageDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public WriterGroupMessageDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public WriterGroupMessageDataTypeCollection(IEnumerable<WriterGroupMessageDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator WriterGroupMessageDataTypeCollection(WriterGroupMessageDataType[] values)
        {
            if (values != null)
            {
                return new WriterGroupMessageDataTypeCollection(values);
            }

            return new WriterGroupMessageDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator WriterGroupMessageDataType[](WriterGroupMessageDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (WriterGroupMessageDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            WriterGroupMessageDataTypeCollection clone = new WriterGroupMessageDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((WriterGroupMessageDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region PubSubConnectionDataType Class
    #if (!OPCUA_EXCLUDE_PubSubConnectionDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class PubSubConnectionDataType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public PubSubConnectionDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_name = null;
            m_enabled = true;
            m_publisherId = Variant.Null;
            m_transportProfileUri = null;
            m_address = null;
            m_connectionProperties = new KeyValuePairCollection();
            m_transportSettings = null;
            m_writerGroups = new WriterGroupDataTypeCollection();
            m_readerGroups = new ReaderGroupDataTypeCollection();
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "Name", IsRequired = false, Order = 1)]
        public string Name
        {
            get { return m_name;  }
            set { m_name = value; }
        }

        /// <remarks />
        [DataMember(Name = "Enabled", IsRequired = false, Order = 2)]
        public bool Enabled
        {
            get { return m_enabled;  }
            set { m_enabled = value; }
        }

        /// <remarks />
        [DataMember(Name = "PublisherId", IsRequired = false, Order = 3)]
        public Variant PublisherId
        {
            get { return m_publisherId;  }
            set { m_publisherId = value; }
        }

        /// <remarks />
        [DataMember(Name = "TransportProfileUri", IsRequired = false, Order = 4)]
        public string TransportProfileUri
        {
            get { return m_transportProfileUri;  }
            set { m_transportProfileUri = value; }
        }

        /// <remarks />
        [DataMember(Name = "Address", IsRequired = false, Order = 5)]
        public ExtensionObject Address
        {
            get { return m_address;  }
            set { m_address = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ConnectionProperties", IsRequired = false, Order = 6)]
        public KeyValuePairCollection ConnectionProperties
        {
            get
            {
                return m_connectionProperties;
            }

            set
            {
                m_connectionProperties = value;

                if (value == null)
                {
                    m_connectionProperties = new KeyValuePairCollection();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "TransportSettings", IsRequired = false, Order = 7)]
        public ExtensionObject TransportSettings
        {
            get { return m_transportSettings;  }
            set { m_transportSettings = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "WriterGroups", IsRequired = false, Order = 8)]
        public WriterGroupDataTypeCollection WriterGroups
        {
            get
            {
                return m_writerGroups;
            }

            set
            {
                m_writerGroups = value;

                if (value == null)
                {
                    m_writerGroups = new WriterGroupDataTypeCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ReaderGroups", IsRequired = false, Order = 9)]
        public ReaderGroupDataTypeCollection ReaderGroups
        {
            get
            {
                return m_readerGroups;
            }

            set
            {
                m_readerGroups = value;

                if (value == null)
                {
                    m_readerGroups = new ReaderGroupDataTypeCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.PubSubConnectionDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.PubSubConnectionDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.PubSubConnectionDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteString("Name", Name);
            encoder.WriteBoolean("Enabled", Enabled);
            encoder.WriteVariant("PublisherId", PublisherId);
            encoder.WriteString("TransportProfileUri", TransportProfileUri);
            encoder.WriteExtensionObject("Address", Address);
            encoder.WriteEncodeableArray("ConnectionProperties", ConnectionProperties.ToArray(), typeof(KeyValuePair));
            encoder.WriteExtensionObject("TransportSettings", TransportSettings);
            encoder.WriteEncodeableArray("WriterGroups", WriterGroups.ToArray(), typeof(WriterGroupDataType));
            encoder.WriteEncodeableArray("ReaderGroups", ReaderGroups.ToArray(), typeof(ReaderGroupDataType));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            Name = decoder.ReadString("Name");
            Enabled = decoder.ReadBoolean("Enabled");
            PublisherId = decoder.ReadVariant("PublisherId");
            TransportProfileUri = decoder.ReadString("TransportProfileUri");
            Address = decoder.ReadExtensionObject("Address");
            ConnectionProperties = (KeyValuePairCollection)decoder.ReadEncodeableArray("ConnectionProperties", typeof(KeyValuePair));
            TransportSettings = decoder.ReadExtensionObject("TransportSettings");
            WriterGroups = (WriterGroupDataTypeCollection)decoder.ReadEncodeableArray("WriterGroups", typeof(WriterGroupDataType));
            ReaderGroups = (ReaderGroupDataTypeCollection)decoder.ReadEncodeableArray("ReaderGroups", typeof(ReaderGroupDataType));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            PubSubConnectionDataType value = encodeable as PubSubConnectionDataType;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_name, value.m_name)) return false;
            if (!Utils.IsEqual(m_enabled, value.m_enabled)) return false;
            if (!Utils.IsEqual(m_publisherId, value.m_publisherId)) return false;
            if (!Utils.IsEqual(m_transportProfileUri, value.m_transportProfileUri)) return false;
            if (!Utils.IsEqual(m_address, value.m_address)) return false;
            if (!Utils.IsEqual(m_connectionProperties, value.m_connectionProperties)) return false;
            if (!Utils.IsEqual(m_transportSettings, value.m_transportSettings)) return false;
            if (!Utils.IsEqual(m_writerGroups, value.m_writerGroups)) return false;
            if (!Utils.IsEqual(m_readerGroups, value.m_readerGroups)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (PubSubConnectionDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            PubSubConnectionDataType clone = (PubSubConnectionDataType)base.MemberwiseClone();

            clone.m_name = (string)Utils.Clone(this.m_name);
            clone.m_enabled = (bool)Utils.Clone(this.m_enabled);
            clone.m_publisherId = (Variant)Utils.Clone(this.m_publisherId);
            clone.m_transportProfileUri = (string)Utils.Clone(this.m_transportProfileUri);
            clone.m_address = (ExtensionObject)Utils.Clone(this.m_address);
            clone.m_connectionProperties = (KeyValuePairCollection)Utils.Clone(this.m_connectionProperties);
            clone.m_transportSettings = (ExtensionObject)Utils.Clone(this.m_transportSettings);
            clone.m_writerGroups = (WriterGroupDataTypeCollection)Utils.Clone(this.m_writerGroups);
            clone.m_readerGroups = (ReaderGroupDataTypeCollection)Utils.Clone(this.m_readerGroups);

            return clone;
        }
        #endregion

        #region Private Fields
        private string m_name;
        private bool m_enabled;
        private Variant m_publisherId;
        private string m_transportProfileUri;
        private ExtensionObject m_address;
        private KeyValuePairCollection m_connectionProperties;
        private ExtensionObject m_transportSettings;
        private WriterGroupDataTypeCollection m_writerGroups;
        private ReaderGroupDataTypeCollection m_readerGroups;
        #endregion
    }

    #region PubSubConnectionDataTypeCollection Class
    /// <summary>
    /// A collection of PubSubConnectionDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfPubSubConnectionDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "PubSubConnectionDataType")]
    #if !NET_STANDARD
    public partial class PubSubConnectionDataTypeCollection : List<PubSubConnectionDataType>, ICloneable
    #else
    public partial class PubSubConnectionDataTypeCollection : List<PubSubConnectionDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public PubSubConnectionDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public PubSubConnectionDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public PubSubConnectionDataTypeCollection(IEnumerable<PubSubConnectionDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator PubSubConnectionDataTypeCollection(PubSubConnectionDataType[] values)
        {
            if (values != null)
            {
                return new PubSubConnectionDataTypeCollection(values);
            }

            return new PubSubConnectionDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator PubSubConnectionDataType[](PubSubConnectionDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (PubSubConnectionDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            PubSubConnectionDataTypeCollection clone = new PubSubConnectionDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((PubSubConnectionDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region ConnectionTransportDataType Class
    #if (!OPCUA_EXCLUDE_ConnectionTransportDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ConnectionTransportDataType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ConnectionTransportDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
        }
        #endregion

        #region Public Properties
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ConnectionTransportDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ConnectionTransportDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ConnectionTransportDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ConnectionTransportDataType value = encodeable as ConnectionTransportDataType;

            if (value == null)
            {
                return false;
            }


            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (ConnectionTransportDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ConnectionTransportDataType clone = (ConnectionTransportDataType)base.MemberwiseClone();


            return clone;
        }
        #endregion

        #region Private Fields
        #endregion
    }

    #region ConnectionTransportDataTypeCollection Class
    /// <summary>
    /// A collection of ConnectionTransportDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfConnectionTransportDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "ConnectionTransportDataType")]
    #if !NET_STANDARD
    public partial class ConnectionTransportDataTypeCollection : List<ConnectionTransportDataType>, ICloneable
    #else
    public partial class ConnectionTransportDataTypeCollection : List<ConnectionTransportDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public ConnectionTransportDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public ConnectionTransportDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public ConnectionTransportDataTypeCollection(IEnumerable<ConnectionTransportDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator ConnectionTransportDataTypeCollection(ConnectionTransportDataType[] values)
        {
            if (values != null)
            {
                return new ConnectionTransportDataTypeCollection(values);
            }

            return new ConnectionTransportDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator ConnectionTransportDataType[](ConnectionTransportDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (ConnectionTransportDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ConnectionTransportDataTypeCollection clone = new ConnectionTransportDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((ConnectionTransportDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region NetworkAddressDataType Class
    #if (!OPCUA_EXCLUDE_NetworkAddressDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class NetworkAddressDataType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public NetworkAddressDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_networkInterface = null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "NetworkInterface", IsRequired = false, Order = 1)]
        public string NetworkInterface
        {
            get { return m_networkInterface;  }
            set { m_networkInterface = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.NetworkAddressDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.NetworkAddressDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.NetworkAddressDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteString("NetworkInterface", NetworkInterface);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            NetworkInterface = decoder.ReadString("NetworkInterface");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            NetworkAddressDataType value = encodeable as NetworkAddressDataType;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_networkInterface, value.m_networkInterface)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (NetworkAddressDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            NetworkAddressDataType clone = (NetworkAddressDataType)base.MemberwiseClone();

            clone.m_networkInterface = (string)Utils.Clone(this.m_networkInterface);

            return clone;
        }
        #endregion

        #region Private Fields
        private string m_networkInterface;
        #endregion
    }

    #region NetworkAddressDataTypeCollection Class
    /// <summary>
    /// A collection of NetworkAddressDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfNetworkAddressDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "NetworkAddressDataType")]
    #if !NET_STANDARD
    public partial class NetworkAddressDataTypeCollection : List<NetworkAddressDataType>, ICloneable
    #else
    public partial class NetworkAddressDataTypeCollection : List<NetworkAddressDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public NetworkAddressDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public NetworkAddressDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public NetworkAddressDataTypeCollection(IEnumerable<NetworkAddressDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator NetworkAddressDataTypeCollection(NetworkAddressDataType[] values)
        {
            if (values != null)
            {
                return new NetworkAddressDataTypeCollection(values);
            }

            return new NetworkAddressDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator NetworkAddressDataType[](NetworkAddressDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (NetworkAddressDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            NetworkAddressDataTypeCollection clone = new NetworkAddressDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((NetworkAddressDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region NetworkAddressUrlDataType Class
    #if (!OPCUA_EXCLUDE_NetworkAddressUrlDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class NetworkAddressUrlDataType : NetworkAddressDataType
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public NetworkAddressUrlDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_url = null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "Url", IsRequired = false, Order = 1)]
        public string Url
        {
            get { return m_url;  }
            set { m_url = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.NetworkAddressUrlDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.NetworkAddressUrlDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.NetworkAddressUrlDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteString("Url", Url);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            Url = decoder.ReadString("Url");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            NetworkAddressUrlDataType value = encodeable as NetworkAddressUrlDataType;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_url, value.m_url)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (NetworkAddressUrlDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            NetworkAddressUrlDataType clone = (NetworkAddressUrlDataType)base.MemberwiseClone();

            clone.m_url = (string)Utils.Clone(this.m_url);

            return clone;
        }
        #endregion

        #region Private Fields
        private string m_url;
        #endregion
    }

    #region NetworkAddressUrlDataTypeCollection Class
    /// <summary>
    /// A collection of NetworkAddressUrlDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfNetworkAddressUrlDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "NetworkAddressUrlDataType")]
    #if !NET_STANDARD
    public partial class NetworkAddressUrlDataTypeCollection : List<NetworkAddressUrlDataType>, ICloneable
    #else
    public partial class NetworkAddressUrlDataTypeCollection : List<NetworkAddressUrlDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public NetworkAddressUrlDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public NetworkAddressUrlDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public NetworkAddressUrlDataTypeCollection(IEnumerable<NetworkAddressUrlDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator NetworkAddressUrlDataTypeCollection(NetworkAddressUrlDataType[] values)
        {
            if (values != null)
            {
                return new NetworkAddressUrlDataTypeCollection(values);
            }

            return new NetworkAddressUrlDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator NetworkAddressUrlDataType[](NetworkAddressUrlDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (NetworkAddressUrlDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            NetworkAddressUrlDataTypeCollection clone = new NetworkAddressUrlDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((NetworkAddressUrlDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region ReaderGroupDataType Class
    #if (!OPCUA_EXCLUDE_ReaderGroupDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ReaderGroupDataType : PubSubGroupDataType
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ReaderGroupDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_transportSettings = null;
            m_messageSettings = null;
            m_dataSetReaders = new DataSetReaderDataTypeCollection();
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "TransportSettings", IsRequired = false, Order = 1)]
        public ExtensionObject TransportSettings
        {
            get { return m_transportSettings;  }
            set { m_transportSettings = value; }
        }

        /// <remarks />
        [DataMember(Name = "MessageSettings", IsRequired = false, Order = 2)]
        public ExtensionObject MessageSettings
        {
            get { return m_messageSettings;  }
            set { m_messageSettings = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "DataSetReaders", IsRequired = false, Order = 3)]
        public DataSetReaderDataTypeCollection DataSetReaders
        {
            get
            {
                return m_dataSetReaders;
            }

            set
            {
                m_dataSetReaders = value;

                if (value == null)
                {
                    m_dataSetReaders = new DataSetReaderDataTypeCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ReaderGroupDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ReaderGroupDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ReaderGroupDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteExtensionObject("TransportSettings", TransportSettings);
            encoder.WriteExtensionObject("MessageSettings", MessageSettings);
            encoder.WriteEncodeableArray("DataSetReaders", DataSetReaders.ToArray(), typeof(DataSetReaderDataType));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            TransportSettings = decoder.ReadExtensionObject("TransportSettings");
            MessageSettings = decoder.ReadExtensionObject("MessageSettings");
            DataSetReaders = (DataSetReaderDataTypeCollection)decoder.ReadEncodeableArray("DataSetReaders", typeof(DataSetReaderDataType));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ReaderGroupDataType value = encodeable as ReaderGroupDataType;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_transportSettings, value.m_transportSettings)) return false;
            if (!Utils.IsEqual(m_messageSettings, value.m_messageSettings)) return false;
            if (!Utils.IsEqual(m_dataSetReaders, value.m_dataSetReaders)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (ReaderGroupDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ReaderGroupDataType clone = (ReaderGroupDataType)base.MemberwiseClone();

            clone.m_transportSettings = (ExtensionObject)Utils.Clone(this.m_transportSettings);
            clone.m_messageSettings = (ExtensionObject)Utils.Clone(this.m_messageSettings);
            clone.m_dataSetReaders = (DataSetReaderDataTypeCollection)Utils.Clone(this.m_dataSetReaders);

            return clone;
        }
        #endregion

        #region Private Fields
        private ExtensionObject m_transportSettings;
        private ExtensionObject m_messageSettings;
        private DataSetReaderDataTypeCollection m_dataSetReaders;
        #endregion
    }

    #region ReaderGroupDataTypeCollection Class
    /// <summary>
    /// A collection of ReaderGroupDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfReaderGroupDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "ReaderGroupDataType")]
    #if !NET_STANDARD
    public partial class ReaderGroupDataTypeCollection : List<ReaderGroupDataType>, ICloneable
    #else
    public partial class ReaderGroupDataTypeCollection : List<ReaderGroupDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public ReaderGroupDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public ReaderGroupDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public ReaderGroupDataTypeCollection(IEnumerable<ReaderGroupDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator ReaderGroupDataTypeCollection(ReaderGroupDataType[] values)
        {
            if (values != null)
            {
                return new ReaderGroupDataTypeCollection(values);
            }

            return new ReaderGroupDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator ReaderGroupDataType[](ReaderGroupDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (ReaderGroupDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ReaderGroupDataTypeCollection clone = new ReaderGroupDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((ReaderGroupDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region ReaderGroupTransportDataType Class
    #if (!OPCUA_EXCLUDE_ReaderGroupTransportDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ReaderGroupTransportDataType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ReaderGroupTransportDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
        }
        #endregion

        #region Public Properties
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ReaderGroupTransportDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ReaderGroupTransportDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ReaderGroupTransportDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ReaderGroupTransportDataType value = encodeable as ReaderGroupTransportDataType;

            if (value == null)
            {
                return false;
            }


            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (ReaderGroupTransportDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ReaderGroupTransportDataType clone = (ReaderGroupTransportDataType)base.MemberwiseClone();


            return clone;
        }
        #endregion

        #region Private Fields
        #endregion
    }

    #region ReaderGroupTransportDataTypeCollection Class
    /// <summary>
    /// A collection of ReaderGroupTransportDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfReaderGroupTransportDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "ReaderGroupTransportDataType")]
    #if !NET_STANDARD
    public partial class ReaderGroupTransportDataTypeCollection : List<ReaderGroupTransportDataType>, ICloneable
    #else
    public partial class ReaderGroupTransportDataTypeCollection : List<ReaderGroupTransportDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public ReaderGroupTransportDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public ReaderGroupTransportDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public ReaderGroupTransportDataTypeCollection(IEnumerable<ReaderGroupTransportDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator ReaderGroupTransportDataTypeCollection(ReaderGroupTransportDataType[] values)
        {
            if (values != null)
            {
                return new ReaderGroupTransportDataTypeCollection(values);
            }

            return new ReaderGroupTransportDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator ReaderGroupTransportDataType[](ReaderGroupTransportDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (ReaderGroupTransportDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ReaderGroupTransportDataTypeCollection clone = new ReaderGroupTransportDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((ReaderGroupTransportDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region ReaderGroupMessageDataType Class
    #if (!OPCUA_EXCLUDE_ReaderGroupMessageDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ReaderGroupMessageDataType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ReaderGroupMessageDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
        }
        #endregion

        #region Public Properties
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ReaderGroupMessageDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ReaderGroupMessageDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ReaderGroupMessageDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ReaderGroupMessageDataType value = encodeable as ReaderGroupMessageDataType;

            if (value == null)
            {
                return false;
            }


            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (ReaderGroupMessageDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ReaderGroupMessageDataType clone = (ReaderGroupMessageDataType)base.MemberwiseClone();


            return clone;
        }
        #endregion

        #region Private Fields
        #endregion
    }

    #region ReaderGroupMessageDataTypeCollection Class
    /// <summary>
    /// A collection of ReaderGroupMessageDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfReaderGroupMessageDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "ReaderGroupMessageDataType")]
    #if !NET_STANDARD
    public partial class ReaderGroupMessageDataTypeCollection : List<ReaderGroupMessageDataType>, ICloneable
    #else
    public partial class ReaderGroupMessageDataTypeCollection : List<ReaderGroupMessageDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public ReaderGroupMessageDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public ReaderGroupMessageDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public ReaderGroupMessageDataTypeCollection(IEnumerable<ReaderGroupMessageDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator ReaderGroupMessageDataTypeCollection(ReaderGroupMessageDataType[] values)
        {
            if (values != null)
            {
                return new ReaderGroupMessageDataTypeCollection(values);
            }

            return new ReaderGroupMessageDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator ReaderGroupMessageDataType[](ReaderGroupMessageDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (ReaderGroupMessageDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ReaderGroupMessageDataTypeCollection clone = new ReaderGroupMessageDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((ReaderGroupMessageDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region DataSetReaderDataType Class
    #if (!OPCUA_EXCLUDE_DataSetReaderDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class DataSetReaderDataType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public DataSetReaderDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_name = null;
            m_enabled = true;
            m_publisherId = Variant.Null;
            m_writerGroupId = (ushort)0;
            m_dataSetWriterId = (ushort)0;
            m_dataSetMetaData = new DataSetMetaDataType();
            m_dataSetFieldContentMask = 0;
            m_messageReceiveTimeout = (double)0;
            m_keyFrameCount = (uint)0;
            m_headerLayoutUri = null;
            m_securityMode = MessageSecurityMode.Invalid;
            m_securityGroupId = null;
            m_securityKeyServices = new EndpointDescriptionCollection();
            m_dataSetReaderProperties = new KeyValuePairCollection();
            m_transportSettings = null;
            m_messageSettings = null;
            m_subscribedDataSet = null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "Name", IsRequired = false, Order = 1)]
        public string Name
        {
            get { return m_name;  }
            set { m_name = value; }
        }

        /// <remarks />
        [DataMember(Name = "Enabled", IsRequired = false, Order = 2)]
        public bool Enabled
        {
            get { return m_enabled;  }
            set { m_enabled = value; }
        }

        /// <remarks />
        [DataMember(Name = "PublisherId", IsRequired = false, Order = 3)]
        public Variant PublisherId
        {
            get { return m_publisherId;  }
            set { m_publisherId = value; }
        }

        /// <remarks />
        [DataMember(Name = "WriterGroupId", IsRequired = false, Order = 4)]
        public ushort WriterGroupId
        {
            get { return m_writerGroupId;  }
            set { m_writerGroupId = value; }
        }

        /// <remarks />
        [DataMember(Name = "DataSetWriterId", IsRequired = false, Order = 5)]
        public ushort DataSetWriterId
        {
            get { return m_dataSetWriterId;  }
            set { m_dataSetWriterId = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "DataSetMetaData", IsRequired = false, Order = 6)]
        public DataSetMetaDataType DataSetMetaData
        {
            get
            {
                return m_dataSetMetaData;
            }

            set
            {
                m_dataSetMetaData = value;

                if (value == null)
                {
                    m_dataSetMetaData = new DataSetMetaDataType();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "DataSetFieldContentMask", IsRequired = false, Order = 7)]
        public uint DataSetFieldContentMask
        {
            get { return m_dataSetFieldContentMask;  }
            set { m_dataSetFieldContentMask = value; }
        }

        /// <remarks />
        [DataMember(Name = "MessageReceiveTimeout", IsRequired = false, Order = 8)]
        public double MessageReceiveTimeout
        {
            get { return m_messageReceiveTimeout;  }
            set { m_messageReceiveTimeout = value; }
        }

        /// <remarks />
        [DataMember(Name = "KeyFrameCount", IsRequired = false, Order = 9)]
        public uint KeyFrameCount
        {
            get { return m_keyFrameCount;  }
            set { m_keyFrameCount = value; }
        }

        /// <remarks />
        [DataMember(Name = "HeaderLayoutUri", IsRequired = false, Order = 10)]
        public string HeaderLayoutUri
        {
            get { return m_headerLayoutUri;  }
            set { m_headerLayoutUri = value; }
        }

        /// <remarks />
        [DataMember(Name = "SecurityMode", IsRequired = false, Order = 11)]
        public MessageSecurityMode SecurityMode
        {
            get { return m_securityMode;  }
            set { m_securityMode = value; }
        }

        /// <remarks />
        [DataMember(Name = "SecurityGroupId", IsRequired = false, Order = 12)]
        public string SecurityGroupId
        {
            get { return m_securityGroupId;  }
            set { m_securityGroupId = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "SecurityKeyServices", IsRequired = false, Order = 13)]
        public EndpointDescriptionCollection SecurityKeyServices
        {
            get
            {
                return m_securityKeyServices;
            }

            set
            {
                m_securityKeyServices = value;

                if (value == null)
                {
                    m_securityKeyServices = new EndpointDescriptionCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "DataSetReaderProperties", IsRequired = false, Order = 14)]
        public KeyValuePairCollection DataSetReaderProperties
        {
            get
            {
                return m_dataSetReaderProperties;
            }

            set
            {
                m_dataSetReaderProperties = value;

                if (value == null)
                {
                    m_dataSetReaderProperties = new KeyValuePairCollection();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "TransportSettings", IsRequired = false, Order = 15)]
        public ExtensionObject TransportSettings
        {
            get { return m_transportSettings;  }
            set { m_transportSettings = value; }
        }

        /// <remarks />
        [DataMember(Name = "MessageSettings", IsRequired = false, Order = 16)]
        public ExtensionObject MessageSettings
        {
            get { return m_messageSettings;  }
            set { m_messageSettings = value; }
        }

        /// <remarks />
        [DataMember(Name = "SubscribedDataSet", IsRequired = false, Order = 17)]
        public ExtensionObject SubscribedDataSet
        {
            get { return m_subscribedDataSet;  }
            set { m_subscribedDataSet = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.DataSetReaderDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.DataSetReaderDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.DataSetReaderDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteString("Name", Name);
            encoder.WriteBoolean("Enabled", Enabled);
            encoder.WriteVariant("PublisherId", PublisherId);
            encoder.WriteUInt16("WriterGroupId", WriterGroupId);
            encoder.WriteUInt16("DataSetWriterId", DataSetWriterId);
            encoder.WriteEncodeable("DataSetMetaData", DataSetMetaData, typeof(DataSetMetaDataType));
            encoder.WriteUInt32("DataSetFieldContentMask", DataSetFieldContentMask);
            encoder.WriteDouble("MessageReceiveTimeout", MessageReceiveTimeout);
            encoder.WriteUInt32("KeyFrameCount", KeyFrameCount);
            encoder.WriteString("HeaderLayoutUri", HeaderLayoutUri);
            encoder.WriteEnumerated("SecurityMode", SecurityMode);
            encoder.WriteString("SecurityGroupId", SecurityGroupId);
            encoder.WriteEncodeableArray("SecurityKeyServices", SecurityKeyServices.ToArray(), typeof(EndpointDescription));
            encoder.WriteEncodeableArray("DataSetReaderProperties", DataSetReaderProperties.ToArray(), typeof(KeyValuePair));
            encoder.WriteExtensionObject("TransportSettings", TransportSettings);
            encoder.WriteExtensionObject("MessageSettings", MessageSettings);
            encoder.WriteExtensionObject("SubscribedDataSet", SubscribedDataSet);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            Name = decoder.ReadString("Name");
            Enabled = decoder.ReadBoolean("Enabled");
            PublisherId = decoder.ReadVariant("PublisherId");
            WriterGroupId = decoder.ReadUInt16("WriterGroupId");
            DataSetWriterId = decoder.ReadUInt16("DataSetWriterId");
            DataSetMetaData = (DataSetMetaDataType)decoder.ReadEncodeable("DataSetMetaData", typeof(DataSetMetaDataType));
            DataSetFieldContentMask = decoder.ReadUInt32("DataSetFieldContentMask");
            MessageReceiveTimeout = decoder.ReadDouble("MessageReceiveTimeout");
            KeyFrameCount = decoder.ReadUInt32("KeyFrameCount");
            HeaderLayoutUri = decoder.ReadString("HeaderLayoutUri");
            SecurityMode = (MessageSecurityMode)decoder.ReadEnumerated("SecurityMode", typeof(MessageSecurityMode));
            SecurityGroupId = decoder.ReadString("SecurityGroupId");
            SecurityKeyServices = (EndpointDescriptionCollection)decoder.ReadEncodeableArray("SecurityKeyServices", typeof(EndpointDescription));
            DataSetReaderProperties = (KeyValuePairCollection)decoder.ReadEncodeableArray("DataSetReaderProperties", typeof(KeyValuePair));
            TransportSettings = decoder.ReadExtensionObject("TransportSettings");
            MessageSettings = decoder.ReadExtensionObject("MessageSettings");
            SubscribedDataSet = decoder.ReadExtensionObject("SubscribedDataSet");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            DataSetReaderDataType value = encodeable as DataSetReaderDataType;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_name, value.m_name)) return false;
            if (!Utils.IsEqual(m_enabled, value.m_enabled)) return false;
            if (!Utils.IsEqual(m_publisherId, value.m_publisherId)) return false;
            if (!Utils.IsEqual(m_writerGroupId, value.m_writerGroupId)) return false;
            if (!Utils.IsEqual(m_dataSetWriterId, value.m_dataSetWriterId)) return false;
            if (!Utils.IsEqual(m_dataSetMetaData, value.m_dataSetMetaData)) return false;
            if (!Utils.IsEqual(m_dataSetFieldContentMask, value.m_dataSetFieldContentMask)) return false;
            if (!Utils.IsEqual(m_messageReceiveTimeout, value.m_messageReceiveTimeout)) return false;
            if (!Utils.IsEqual(m_keyFrameCount, value.m_keyFrameCount)) return false;
            if (!Utils.IsEqual(m_headerLayoutUri, value.m_headerLayoutUri)) return false;
            if (!Utils.IsEqual(m_securityMode, value.m_securityMode)) return false;
            if (!Utils.IsEqual(m_securityGroupId, value.m_securityGroupId)) return false;
            if (!Utils.IsEqual(m_securityKeyServices, value.m_securityKeyServices)) return false;
            if (!Utils.IsEqual(m_dataSetReaderProperties, value.m_dataSetReaderProperties)) return false;
            if (!Utils.IsEqual(m_transportSettings, value.m_transportSettings)) return false;
            if (!Utils.IsEqual(m_messageSettings, value.m_messageSettings)) return false;
            if (!Utils.IsEqual(m_subscribedDataSet, value.m_subscribedDataSet)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (DataSetReaderDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            DataSetReaderDataType clone = (DataSetReaderDataType)base.MemberwiseClone();

            clone.m_name = (string)Utils.Clone(this.m_name);
            clone.m_enabled = (bool)Utils.Clone(this.m_enabled);
            clone.m_publisherId = (Variant)Utils.Clone(this.m_publisherId);
            clone.m_writerGroupId = (ushort)Utils.Clone(this.m_writerGroupId);
            clone.m_dataSetWriterId = (ushort)Utils.Clone(this.m_dataSetWriterId);
            clone.m_dataSetMetaData = (DataSetMetaDataType)Utils.Clone(this.m_dataSetMetaData);
            clone.m_dataSetFieldContentMask = (uint)Utils.Clone(this.m_dataSetFieldContentMask);
            clone.m_messageReceiveTimeout = (double)Utils.Clone(this.m_messageReceiveTimeout);
            clone.m_keyFrameCount = (uint)Utils.Clone(this.m_keyFrameCount);
            clone.m_headerLayoutUri = (string)Utils.Clone(this.m_headerLayoutUri);
            clone.m_securityMode = (MessageSecurityMode)Utils.Clone(this.m_securityMode);
            clone.m_securityGroupId = (string)Utils.Clone(this.m_securityGroupId);
            clone.m_securityKeyServices = (EndpointDescriptionCollection)Utils.Clone(this.m_securityKeyServices);
            clone.m_dataSetReaderProperties = (KeyValuePairCollection)Utils.Clone(this.m_dataSetReaderProperties);
            clone.m_transportSettings = (ExtensionObject)Utils.Clone(this.m_transportSettings);
            clone.m_messageSettings = (ExtensionObject)Utils.Clone(this.m_messageSettings);
            clone.m_subscribedDataSet = (ExtensionObject)Utils.Clone(this.m_subscribedDataSet);

            return clone;
        }
        #endregion

        #region Private Fields
        private string m_name;
        private bool m_enabled;
        private Variant m_publisherId;
        private ushort m_writerGroupId;
        private ushort m_dataSetWriterId;
        private DataSetMetaDataType m_dataSetMetaData;
        private uint m_dataSetFieldContentMask;
        private double m_messageReceiveTimeout;
        private uint m_keyFrameCount;
        private string m_headerLayoutUri;
        private MessageSecurityMode m_securityMode;
        private string m_securityGroupId;
        private EndpointDescriptionCollection m_securityKeyServices;
        private KeyValuePairCollection m_dataSetReaderProperties;
        private ExtensionObject m_transportSettings;
        private ExtensionObject m_messageSettings;
        private ExtensionObject m_subscribedDataSet;
        #endregion
    }

    #region DataSetReaderDataTypeCollection Class
    /// <summary>
    /// A collection of DataSetReaderDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfDataSetReaderDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "DataSetReaderDataType")]
    #if !NET_STANDARD
    public partial class DataSetReaderDataTypeCollection : List<DataSetReaderDataType>, ICloneable
    #else
    public partial class DataSetReaderDataTypeCollection : List<DataSetReaderDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public DataSetReaderDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public DataSetReaderDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public DataSetReaderDataTypeCollection(IEnumerable<DataSetReaderDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator DataSetReaderDataTypeCollection(DataSetReaderDataType[] values)
        {
            if (values != null)
            {
                return new DataSetReaderDataTypeCollection(values);
            }

            return new DataSetReaderDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator DataSetReaderDataType[](DataSetReaderDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (DataSetReaderDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            DataSetReaderDataTypeCollection clone = new DataSetReaderDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((DataSetReaderDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region DataSetReaderTransportDataType Class
    #if (!OPCUA_EXCLUDE_DataSetReaderTransportDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class DataSetReaderTransportDataType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public DataSetReaderTransportDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
        }
        #endregion

        #region Public Properties
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.DataSetReaderTransportDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.DataSetReaderTransportDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.DataSetReaderTransportDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            DataSetReaderTransportDataType value = encodeable as DataSetReaderTransportDataType;

            if (value == null)
            {
                return false;
            }


            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (DataSetReaderTransportDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            DataSetReaderTransportDataType clone = (DataSetReaderTransportDataType)base.MemberwiseClone();


            return clone;
        }
        #endregion

        #region Private Fields
        #endregion
    }

    #region DataSetReaderTransportDataTypeCollection Class
    /// <summary>
    /// A collection of DataSetReaderTransportDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfDataSetReaderTransportDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "DataSetReaderTransportDataType")]
    #if !NET_STANDARD
    public partial class DataSetReaderTransportDataTypeCollection : List<DataSetReaderTransportDataType>, ICloneable
    #else
    public partial class DataSetReaderTransportDataTypeCollection : List<DataSetReaderTransportDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public DataSetReaderTransportDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public DataSetReaderTransportDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public DataSetReaderTransportDataTypeCollection(IEnumerable<DataSetReaderTransportDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator DataSetReaderTransportDataTypeCollection(DataSetReaderTransportDataType[] values)
        {
            if (values != null)
            {
                return new DataSetReaderTransportDataTypeCollection(values);
            }

            return new DataSetReaderTransportDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator DataSetReaderTransportDataType[](DataSetReaderTransportDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (DataSetReaderTransportDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            DataSetReaderTransportDataTypeCollection clone = new DataSetReaderTransportDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((DataSetReaderTransportDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region DataSetReaderMessageDataType Class
    #if (!OPCUA_EXCLUDE_DataSetReaderMessageDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class DataSetReaderMessageDataType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public DataSetReaderMessageDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
        }
        #endregion

        #region Public Properties
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.DataSetReaderMessageDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.DataSetReaderMessageDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.DataSetReaderMessageDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            DataSetReaderMessageDataType value = encodeable as DataSetReaderMessageDataType;

            if (value == null)
            {
                return false;
            }


            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (DataSetReaderMessageDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            DataSetReaderMessageDataType clone = (DataSetReaderMessageDataType)base.MemberwiseClone();


            return clone;
        }
        #endregion

        #region Private Fields
        #endregion
    }

    #region DataSetReaderMessageDataTypeCollection Class
    /// <summary>
    /// A collection of DataSetReaderMessageDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfDataSetReaderMessageDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "DataSetReaderMessageDataType")]
    #if !NET_STANDARD
    public partial class DataSetReaderMessageDataTypeCollection : List<DataSetReaderMessageDataType>, ICloneable
    #else
    public partial class DataSetReaderMessageDataTypeCollection : List<DataSetReaderMessageDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public DataSetReaderMessageDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public DataSetReaderMessageDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public DataSetReaderMessageDataTypeCollection(IEnumerable<DataSetReaderMessageDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator DataSetReaderMessageDataTypeCollection(DataSetReaderMessageDataType[] values)
        {
            if (values != null)
            {
                return new DataSetReaderMessageDataTypeCollection(values);
            }

            return new DataSetReaderMessageDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator DataSetReaderMessageDataType[](DataSetReaderMessageDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (DataSetReaderMessageDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            DataSetReaderMessageDataTypeCollection clone = new DataSetReaderMessageDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((DataSetReaderMessageDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region SubscribedDataSetDataType Class
    #if (!OPCUA_EXCLUDE_SubscribedDataSetDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class SubscribedDataSetDataType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public SubscribedDataSetDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
        }
        #endregion

        #region Public Properties
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.SubscribedDataSetDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.SubscribedDataSetDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.SubscribedDataSetDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            SubscribedDataSetDataType value = encodeable as SubscribedDataSetDataType;

            if (value == null)
            {
                return false;
            }


            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (SubscribedDataSetDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            SubscribedDataSetDataType clone = (SubscribedDataSetDataType)base.MemberwiseClone();


            return clone;
        }
        #endregion

        #region Private Fields
        #endregion
    }

    #region SubscribedDataSetDataTypeCollection Class
    /// <summary>
    /// A collection of SubscribedDataSetDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfSubscribedDataSetDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "SubscribedDataSetDataType")]
    #if !NET_STANDARD
    public partial class SubscribedDataSetDataTypeCollection : List<SubscribedDataSetDataType>, ICloneable
    #else
    public partial class SubscribedDataSetDataTypeCollection : List<SubscribedDataSetDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public SubscribedDataSetDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public SubscribedDataSetDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public SubscribedDataSetDataTypeCollection(IEnumerable<SubscribedDataSetDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator SubscribedDataSetDataTypeCollection(SubscribedDataSetDataType[] values)
        {
            if (values != null)
            {
                return new SubscribedDataSetDataTypeCollection(values);
            }

            return new SubscribedDataSetDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator SubscribedDataSetDataType[](SubscribedDataSetDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (SubscribedDataSetDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            SubscribedDataSetDataTypeCollection clone = new SubscribedDataSetDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((SubscribedDataSetDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region TargetVariablesDataType Class
    #if (!OPCUA_EXCLUDE_TargetVariablesDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class TargetVariablesDataType : SubscribedDataSetDataType
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public TargetVariablesDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_targetVariables = new FieldTargetDataTypeCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "TargetVariables", IsRequired = false, Order = 1)]
        public FieldTargetDataTypeCollection TargetVariables
        {
            get
            {
                return m_targetVariables;
            }

            set
            {
                m_targetVariables = value;

                if (value == null)
                {
                    m_targetVariables = new FieldTargetDataTypeCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.TargetVariablesDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.TargetVariablesDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.TargetVariablesDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeableArray("TargetVariables", TargetVariables.ToArray(), typeof(FieldTargetDataType));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            TargetVariables = (FieldTargetDataTypeCollection)decoder.ReadEncodeableArray("TargetVariables", typeof(FieldTargetDataType));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            TargetVariablesDataType value = encodeable as TargetVariablesDataType;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_targetVariables, value.m_targetVariables)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (TargetVariablesDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            TargetVariablesDataType clone = (TargetVariablesDataType)base.MemberwiseClone();

            clone.m_targetVariables = (FieldTargetDataTypeCollection)Utils.Clone(this.m_targetVariables);

            return clone;
        }
        #endregion

        #region Private Fields
        private FieldTargetDataTypeCollection m_targetVariables;
        #endregion
    }

    #region TargetVariablesDataTypeCollection Class
    /// <summary>
    /// A collection of TargetVariablesDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfTargetVariablesDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "TargetVariablesDataType")]
    #if !NET_STANDARD
    public partial class TargetVariablesDataTypeCollection : List<TargetVariablesDataType>, ICloneable
    #else
    public partial class TargetVariablesDataTypeCollection : List<TargetVariablesDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public TargetVariablesDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public TargetVariablesDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public TargetVariablesDataTypeCollection(IEnumerable<TargetVariablesDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator TargetVariablesDataTypeCollection(TargetVariablesDataType[] values)
        {
            if (values != null)
            {
                return new TargetVariablesDataTypeCollection(values);
            }

            return new TargetVariablesDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator TargetVariablesDataType[](TargetVariablesDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (TargetVariablesDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            TargetVariablesDataTypeCollection clone = new TargetVariablesDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((TargetVariablesDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region FieldTargetDataType Class
    #if (!OPCUA_EXCLUDE_FieldTargetDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class FieldTargetDataType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public FieldTargetDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_dataSetFieldId = Uuid.Empty;
            m_receiverIndexRange = null;
            m_targetNodeId = null;
            m_attributeId = (uint)0;
            m_writeIndexRange = null;
            m_overrideValueHandling = OverrideValueHandling.Disabled;
            m_overrideValue = Variant.Null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "DataSetFieldId", IsRequired = false, Order = 1)]
        public Uuid DataSetFieldId
        {
            get { return m_dataSetFieldId;  }
            set { m_dataSetFieldId = value; }
        }

        /// <remarks />
        [DataMember(Name = "ReceiverIndexRange", IsRequired = false, Order = 2)]
        public string ReceiverIndexRange
        {
            get { return m_receiverIndexRange;  }
            set { m_receiverIndexRange = value; }
        }

        /// <remarks />
        [DataMember(Name = "TargetNodeId", IsRequired = false, Order = 3)]
        public NodeId TargetNodeId
        {
            get { return m_targetNodeId;  }
            set { m_targetNodeId = value; }
        }

        /// <remarks />
        [DataMember(Name = "AttributeId", IsRequired = false, Order = 4)]
        public uint AttributeId
        {
            get { return m_attributeId;  }
            set { m_attributeId = value; }
        }

        /// <remarks />
        [DataMember(Name = "WriteIndexRange", IsRequired = false, Order = 5)]
        public string WriteIndexRange
        {
            get { return m_writeIndexRange;  }
            set { m_writeIndexRange = value; }
        }

        /// <remarks />
        [DataMember(Name = "OverrideValueHandling", IsRequired = false, Order = 6)]
        public OverrideValueHandling OverrideValueHandling
        {
            get { return m_overrideValueHandling;  }
            set { m_overrideValueHandling = value; }
        }

        /// <remarks />
        [DataMember(Name = "OverrideValue", IsRequired = false, Order = 7)]
        public Variant OverrideValue
        {
            get { return m_overrideValue;  }
            set { m_overrideValue = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.FieldTargetDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.FieldTargetDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.FieldTargetDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteGuid("DataSetFieldId", DataSetFieldId);
            encoder.WriteString("ReceiverIndexRange", ReceiverIndexRange);
            encoder.WriteNodeId("TargetNodeId", TargetNodeId);
            encoder.WriteUInt32("AttributeId", AttributeId);
            encoder.WriteString("WriteIndexRange", WriteIndexRange);
            encoder.WriteEnumerated("OverrideValueHandling", OverrideValueHandling);
            encoder.WriteVariant("OverrideValue", OverrideValue);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            DataSetFieldId = decoder.ReadGuid("DataSetFieldId");
            ReceiverIndexRange = decoder.ReadString("ReceiverIndexRange");
            TargetNodeId = decoder.ReadNodeId("TargetNodeId");
            AttributeId = decoder.ReadUInt32("AttributeId");
            WriteIndexRange = decoder.ReadString("WriteIndexRange");
            OverrideValueHandling = (OverrideValueHandling)decoder.ReadEnumerated("OverrideValueHandling", typeof(OverrideValueHandling));
            OverrideValue = decoder.ReadVariant("OverrideValue");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            FieldTargetDataType value = encodeable as FieldTargetDataType;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_dataSetFieldId, value.m_dataSetFieldId)) return false;
            if (!Utils.IsEqual(m_receiverIndexRange, value.m_receiverIndexRange)) return false;
            if (!Utils.IsEqual(m_targetNodeId, value.m_targetNodeId)) return false;
            if (!Utils.IsEqual(m_attributeId, value.m_attributeId)) return false;
            if (!Utils.IsEqual(m_writeIndexRange, value.m_writeIndexRange)) return false;
            if (!Utils.IsEqual(m_overrideValueHandling, value.m_overrideValueHandling)) return false;
            if (!Utils.IsEqual(m_overrideValue, value.m_overrideValue)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (FieldTargetDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            FieldTargetDataType clone = (FieldTargetDataType)base.MemberwiseClone();

            clone.m_dataSetFieldId = (Uuid)Utils.Clone(this.m_dataSetFieldId);
            clone.m_receiverIndexRange = (string)Utils.Clone(this.m_receiverIndexRange);
            clone.m_targetNodeId = (NodeId)Utils.Clone(this.m_targetNodeId);
            clone.m_attributeId = (uint)Utils.Clone(this.m_attributeId);
            clone.m_writeIndexRange = (string)Utils.Clone(this.m_writeIndexRange);
            clone.m_overrideValueHandling = (OverrideValueHandling)Utils.Clone(this.m_overrideValueHandling);
            clone.m_overrideValue = (Variant)Utils.Clone(this.m_overrideValue);

            return clone;
        }
        #endregion

        #region Private Fields
        private Uuid m_dataSetFieldId;
        private string m_receiverIndexRange;
        private NodeId m_targetNodeId;
        private uint m_attributeId;
        private string m_writeIndexRange;
        private OverrideValueHandling m_overrideValueHandling;
        private Variant m_overrideValue;
        #endregion
    }

    #region FieldTargetDataTypeCollection Class
    /// <summary>
    /// A collection of FieldTargetDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfFieldTargetDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "FieldTargetDataType")]
    #if !NET_STANDARD
    public partial class FieldTargetDataTypeCollection : List<FieldTargetDataType>, ICloneable
    #else
    public partial class FieldTargetDataTypeCollection : List<FieldTargetDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public FieldTargetDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public FieldTargetDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public FieldTargetDataTypeCollection(IEnumerable<FieldTargetDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator FieldTargetDataTypeCollection(FieldTargetDataType[] values)
        {
            if (values != null)
            {
                return new FieldTargetDataTypeCollection(values);
            }

            return new FieldTargetDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator FieldTargetDataType[](FieldTargetDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (FieldTargetDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            FieldTargetDataTypeCollection clone = new FieldTargetDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((FieldTargetDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region OverrideValueHandling Enumeration
    #if (!OPCUA_EXCLUDE_OverrideValueHandling)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public enum OverrideValueHandling
    {
        /// <remarks />
        [EnumMember(Value = "Disabled_0")]
        Disabled = 0,

        /// <remarks />
        [EnumMember(Value = "LastUsableValue_1")]
        LastUsableValue = 1,

        /// <remarks />
        [EnumMember(Value = "OverrideValue_2")]
        OverrideValue = 2,
    }

    #region OverrideValueHandlingCollection Class
    /// <summary>
    /// A collection of OverrideValueHandling objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfOverrideValueHandling", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "OverrideValueHandling")]
    #if !NET_STANDARD
    public partial class OverrideValueHandlingCollection : List<OverrideValueHandling>, ICloneable
    #else
    public partial class OverrideValueHandlingCollection : List<OverrideValueHandling>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public OverrideValueHandlingCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public OverrideValueHandlingCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public OverrideValueHandlingCollection(IEnumerable<OverrideValueHandling> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator OverrideValueHandlingCollection(OverrideValueHandling[] values)
        {
            if (values != null)
            {
                return new OverrideValueHandlingCollection(values);
            }

            return new OverrideValueHandlingCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator OverrideValueHandling[](OverrideValueHandlingCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (OverrideValueHandlingCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            OverrideValueHandlingCollection clone = new OverrideValueHandlingCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((OverrideValueHandling)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region SubscribedDataSetMirrorDataType Class
    #if (!OPCUA_EXCLUDE_SubscribedDataSetMirrorDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class SubscribedDataSetMirrorDataType : SubscribedDataSetDataType
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public SubscribedDataSetMirrorDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_parentNodeName = null;
            m_rolePermissions = new RolePermissionTypeCollection();
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "ParentNodeName", IsRequired = false, Order = 1)]
        public string ParentNodeName
        {
            get { return m_parentNodeName;  }
            set { m_parentNodeName = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RolePermissions", IsRequired = false, Order = 2)]
        public RolePermissionTypeCollection RolePermissions
        {
            get
            {
                return m_rolePermissions;
            }

            set
            {
                m_rolePermissions = value;

                if (value == null)
                {
                    m_rolePermissions = new RolePermissionTypeCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.SubscribedDataSetMirrorDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.SubscribedDataSetMirrorDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.SubscribedDataSetMirrorDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteString("ParentNodeName", ParentNodeName);
            encoder.WriteEncodeableArray("RolePermissions", RolePermissions.ToArray(), typeof(RolePermissionType));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ParentNodeName = decoder.ReadString("ParentNodeName");
            RolePermissions = (RolePermissionTypeCollection)decoder.ReadEncodeableArray("RolePermissions", typeof(RolePermissionType));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            SubscribedDataSetMirrorDataType value = encodeable as SubscribedDataSetMirrorDataType;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_parentNodeName, value.m_parentNodeName)) return false;
            if (!Utils.IsEqual(m_rolePermissions, value.m_rolePermissions)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (SubscribedDataSetMirrorDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            SubscribedDataSetMirrorDataType clone = (SubscribedDataSetMirrorDataType)base.MemberwiseClone();

            clone.m_parentNodeName = (string)Utils.Clone(this.m_parentNodeName);
            clone.m_rolePermissions = (RolePermissionTypeCollection)Utils.Clone(this.m_rolePermissions);

            return clone;
        }
        #endregion

        #region Private Fields
        private string m_parentNodeName;
        private RolePermissionTypeCollection m_rolePermissions;
        #endregion
    }

    #region SubscribedDataSetMirrorDataTypeCollection Class
    /// <summary>
    /// A collection of SubscribedDataSetMirrorDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfSubscribedDataSetMirrorDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "SubscribedDataSetMirrorDataType")]
    #if !NET_STANDARD
    public partial class SubscribedDataSetMirrorDataTypeCollection : List<SubscribedDataSetMirrorDataType>, ICloneable
    #else
    public partial class SubscribedDataSetMirrorDataTypeCollection : List<SubscribedDataSetMirrorDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public SubscribedDataSetMirrorDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public SubscribedDataSetMirrorDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public SubscribedDataSetMirrorDataTypeCollection(IEnumerable<SubscribedDataSetMirrorDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator SubscribedDataSetMirrorDataTypeCollection(SubscribedDataSetMirrorDataType[] values)
        {
            if (values != null)
            {
                return new SubscribedDataSetMirrorDataTypeCollection(values);
            }

            return new SubscribedDataSetMirrorDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator SubscribedDataSetMirrorDataType[](SubscribedDataSetMirrorDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (SubscribedDataSetMirrorDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            SubscribedDataSetMirrorDataTypeCollection clone = new SubscribedDataSetMirrorDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((SubscribedDataSetMirrorDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region PubSubConfigurationDataType Class
    #if (!OPCUA_EXCLUDE_PubSubConfigurationDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class PubSubConfigurationDataType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public PubSubConfigurationDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_publishedDataSets = new PublishedDataSetDataTypeCollection();
            m_connections = new PubSubConnectionDataTypeCollection();
            m_enabled = true;
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "PublishedDataSets", IsRequired = false, Order = 1)]
        public PublishedDataSetDataTypeCollection PublishedDataSets
        {
            get
            {
                return m_publishedDataSets;
            }

            set
            {
                m_publishedDataSets = value;

                if (value == null)
                {
                    m_publishedDataSets = new PublishedDataSetDataTypeCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "Connections", IsRequired = false, Order = 2)]
        public PubSubConnectionDataTypeCollection Connections
        {
            get
            {
                return m_connections;
            }

            set
            {
                m_connections = value;

                if (value == null)
                {
                    m_connections = new PubSubConnectionDataTypeCollection();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "Enabled", IsRequired = false, Order = 3)]
        public bool Enabled
        {
            get { return m_enabled;  }
            set { m_enabled = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.PubSubConfigurationDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.PubSubConfigurationDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.PubSubConfigurationDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeableArray("PublishedDataSets", PublishedDataSets.ToArray(), typeof(PublishedDataSetDataType));
            encoder.WriteEncodeableArray("Connections", Connections.ToArray(), typeof(PubSubConnectionDataType));
            encoder.WriteBoolean("Enabled", Enabled);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            PublishedDataSets = (PublishedDataSetDataTypeCollection)decoder.ReadEncodeableArray("PublishedDataSets", typeof(PublishedDataSetDataType));
            Connections = (PubSubConnectionDataTypeCollection)decoder.ReadEncodeableArray("Connections", typeof(PubSubConnectionDataType));
            Enabled = decoder.ReadBoolean("Enabled");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            PubSubConfigurationDataType value = encodeable as PubSubConfigurationDataType;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_publishedDataSets, value.m_publishedDataSets)) return false;
            if (!Utils.IsEqual(m_connections, value.m_connections)) return false;
            if (!Utils.IsEqual(m_enabled, value.m_enabled)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (PubSubConfigurationDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            PubSubConfigurationDataType clone = (PubSubConfigurationDataType)base.MemberwiseClone();

            clone.m_publishedDataSets = (PublishedDataSetDataTypeCollection)Utils.Clone(this.m_publishedDataSets);
            clone.m_connections = (PubSubConnectionDataTypeCollection)Utils.Clone(this.m_connections);
            clone.m_enabled = (bool)Utils.Clone(this.m_enabled);

            return clone;
        }
        #endregion

        #region Private Fields
        private PublishedDataSetDataTypeCollection m_publishedDataSets;
        private PubSubConnectionDataTypeCollection m_connections;
        private bool m_enabled;
        #endregion
    }

    #region PubSubConfigurationDataTypeCollection Class
    /// <summary>
    /// A collection of PubSubConfigurationDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfPubSubConfigurationDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "PubSubConfigurationDataType")]
    #if !NET_STANDARD
    public partial class PubSubConfigurationDataTypeCollection : List<PubSubConfigurationDataType>, ICloneable
    #else
    public partial class PubSubConfigurationDataTypeCollection : List<PubSubConfigurationDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public PubSubConfigurationDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public PubSubConfigurationDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public PubSubConfigurationDataTypeCollection(IEnumerable<PubSubConfigurationDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator PubSubConfigurationDataTypeCollection(PubSubConfigurationDataType[] values)
        {
            if (values != null)
            {
                return new PubSubConfigurationDataTypeCollection(values);
            }

            return new PubSubConfigurationDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator PubSubConfigurationDataType[](PubSubConfigurationDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (PubSubConfigurationDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            PubSubConfigurationDataTypeCollection clone = new PubSubConfigurationDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((PubSubConfigurationDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region DataSetOrderingType Enumeration
    #if (!OPCUA_EXCLUDE_DataSetOrderingType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public enum DataSetOrderingType
    {
        /// <remarks />
        [EnumMember(Value = "Undefined_0")]
        Undefined = 0,

        /// <remarks />
        [EnumMember(Value = "AscendingWriterId_1")]
        AscendingWriterId = 1,

        /// <remarks />
        [EnumMember(Value = "AscendingWriterIdSingle_2")]
        AscendingWriterIdSingle = 2,
    }

    #region DataSetOrderingTypeCollection Class
    /// <summary>
    /// A collection of DataSetOrderingType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfDataSetOrderingType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "DataSetOrderingType")]
    #if !NET_STANDARD
    public partial class DataSetOrderingTypeCollection : List<DataSetOrderingType>, ICloneable
    #else
    public partial class DataSetOrderingTypeCollection : List<DataSetOrderingType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public DataSetOrderingTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public DataSetOrderingTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public DataSetOrderingTypeCollection(IEnumerable<DataSetOrderingType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator DataSetOrderingTypeCollection(DataSetOrderingType[] values)
        {
            if (values != null)
            {
                return new DataSetOrderingTypeCollection(values);
            }

            return new DataSetOrderingTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator DataSetOrderingType[](DataSetOrderingTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (DataSetOrderingTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            DataSetOrderingTypeCollection clone = new DataSetOrderingTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((DataSetOrderingType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region UadpNetworkMessageContentMask Enumeration
    #if (!OPCUA_EXCLUDE_UadpNetworkMessageContentMask)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)][Flags]
    public enum UadpNetworkMessageContentMask : UInt32
    {
        /// <remarks />
        [EnumMember(Value = "None_0")]
        None = 0,

        /// <remarks />
        [EnumMember(Value = "PublisherId_1")]
        PublisherId = 1,

        /// <remarks />
        [EnumMember(Value = "GroupHeader_2")]
        GroupHeader = 2,

        /// <remarks />
        [EnumMember(Value = "WriterGroupId_4")]
        WriterGroupId = 4,

        /// <remarks />
        [EnumMember(Value = "GroupVersion_8")]
        GroupVersion = 8,

        /// <remarks />
        [EnumMember(Value = "NetworkMessageNumber_16")]
        NetworkMessageNumber = 16,

        /// <remarks />
        [EnumMember(Value = "SequenceNumber_32")]
        SequenceNumber = 32,

        /// <remarks />
        [EnumMember(Value = "PayloadHeader_64")]
        PayloadHeader = 64,

        /// <remarks />
        [EnumMember(Value = "Timestamp_128")]
        Timestamp = 128,

        /// <remarks />
        [EnumMember(Value = "PicoSeconds_256")]
        PicoSeconds = 256,

        /// <remarks />
        [EnumMember(Value = "DataSetClassId_512")]
        DataSetClassId = 512,

        /// <remarks />
        [EnumMember(Value = "PromotedFields_1024")]
        PromotedFields = 1024,
    }

    #region UadpNetworkMessageContentMaskCollection Class
    /// <summary>
    /// A collection of UadpNetworkMessageContentMask objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfUadpNetworkMessageContentMask", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "UadpNetworkMessageContentMask")]
    #if !NET_STANDARD
    public partial class UadpNetworkMessageContentMaskCollection : List<UadpNetworkMessageContentMask>, ICloneable
    #else
    public partial class UadpNetworkMessageContentMaskCollection : List<UadpNetworkMessageContentMask>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public UadpNetworkMessageContentMaskCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public UadpNetworkMessageContentMaskCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public UadpNetworkMessageContentMaskCollection(IEnumerable<UadpNetworkMessageContentMask> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator UadpNetworkMessageContentMaskCollection(UadpNetworkMessageContentMask[] values)
        {
            if (values != null)
            {
                return new UadpNetworkMessageContentMaskCollection(values);
            }

            return new UadpNetworkMessageContentMaskCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator UadpNetworkMessageContentMask[](UadpNetworkMessageContentMaskCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (UadpNetworkMessageContentMaskCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            UadpNetworkMessageContentMaskCollection clone = new UadpNetworkMessageContentMaskCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((UadpNetworkMessageContentMask)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region UadpWriterGroupMessageDataType Class
    #if (!OPCUA_EXCLUDE_UadpWriterGroupMessageDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class UadpWriterGroupMessageDataType : WriterGroupMessageDataType
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public UadpWriterGroupMessageDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_groupVersion = (uint)0;
            m_dataSetOrdering = DataSetOrderingType.Undefined;
            m_networkMessageContentMask = 0;
            m_samplingOffset = (double)0;
            m_publishingOffset = new DoubleCollection();
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "GroupVersion", IsRequired = false, Order = 1)]
        public uint GroupVersion
        {
            get { return m_groupVersion;  }
            set { m_groupVersion = value; }
        }

        /// <remarks />
        [DataMember(Name = "DataSetOrdering", IsRequired = false, Order = 2)]
        public DataSetOrderingType DataSetOrdering
        {
            get { return m_dataSetOrdering;  }
            set { m_dataSetOrdering = value; }
        }

        /// <remarks />
        [DataMember(Name = "NetworkMessageContentMask", IsRequired = false, Order = 3)]
        public uint NetworkMessageContentMask
        {
            get { return m_networkMessageContentMask;  }
            set { m_networkMessageContentMask = value; }
        }

        /// <remarks />
        [DataMember(Name = "SamplingOffset", IsRequired = false, Order = 4)]
        public double SamplingOffset
        {
            get { return m_samplingOffset;  }
            set { m_samplingOffset = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "PublishingOffset", IsRequired = false, Order = 5)]
        public DoubleCollection PublishingOffset
        {
            get
            {
                return m_publishingOffset;
            }

            set
            {
                m_publishingOffset = value;

                if (value == null)
                {
                    m_publishingOffset = new DoubleCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.UadpWriterGroupMessageDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.UadpWriterGroupMessageDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.UadpWriterGroupMessageDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteUInt32("GroupVersion", GroupVersion);
            encoder.WriteEnumerated("DataSetOrdering", DataSetOrdering);
            encoder.WriteUInt32("NetworkMessageContentMask", NetworkMessageContentMask);
            encoder.WriteDouble("SamplingOffset", SamplingOffset);
            encoder.WriteDoubleArray("PublishingOffset", PublishingOffset);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            GroupVersion = decoder.ReadUInt32("GroupVersion");
            DataSetOrdering = (DataSetOrderingType)decoder.ReadEnumerated("DataSetOrdering", typeof(DataSetOrderingType));
            NetworkMessageContentMask = decoder.ReadUInt32("NetworkMessageContentMask");
            SamplingOffset = decoder.ReadDouble("SamplingOffset");
            PublishingOffset = decoder.ReadDoubleArray("PublishingOffset");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            UadpWriterGroupMessageDataType value = encodeable as UadpWriterGroupMessageDataType;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_groupVersion, value.m_groupVersion)) return false;
            if (!Utils.IsEqual(m_dataSetOrdering, value.m_dataSetOrdering)) return false;
            if (!Utils.IsEqual(m_networkMessageContentMask, value.m_networkMessageContentMask)) return false;
            if (!Utils.IsEqual(m_samplingOffset, value.m_samplingOffset)) return false;
            if (!Utils.IsEqual(m_publishingOffset, value.m_publishingOffset)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (UadpWriterGroupMessageDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            UadpWriterGroupMessageDataType clone = (UadpWriterGroupMessageDataType)base.MemberwiseClone();

            clone.m_groupVersion = (uint)Utils.Clone(this.m_groupVersion);
            clone.m_dataSetOrdering = (DataSetOrderingType)Utils.Clone(this.m_dataSetOrdering);
            clone.m_networkMessageContentMask = (uint)Utils.Clone(this.m_networkMessageContentMask);
            clone.m_samplingOffset = (double)Utils.Clone(this.m_samplingOffset);
            clone.m_publishingOffset = (DoubleCollection)Utils.Clone(this.m_publishingOffset);

            return clone;
        }
        #endregion

        #region Private Fields
        private uint m_groupVersion;
        private DataSetOrderingType m_dataSetOrdering;
        private uint m_networkMessageContentMask;
        private double m_samplingOffset;
        private DoubleCollection m_publishingOffset;
        #endregion
    }

    #region UadpWriterGroupMessageDataTypeCollection Class
    /// <summary>
    /// A collection of UadpWriterGroupMessageDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfUadpWriterGroupMessageDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "UadpWriterGroupMessageDataType")]
    #if !NET_STANDARD
    public partial class UadpWriterGroupMessageDataTypeCollection : List<UadpWriterGroupMessageDataType>, ICloneable
    #else
    public partial class UadpWriterGroupMessageDataTypeCollection : List<UadpWriterGroupMessageDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public UadpWriterGroupMessageDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public UadpWriterGroupMessageDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public UadpWriterGroupMessageDataTypeCollection(IEnumerable<UadpWriterGroupMessageDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator UadpWriterGroupMessageDataTypeCollection(UadpWriterGroupMessageDataType[] values)
        {
            if (values != null)
            {
                return new UadpWriterGroupMessageDataTypeCollection(values);
            }

            return new UadpWriterGroupMessageDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator UadpWriterGroupMessageDataType[](UadpWriterGroupMessageDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (UadpWriterGroupMessageDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            UadpWriterGroupMessageDataTypeCollection clone = new UadpWriterGroupMessageDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((UadpWriterGroupMessageDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region UadpDataSetMessageContentMask Enumeration
    #if (!OPCUA_EXCLUDE_UadpDataSetMessageContentMask)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)][Flags]
    public enum UadpDataSetMessageContentMask : UInt32
    {
        /// <remarks />
        [EnumMember(Value = "None_0")]
        None = 0,

        /// <remarks />
        [EnumMember(Value = "Timestamp_1")]
        Timestamp = 1,

        /// <remarks />
        [EnumMember(Value = "PicoSeconds_2")]
        PicoSeconds = 2,

        /// <remarks />
        [EnumMember(Value = "Status_4")]
        Status = 4,

        /// <remarks />
        [EnumMember(Value = "MajorVersion_8")]
        MajorVersion = 8,

        /// <remarks />
        [EnumMember(Value = "MinorVersion_16")]
        MinorVersion = 16,

        /// <remarks />
        [EnumMember(Value = "SequenceNumber_32")]
        SequenceNumber = 32,
    }

    #region UadpDataSetMessageContentMaskCollection Class
    /// <summary>
    /// A collection of UadpDataSetMessageContentMask objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfUadpDataSetMessageContentMask", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "UadpDataSetMessageContentMask")]
    #if !NET_STANDARD
    public partial class UadpDataSetMessageContentMaskCollection : List<UadpDataSetMessageContentMask>, ICloneable
    #else
    public partial class UadpDataSetMessageContentMaskCollection : List<UadpDataSetMessageContentMask>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public UadpDataSetMessageContentMaskCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public UadpDataSetMessageContentMaskCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public UadpDataSetMessageContentMaskCollection(IEnumerable<UadpDataSetMessageContentMask> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator UadpDataSetMessageContentMaskCollection(UadpDataSetMessageContentMask[] values)
        {
            if (values != null)
            {
                return new UadpDataSetMessageContentMaskCollection(values);
            }

            return new UadpDataSetMessageContentMaskCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator UadpDataSetMessageContentMask[](UadpDataSetMessageContentMaskCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (UadpDataSetMessageContentMaskCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            UadpDataSetMessageContentMaskCollection clone = new UadpDataSetMessageContentMaskCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((UadpDataSetMessageContentMask)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region UadpDataSetWriterMessageDataType Class
    #if (!OPCUA_EXCLUDE_UadpDataSetWriterMessageDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class UadpDataSetWriterMessageDataType : DataSetWriterMessageDataType
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public UadpDataSetWriterMessageDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_dataSetMessageContentMask = 0;
            m_configuredSize = (ushort)0;
            m_networkMessageNumber = (ushort)0;
            m_dataSetOffset = (ushort)0;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "DataSetMessageContentMask", IsRequired = false, Order = 1)]
        public uint DataSetMessageContentMask
        {
            get { return m_dataSetMessageContentMask;  }
            set { m_dataSetMessageContentMask = value; }
        }

        /// <remarks />
        [DataMember(Name = "ConfiguredSize", IsRequired = false, Order = 2)]
        public ushort ConfiguredSize
        {
            get { return m_configuredSize;  }
            set { m_configuredSize = value; }
        }

        /// <remarks />
        [DataMember(Name = "NetworkMessageNumber", IsRequired = false, Order = 3)]
        public ushort NetworkMessageNumber
        {
            get { return m_networkMessageNumber;  }
            set { m_networkMessageNumber = value; }
        }

        /// <remarks />
        [DataMember(Name = "DataSetOffset", IsRequired = false, Order = 4)]
        public ushort DataSetOffset
        {
            get { return m_dataSetOffset;  }
            set { m_dataSetOffset = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.UadpDataSetWriterMessageDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.UadpDataSetWriterMessageDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.UadpDataSetWriterMessageDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteUInt32("DataSetMessageContentMask", DataSetMessageContentMask);
            encoder.WriteUInt16("ConfiguredSize", ConfiguredSize);
            encoder.WriteUInt16("NetworkMessageNumber", NetworkMessageNumber);
            encoder.WriteUInt16("DataSetOffset", DataSetOffset);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            DataSetMessageContentMask = decoder.ReadUInt32("DataSetMessageContentMask");
            ConfiguredSize = decoder.ReadUInt16("ConfiguredSize");
            NetworkMessageNumber = decoder.ReadUInt16("NetworkMessageNumber");
            DataSetOffset = decoder.ReadUInt16("DataSetOffset");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            UadpDataSetWriterMessageDataType value = encodeable as UadpDataSetWriterMessageDataType;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_dataSetMessageContentMask, value.m_dataSetMessageContentMask)) return false;
            if (!Utils.IsEqual(m_configuredSize, value.m_configuredSize)) return false;
            if (!Utils.IsEqual(m_networkMessageNumber, value.m_networkMessageNumber)) return false;
            if (!Utils.IsEqual(m_dataSetOffset, value.m_dataSetOffset)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (UadpDataSetWriterMessageDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            UadpDataSetWriterMessageDataType clone = (UadpDataSetWriterMessageDataType)base.MemberwiseClone();

            clone.m_dataSetMessageContentMask = (uint)Utils.Clone(this.m_dataSetMessageContentMask);
            clone.m_configuredSize = (ushort)Utils.Clone(this.m_configuredSize);
            clone.m_networkMessageNumber = (ushort)Utils.Clone(this.m_networkMessageNumber);
            clone.m_dataSetOffset = (ushort)Utils.Clone(this.m_dataSetOffset);

            return clone;
        }
        #endregion

        #region Private Fields
        private uint m_dataSetMessageContentMask;
        private ushort m_configuredSize;
        private ushort m_networkMessageNumber;
        private ushort m_dataSetOffset;
        #endregion
    }

    #region UadpDataSetWriterMessageDataTypeCollection Class
    /// <summary>
    /// A collection of UadpDataSetWriterMessageDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfUadpDataSetWriterMessageDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "UadpDataSetWriterMessageDataType")]
    #if !NET_STANDARD
    public partial class UadpDataSetWriterMessageDataTypeCollection : List<UadpDataSetWriterMessageDataType>, ICloneable
    #else
    public partial class UadpDataSetWriterMessageDataTypeCollection : List<UadpDataSetWriterMessageDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public UadpDataSetWriterMessageDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public UadpDataSetWriterMessageDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public UadpDataSetWriterMessageDataTypeCollection(IEnumerable<UadpDataSetWriterMessageDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator UadpDataSetWriterMessageDataTypeCollection(UadpDataSetWriterMessageDataType[] values)
        {
            if (values != null)
            {
                return new UadpDataSetWriterMessageDataTypeCollection(values);
            }

            return new UadpDataSetWriterMessageDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator UadpDataSetWriterMessageDataType[](UadpDataSetWriterMessageDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (UadpDataSetWriterMessageDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            UadpDataSetWriterMessageDataTypeCollection clone = new UadpDataSetWriterMessageDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((UadpDataSetWriterMessageDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region UadpDataSetReaderMessageDataType Class
    #if (!OPCUA_EXCLUDE_UadpDataSetReaderMessageDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class UadpDataSetReaderMessageDataType : DataSetReaderMessageDataType
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public UadpDataSetReaderMessageDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_groupVersion = (uint)0;
            m_networkMessageNumber = (ushort)0;
            m_dataSetOffset = (ushort)0;
            m_dataSetClassId = Uuid.Empty;
            m_networkMessageContentMask = 0;
            m_dataSetMessageContentMask = 0;
            m_publishingInterval = (double)0;
            m_receiveOffset = (double)0;
            m_processingOffset = (double)0;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "GroupVersion", IsRequired = false, Order = 1)]
        public uint GroupVersion
        {
            get { return m_groupVersion;  }
            set { m_groupVersion = value; }
        }

        /// <remarks />
        [DataMember(Name = "NetworkMessageNumber", IsRequired = false, Order = 2)]
        public ushort NetworkMessageNumber
        {
            get { return m_networkMessageNumber;  }
            set { m_networkMessageNumber = value; }
        }

        /// <remarks />
        [DataMember(Name = "DataSetOffset", IsRequired = false, Order = 3)]
        public ushort DataSetOffset
        {
            get { return m_dataSetOffset;  }
            set { m_dataSetOffset = value; }
        }

        /// <remarks />
        [DataMember(Name = "DataSetClassId", IsRequired = false, Order = 4)]
        public Uuid DataSetClassId
        {
            get { return m_dataSetClassId;  }
            set { m_dataSetClassId = value; }
        }

        /// <remarks />
        [DataMember(Name = "NetworkMessageContentMask", IsRequired = false, Order = 5)]
        public uint NetworkMessageContentMask
        {
            get { return m_networkMessageContentMask;  }
            set { m_networkMessageContentMask = value; }
        }

        /// <remarks />
        [DataMember(Name = "DataSetMessageContentMask", IsRequired = false, Order = 6)]
        public uint DataSetMessageContentMask
        {
            get { return m_dataSetMessageContentMask;  }
            set { m_dataSetMessageContentMask = value; }
        }

        /// <remarks />
        [DataMember(Name = "PublishingInterval", IsRequired = false, Order = 7)]
        public double PublishingInterval
        {
            get { return m_publishingInterval;  }
            set { m_publishingInterval = value; }
        }

        /// <remarks />
        [DataMember(Name = "ReceiveOffset", IsRequired = false, Order = 8)]
        public double ReceiveOffset
        {
            get { return m_receiveOffset;  }
            set { m_receiveOffset = value; }
        }

        /// <remarks />
        [DataMember(Name = "ProcessingOffset", IsRequired = false, Order = 9)]
        public double ProcessingOffset
        {
            get { return m_processingOffset;  }
            set { m_processingOffset = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.UadpDataSetReaderMessageDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.UadpDataSetReaderMessageDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.UadpDataSetReaderMessageDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteUInt32("GroupVersion", GroupVersion);
            encoder.WriteUInt16("NetworkMessageNumber", NetworkMessageNumber);
            encoder.WriteUInt16("DataSetOffset", DataSetOffset);
            encoder.WriteGuid("DataSetClassId", DataSetClassId);
            encoder.WriteUInt32("NetworkMessageContentMask", NetworkMessageContentMask);
            encoder.WriteUInt32("DataSetMessageContentMask", DataSetMessageContentMask);
            encoder.WriteDouble("PublishingInterval", PublishingInterval);
            encoder.WriteDouble("ReceiveOffset", ReceiveOffset);
            encoder.WriteDouble("ProcessingOffset", ProcessingOffset);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            GroupVersion = decoder.ReadUInt32("GroupVersion");
            NetworkMessageNumber = decoder.ReadUInt16("NetworkMessageNumber");
            DataSetOffset = decoder.ReadUInt16("DataSetOffset");
            DataSetClassId = decoder.ReadGuid("DataSetClassId");
            NetworkMessageContentMask = decoder.ReadUInt32("NetworkMessageContentMask");
            DataSetMessageContentMask = decoder.ReadUInt32("DataSetMessageContentMask");
            PublishingInterval = decoder.ReadDouble("PublishingInterval");
            ReceiveOffset = decoder.ReadDouble("ReceiveOffset");
            ProcessingOffset = decoder.ReadDouble("ProcessingOffset");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            UadpDataSetReaderMessageDataType value = encodeable as UadpDataSetReaderMessageDataType;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_groupVersion, value.m_groupVersion)) return false;
            if (!Utils.IsEqual(m_networkMessageNumber, value.m_networkMessageNumber)) return false;
            if (!Utils.IsEqual(m_dataSetOffset, value.m_dataSetOffset)) return false;
            if (!Utils.IsEqual(m_dataSetClassId, value.m_dataSetClassId)) return false;
            if (!Utils.IsEqual(m_networkMessageContentMask, value.m_networkMessageContentMask)) return false;
            if (!Utils.IsEqual(m_dataSetMessageContentMask, value.m_dataSetMessageContentMask)) return false;
            if (!Utils.IsEqual(m_publishingInterval, value.m_publishingInterval)) return false;
            if (!Utils.IsEqual(m_receiveOffset, value.m_receiveOffset)) return false;
            if (!Utils.IsEqual(m_processingOffset, value.m_processingOffset)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (UadpDataSetReaderMessageDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            UadpDataSetReaderMessageDataType clone = (UadpDataSetReaderMessageDataType)base.MemberwiseClone();

            clone.m_groupVersion = (uint)Utils.Clone(this.m_groupVersion);
            clone.m_networkMessageNumber = (ushort)Utils.Clone(this.m_networkMessageNumber);
            clone.m_dataSetOffset = (ushort)Utils.Clone(this.m_dataSetOffset);
            clone.m_dataSetClassId = (Uuid)Utils.Clone(this.m_dataSetClassId);
            clone.m_networkMessageContentMask = (uint)Utils.Clone(this.m_networkMessageContentMask);
            clone.m_dataSetMessageContentMask = (uint)Utils.Clone(this.m_dataSetMessageContentMask);
            clone.m_publishingInterval = (double)Utils.Clone(this.m_publishingInterval);
            clone.m_receiveOffset = (double)Utils.Clone(this.m_receiveOffset);
            clone.m_processingOffset = (double)Utils.Clone(this.m_processingOffset);

            return clone;
        }
        #endregion

        #region Private Fields
        private uint m_groupVersion;
        private ushort m_networkMessageNumber;
        private ushort m_dataSetOffset;
        private Uuid m_dataSetClassId;
        private uint m_networkMessageContentMask;
        private uint m_dataSetMessageContentMask;
        private double m_publishingInterval;
        private double m_receiveOffset;
        private double m_processingOffset;
        #endregion
    }

    #region UadpDataSetReaderMessageDataTypeCollection Class
    /// <summary>
    /// A collection of UadpDataSetReaderMessageDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfUadpDataSetReaderMessageDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "UadpDataSetReaderMessageDataType")]
    #if !NET_STANDARD
    public partial class UadpDataSetReaderMessageDataTypeCollection : List<UadpDataSetReaderMessageDataType>, ICloneable
    #else
    public partial class UadpDataSetReaderMessageDataTypeCollection : List<UadpDataSetReaderMessageDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public UadpDataSetReaderMessageDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public UadpDataSetReaderMessageDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public UadpDataSetReaderMessageDataTypeCollection(IEnumerable<UadpDataSetReaderMessageDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator UadpDataSetReaderMessageDataTypeCollection(UadpDataSetReaderMessageDataType[] values)
        {
            if (values != null)
            {
                return new UadpDataSetReaderMessageDataTypeCollection(values);
            }

            return new UadpDataSetReaderMessageDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator UadpDataSetReaderMessageDataType[](UadpDataSetReaderMessageDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (UadpDataSetReaderMessageDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            UadpDataSetReaderMessageDataTypeCollection clone = new UadpDataSetReaderMessageDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((UadpDataSetReaderMessageDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region JsonNetworkMessageContentMask Enumeration
    #if (!OPCUA_EXCLUDE_JsonNetworkMessageContentMask)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)][Flags]
    public enum JsonNetworkMessageContentMask : UInt32
    {
        /// <remarks />
        [EnumMember(Value = "None_0")]
        None = 0,

        /// <remarks />
        [EnumMember(Value = "NetworkMessageHeader_1")]
        NetworkMessageHeader = 1,

        /// <remarks />
        [EnumMember(Value = "DataSetMessageHeader_2")]
        DataSetMessageHeader = 2,

        /// <remarks />
        [EnumMember(Value = "SingleDataSetMessage_4")]
        SingleDataSetMessage = 4,

        /// <remarks />
        [EnumMember(Value = "PublisherId_8")]
        PublisherId = 8,

        /// <remarks />
        [EnumMember(Value = "DataSetClassId_16")]
        DataSetClassId = 16,

        /// <remarks />
        [EnumMember(Value = "ReplyTo_32")]
        ReplyTo = 32,
    }

    #region JsonNetworkMessageContentMaskCollection Class
    /// <summary>
    /// A collection of JsonNetworkMessageContentMask objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfJsonNetworkMessageContentMask", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "JsonNetworkMessageContentMask")]
    #if !NET_STANDARD
    public partial class JsonNetworkMessageContentMaskCollection : List<JsonNetworkMessageContentMask>, ICloneable
    #else
    public partial class JsonNetworkMessageContentMaskCollection : List<JsonNetworkMessageContentMask>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public JsonNetworkMessageContentMaskCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public JsonNetworkMessageContentMaskCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public JsonNetworkMessageContentMaskCollection(IEnumerable<JsonNetworkMessageContentMask> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator JsonNetworkMessageContentMaskCollection(JsonNetworkMessageContentMask[] values)
        {
            if (values != null)
            {
                return new JsonNetworkMessageContentMaskCollection(values);
            }

            return new JsonNetworkMessageContentMaskCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator JsonNetworkMessageContentMask[](JsonNetworkMessageContentMaskCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (JsonNetworkMessageContentMaskCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            JsonNetworkMessageContentMaskCollection clone = new JsonNetworkMessageContentMaskCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((JsonNetworkMessageContentMask)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region JsonWriterGroupMessageDataType Class
    #if (!OPCUA_EXCLUDE_JsonWriterGroupMessageDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class JsonWriterGroupMessageDataType : WriterGroupMessageDataType
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public JsonWriterGroupMessageDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_networkMessageContentMask = 0;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "NetworkMessageContentMask", IsRequired = false, Order = 1)]
        public uint NetworkMessageContentMask
        {
            get { return m_networkMessageContentMask;  }
            set { m_networkMessageContentMask = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.JsonWriterGroupMessageDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.JsonWriterGroupMessageDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.JsonWriterGroupMessageDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteUInt32("NetworkMessageContentMask", NetworkMessageContentMask);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            NetworkMessageContentMask = decoder.ReadUInt32("NetworkMessageContentMask");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            JsonWriterGroupMessageDataType value = encodeable as JsonWriterGroupMessageDataType;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_networkMessageContentMask, value.m_networkMessageContentMask)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (JsonWriterGroupMessageDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            JsonWriterGroupMessageDataType clone = (JsonWriterGroupMessageDataType)base.MemberwiseClone();

            clone.m_networkMessageContentMask = (uint)Utils.Clone(this.m_networkMessageContentMask);

            return clone;
        }
        #endregion

        #region Private Fields
        private uint m_networkMessageContentMask;
        #endregion
    }

    #region JsonWriterGroupMessageDataTypeCollection Class
    /// <summary>
    /// A collection of JsonWriterGroupMessageDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfJsonWriterGroupMessageDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "JsonWriterGroupMessageDataType")]
    #if !NET_STANDARD
    public partial class JsonWriterGroupMessageDataTypeCollection : List<JsonWriterGroupMessageDataType>, ICloneable
    #else
    public partial class JsonWriterGroupMessageDataTypeCollection : List<JsonWriterGroupMessageDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public JsonWriterGroupMessageDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public JsonWriterGroupMessageDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public JsonWriterGroupMessageDataTypeCollection(IEnumerable<JsonWriterGroupMessageDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator JsonWriterGroupMessageDataTypeCollection(JsonWriterGroupMessageDataType[] values)
        {
            if (values != null)
            {
                return new JsonWriterGroupMessageDataTypeCollection(values);
            }

            return new JsonWriterGroupMessageDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator JsonWriterGroupMessageDataType[](JsonWriterGroupMessageDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (JsonWriterGroupMessageDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            JsonWriterGroupMessageDataTypeCollection clone = new JsonWriterGroupMessageDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((JsonWriterGroupMessageDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region JsonDataSetMessageContentMask Enumeration
    #if (!OPCUA_EXCLUDE_JsonDataSetMessageContentMask)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)][Flags]
    public enum JsonDataSetMessageContentMask : UInt32
    {
        /// <remarks />
        [EnumMember(Value = "None_0")]
        None = 0,

        /// <remarks />
        [EnumMember(Value = "DataSetWriterId_1")]
        DataSetWriterId = 1,

        /// <remarks />
        [EnumMember(Value = "MetaDataVersion_2")]
        MetaDataVersion = 2,

        /// <remarks />
        [EnumMember(Value = "SequenceNumber_4")]
        SequenceNumber = 4,

        /// <remarks />
        [EnumMember(Value = "Timestamp_8")]
        Timestamp = 8,

        /// <remarks />
        [EnumMember(Value = "Status_16")]
        Status = 16,

        /// <remarks />
        [EnumMember(Value = "MessageType_32")]
        MessageType = 32,
    }

    #region JsonDataSetMessageContentMaskCollection Class
    /// <summary>
    /// A collection of JsonDataSetMessageContentMask objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfJsonDataSetMessageContentMask", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "JsonDataSetMessageContentMask")]
    #if !NET_STANDARD
    public partial class JsonDataSetMessageContentMaskCollection : List<JsonDataSetMessageContentMask>, ICloneable
    #else
    public partial class JsonDataSetMessageContentMaskCollection : List<JsonDataSetMessageContentMask>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public JsonDataSetMessageContentMaskCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public JsonDataSetMessageContentMaskCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public JsonDataSetMessageContentMaskCollection(IEnumerable<JsonDataSetMessageContentMask> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator JsonDataSetMessageContentMaskCollection(JsonDataSetMessageContentMask[] values)
        {
            if (values != null)
            {
                return new JsonDataSetMessageContentMaskCollection(values);
            }

            return new JsonDataSetMessageContentMaskCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator JsonDataSetMessageContentMask[](JsonDataSetMessageContentMaskCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (JsonDataSetMessageContentMaskCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            JsonDataSetMessageContentMaskCollection clone = new JsonDataSetMessageContentMaskCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((JsonDataSetMessageContentMask)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region JsonDataSetWriterMessageDataType Class
    #if (!OPCUA_EXCLUDE_JsonDataSetWriterMessageDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class JsonDataSetWriterMessageDataType : DataSetWriterMessageDataType
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public JsonDataSetWriterMessageDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_dataSetMessageContentMask = 0;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "DataSetMessageContentMask", IsRequired = false, Order = 1)]
        public uint DataSetMessageContentMask
        {
            get { return m_dataSetMessageContentMask;  }
            set { m_dataSetMessageContentMask = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.JsonDataSetWriterMessageDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.JsonDataSetWriterMessageDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.JsonDataSetWriterMessageDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteUInt32("DataSetMessageContentMask", DataSetMessageContentMask);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            DataSetMessageContentMask = decoder.ReadUInt32("DataSetMessageContentMask");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            JsonDataSetWriterMessageDataType value = encodeable as JsonDataSetWriterMessageDataType;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_dataSetMessageContentMask, value.m_dataSetMessageContentMask)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (JsonDataSetWriterMessageDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            JsonDataSetWriterMessageDataType clone = (JsonDataSetWriterMessageDataType)base.MemberwiseClone();

            clone.m_dataSetMessageContentMask = (uint)Utils.Clone(this.m_dataSetMessageContentMask);

            return clone;
        }
        #endregion

        #region Private Fields
        private uint m_dataSetMessageContentMask;
        #endregion
    }

    #region JsonDataSetWriterMessageDataTypeCollection Class
    /// <summary>
    /// A collection of JsonDataSetWriterMessageDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfJsonDataSetWriterMessageDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "JsonDataSetWriterMessageDataType")]
    #if !NET_STANDARD
    public partial class JsonDataSetWriterMessageDataTypeCollection : List<JsonDataSetWriterMessageDataType>, ICloneable
    #else
    public partial class JsonDataSetWriterMessageDataTypeCollection : List<JsonDataSetWriterMessageDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public JsonDataSetWriterMessageDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public JsonDataSetWriterMessageDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public JsonDataSetWriterMessageDataTypeCollection(IEnumerable<JsonDataSetWriterMessageDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator JsonDataSetWriterMessageDataTypeCollection(JsonDataSetWriterMessageDataType[] values)
        {
            if (values != null)
            {
                return new JsonDataSetWriterMessageDataTypeCollection(values);
            }

            return new JsonDataSetWriterMessageDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator JsonDataSetWriterMessageDataType[](JsonDataSetWriterMessageDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (JsonDataSetWriterMessageDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            JsonDataSetWriterMessageDataTypeCollection clone = new JsonDataSetWriterMessageDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((JsonDataSetWriterMessageDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region JsonDataSetReaderMessageDataType Class
    #if (!OPCUA_EXCLUDE_JsonDataSetReaderMessageDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class JsonDataSetReaderMessageDataType : DataSetReaderMessageDataType
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public JsonDataSetReaderMessageDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_networkMessageContentMask = 0;
            m_dataSetMessageContentMask = 0;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "NetworkMessageContentMask", IsRequired = false, Order = 1)]
        public uint NetworkMessageContentMask
        {
            get { return m_networkMessageContentMask;  }
            set { m_networkMessageContentMask = value; }
        }

        /// <remarks />
        [DataMember(Name = "DataSetMessageContentMask", IsRequired = false, Order = 2)]
        public uint DataSetMessageContentMask
        {
            get { return m_dataSetMessageContentMask;  }
            set { m_dataSetMessageContentMask = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.JsonDataSetReaderMessageDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.JsonDataSetReaderMessageDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.JsonDataSetReaderMessageDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteUInt32("NetworkMessageContentMask", NetworkMessageContentMask);
            encoder.WriteUInt32("DataSetMessageContentMask", DataSetMessageContentMask);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            NetworkMessageContentMask = decoder.ReadUInt32("NetworkMessageContentMask");
            DataSetMessageContentMask = decoder.ReadUInt32("DataSetMessageContentMask");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            JsonDataSetReaderMessageDataType value = encodeable as JsonDataSetReaderMessageDataType;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_networkMessageContentMask, value.m_networkMessageContentMask)) return false;
            if (!Utils.IsEqual(m_dataSetMessageContentMask, value.m_dataSetMessageContentMask)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (JsonDataSetReaderMessageDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            JsonDataSetReaderMessageDataType clone = (JsonDataSetReaderMessageDataType)base.MemberwiseClone();

            clone.m_networkMessageContentMask = (uint)Utils.Clone(this.m_networkMessageContentMask);
            clone.m_dataSetMessageContentMask = (uint)Utils.Clone(this.m_dataSetMessageContentMask);

            return clone;
        }
        #endregion

        #region Private Fields
        private uint m_networkMessageContentMask;
        private uint m_dataSetMessageContentMask;
        #endregion
    }

    #region JsonDataSetReaderMessageDataTypeCollection Class
    /// <summary>
    /// A collection of JsonDataSetReaderMessageDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfJsonDataSetReaderMessageDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "JsonDataSetReaderMessageDataType")]
    #if !NET_STANDARD
    public partial class JsonDataSetReaderMessageDataTypeCollection : List<JsonDataSetReaderMessageDataType>, ICloneable
    #else
    public partial class JsonDataSetReaderMessageDataTypeCollection : List<JsonDataSetReaderMessageDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public JsonDataSetReaderMessageDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public JsonDataSetReaderMessageDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public JsonDataSetReaderMessageDataTypeCollection(IEnumerable<JsonDataSetReaderMessageDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator JsonDataSetReaderMessageDataTypeCollection(JsonDataSetReaderMessageDataType[] values)
        {
            if (values != null)
            {
                return new JsonDataSetReaderMessageDataTypeCollection(values);
            }

            return new JsonDataSetReaderMessageDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator JsonDataSetReaderMessageDataType[](JsonDataSetReaderMessageDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (JsonDataSetReaderMessageDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            JsonDataSetReaderMessageDataTypeCollection clone = new JsonDataSetReaderMessageDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((JsonDataSetReaderMessageDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region DatagramConnectionTransportDataType Class
    #if (!OPCUA_EXCLUDE_DatagramConnectionTransportDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class DatagramConnectionTransportDataType : ConnectionTransportDataType
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public DatagramConnectionTransportDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_discoveryAddress = null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "DiscoveryAddress", IsRequired = false, Order = 1)]
        public ExtensionObject DiscoveryAddress
        {
            get { return m_discoveryAddress;  }
            set { m_discoveryAddress = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.DatagramConnectionTransportDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.DatagramConnectionTransportDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.DatagramConnectionTransportDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteExtensionObject("DiscoveryAddress", DiscoveryAddress);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            DiscoveryAddress = decoder.ReadExtensionObject("DiscoveryAddress");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            DatagramConnectionTransportDataType value = encodeable as DatagramConnectionTransportDataType;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_discoveryAddress, value.m_discoveryAddress)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (DatagramConnectionTransportDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            DatagramConnectionTransportDataType clone = (DatagramConnectionTransportDataType)base.MemberwiseClone();

            clone.m_discoveryAddress = (ExtensionObject)Utils.Clone(this.m_discoveryAddress);

            return clone;
        }
        #endregion

        #region Private Fields
        private ExtensionObject m_discoveryAddress;
        #endregion
    }

    #region DatagramConnectionTransportDataTypeCollection Class
    /// <summary>
    /// A collection of DatagramConnectionTransportDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfDatagramConnectionTransportDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "DatagramConnectionTransportDataType")]
    #if !NET_STANDARD
    public partial class DatagramConnectionTransportDataTypeCollection : List<DatagramConnectionTransportDataType>, ICloneable
    #else
    public partial class DatagramConnectionTransportDataTypeCollection : List<DatagramConnectionTransportDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public DatagramConnectionTransportDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public DatagramConnectionTransportDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public DatagramConnectionTransportDataTypeCollection(IEnumerable<DatagramConnectionTransportDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator DatagramConnectionTransportDataTypeCollection(DatagramConnectionTransportDataType[] values)
        {
            if (values != null)
            {
                return new DatagramConnectionTransportDataTypeCollection(values);
            }

            return new DatagramConnectionTransportDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator DatagramConnectionTransportDataType[](DatagramConnectionTransportDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (DatagramConnectionTransportDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            DatagramConnectionTransportDataTypeCollection clone = new DatagramConnectionTransportDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((DatagramConnectionTransportDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region DatagramWriterGroupTransportDataType Class
    #if (!OPCUA_EXCLUDE_DatagramWriterGroupTransportDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class DatagramWriterGroupTransportDataType : WriterGroupTransportDataType
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public DatagramWriterGroupTransportDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_messageRepeatCount = (byte)0;
            m_messageRepeatDelay = (double)0;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "MessageRepeatCount", IsRequired = false, Order = 1)]
        public byte MessageRepeatCount
        {
            get { return m_messageRepeatCount;  }
            set { m_messageRepeatCount = value; }
        }

        /// <remarks />
        [DataMember(Name = "MessageRepeatDelay", IsRequired = false, Order = 2)]
        public double MessageRepeatDelay
        {
            get { return m_messageRepeatDelay;  }
            set { m_messageRepeatDelay = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.DatagramWriterGroupTransportDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.DatagramWriterGroupTransportDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.DatagramWriterGroupTransportDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteByte("MessageRepeatCount", MessageRepeatCount);
            encoder.WriteDouble("MessageRepeatDelay", MessageRepeatDelay);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            MessageRepeatCount = decoder.ReadByte("MessageRepeatCount");
            MessageRepeatDelay = decoder.ReadDouble("MessageRepeatDelay");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            DatagramWriterGroupTransportDataType value = encodeable as DatagramWriterGroupTransportDataType;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_messageRepeatCount, value.m_messageRepeatCount)) return false;
            if (!Utils.IsEqual(m_messageRepeatDelay, value.m_messageRepeatDelay)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (DatagramWriterGroupTransportDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            DatagramWriterGroupTransportDataType clone = (DatagramWriterGroupTransportDataType)base.MemberwiseClone();

            clone.m_messageRepeatCount = (byte)Utils.Clone(this.m_messageRepeatCount);
            clone.m_messageRepeatDelay = (double)Utils.Clone(this.m_messageRepeatDelay);

            return clone;
        }
        #endregion

        #region Private Fields
        private byte m_messageRepeatCount;
        private double m_messageRepeatDelay;
        #endregion
    }

    #region DatagramWriterGroupTransportDataTypeCollection Class
    /// <summary>
    /// A collection of DatagramWriterGroupTransportDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfDatagramWriterGroupTransportDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "DatagramWriterGroupTransportDataType")]
    #if !NET_STANDARD
    public partial class DatagramWriterGroupTransportDataTypeCollection : List<DatagramWriterGroupTransportDataType>, ICloneable
    #else
    public partial class DatagramWriterGroupTransportDataTypeCollection : List<DatagramWriterGroupTransportDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public DatagramWriterGroupTransportDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public DatagramWriterGroupTransportDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public DatagramWriterGroupTransportDataTypeCollection(IEnumerable<DatagramWriterGroupTransportDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator DatagramWriterGroupTransportDataTypeCollection(DatagramWriterGroupTransportDataType[] values)
        {
            if (values != null)
            {
                return new DatagramWriterGroupTransportDataTypeCollection(values);
            }

            return new DatagramWriterGroupTransportDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator DatagramWriterGroupTransportDataType[](DatagramWriterGroupTransportDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (DatagramWriterGroupTransportDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            DatagramWriterGroupTransportDataTypeCollection clone = new DatagramWriterGroupTransportDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((DatagramWriterGroupTransportDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region BrokerConnectionTransportDataType Class
    #if (!OPCUA_EXCLUDE_BrokerConnectionTransportDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class BrokerConnectionTransportDataType : ConnectionTransportDataType
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public BrokerConnectionTransportDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_resourceUri = null;
            m_authenticationProfileUri = null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "ResourceUri", IsRequired = false, Order = 1)]
        public string ResourceUri
        {
            get { return m_resourceUri;  }
            set { m_resourceUri = value; }
        }

        /// <remarks />
        [DataMember(Name = "AuthenticationProfileUri", IsRequired = false, Order = 2)]
        public string AuthenticationProfileUri
        {
            get { return m_authenticationProfileUri;  }
            set { m_authenticationProfileUri = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.BrokerConnectionTransportDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.BrokerConnectionTransportDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.BrokerConnectionTransportDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteString("ResourceUri", ResourceUri);
            encoder.WriteString("AuthenticationProfileUri", AuthenticationProfileUri);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ResourceUri = decoder.ReadString("ResourceUri");
            AuthenticationProfileUri = decoder.ReadString("AuthenticationProfileUri");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            BrokerConnectionTransportDataType value = encodeable as BrokerConnectionTransportDataType;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_resourceUri, value.m_resourceUri)) return false;
            if (!Utils.IsEqual(m_authenticationProfileUri, value.m_authenticationProfileUri)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (BrokerConnectionTransportDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            BrokerConnectionTransportDataType clone = (BrokerConnectionTransportDataType)base.MemberwiseClone();

            clone.m_resourceUri = (string)Utils.Clone(this.m_resourceUri);
            clone.m_authenticationProfileUri = (string)Utils.Clone(this.m_authenticationProfileUri);

            return clone;
        }
        #endregion

        #region Private Fields
        private string m_resourceUri;
        private string m_authenticationProfileUri;
        #endregion
    }

    #region BrokerConnectionTransportDataTypeCollection Class
    /// <summary>
    /// A collection of BrokerConnectionTransportDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfBrokerConnectionTransportDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "BrokerConnectionTransportDataType")]
    #if !NET_STANDARD
    public partial class BrokerConnectionTransportDataTypeCollection : List<BrokerConnectionTransportDataType>, ICloneable
    #else
    public partial class BrokerConnectionTransportDataTypeCollection : List<BrokerConnectionTransportDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public BrokerConnectionTransportDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public BrokerConnectionTransportDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public BrokerConnectionTransportDataTypeCollection(IEnumerable<BrokerConnectionTransportDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator BrokerConnectionTransportDataTypeCollection(BrokerConnectionTransportDataType[] values)
        {
            if (values != null)
            {
                return new BrokerConnectionTransportDataTypeCollection(values);
            }

            return new BrokerConnectionTransportDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator BrokerConnectionTransportDataType[](BrokerConnectionTransportDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (BrokerConnectionTransportDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            BrokerConnectionTransportDataTypeCollection clone = new BrokerConnectionTransportDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((BrokerConnectionTransportDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region BrokerTransportQualityOfService Enumeration
    #if (!OPCUA_EXCLUDE_BrokerTransportQualityOfService)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public enum BrokerTransportQualityOfService
    {
        /// <remarks />
        [EnumMember(Value = "NotSpecified_0")]
        NotSpecified = 0,

        /// <remarks />
        [EnumMember(Value = "BestEffort_1")]
        BestEffort = 1,

        /// <remarks />
        [EnumMember(Value = "AtLeastOnce_2")]
        AtLeastOnce = 2,

        /// <remarks />
        [EnumMember(Value = "AtMostOnce_3")]
        AtMostOnce = 3,

        /// <remarks />
        [EnumMember(Value = "ExactlyOnce_4")]
        ExactlyOnce = 4,
    }

    #region BrokerTransportQualityOfServiceCollection Class
    /// <summary>
    /// A collection of BrokerTransportQualityOfService objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfBrokerTransportQualityOfService", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "BrokerTransportQualityOfService")]
    #if !NET_STANDARD
    public partial class BrokerTransportQualityOfServiceCollection : List<BrokerTransportQualityOfService>, ICloneable
    #else
    public partial class BrokerTransportQualityOfServiceCollection : List<BrokerTransportQualityOfService>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public BrokerTransportQualityOfServiceCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public BrokerTransportQualityOfServiceCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public BrokerTransportQualityOfServiceCollection(IEnumerable<BrokerTransportQualityOfService> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator BrokerTransportQualityOfServiceCollection(BrokerTransportQualityOfService[] values)
        {
            if (values != null)
            {
                return new BrokerTransportQualityOfServiceCollection(values);
            }

            return new BrokerTransportQualityOfServiceCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator BrokerTransportQualityOfService[](BrokerTransportQualityOfServiceCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (BrokerTransportQualityOfServiceCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            BrokerTransportQualityOfServiceCollection clone = new BrokerTransportQualityOfServiceCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((BrokerTransportQualityOfService)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region BrokerWriterGroupTransportDataType Class
    #if (!OPCUA_EXCLUDE_BrokerWriterGroupTransportDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class BrokerWriterGroupTransportDataType : WriterGroupTransportDataType
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public BrokerWriterGroupTransportDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_queueName = null;
            m_resourceUri = null;
            m_authenticationProfileUri = null;
            m_requestedDeliveryGuarantee = BrokerTransportQualityOfService.NotSpecified;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "QueueName", IsRequired = false, Order = 1)]
        public string QueueName
        {
            get { return m_queueName;  }
            set { m_queueName = value; }
        }

        /// <remarks />
        [DataMember(Name = "ResourceUri", IsRequired = false, Order = 2)]
        public string ResourceUri
        {
            get { return m_resourceUri;  }
            set { m_resourceUri = value; }
        }

        /// <remarks />
        [DataMember(Name = "AuthenticationProfileUri", IsRequired = false, Order = 3)]
        public string AuthenticationProfileUri
        {
            get { return m_authenticationProfileUri;  }
            set { m_authenticationProfileUri = value; }
        }

        /// <remarks />
        [DataMember(Name = "RequestedDeliveryGuarantee", IsRequired = false, Order = 4)]
        public BrokerTransportQualityOfService RequestedDeliveryGuarantee
        {
            get { return m_requestedDeliveryGuarantee;  }
            set { m_requestedDeliveryGuarantee = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.BrokerWriterGroupTransportDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.BrokerWriterGroupTransportDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.BrokerWriterGroupTransportDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteString("QueueName", QueueName);
            encoder.WriteString("ResourceUri", ResourceUri);
            encoder.WriteString("AuthenticationProfileUri", AuthenticationProfileUri);
            encoder.WriteEnumerated("RequestedDeliveryGuarantee", RequestedDeliveryGuarantee);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            QueueName = decoder.ReadString("QueueName");
            ResourceUri = decoder.ReadString("ResourceUri");
            AuthenticationProfileUri = decoder.ReadString("AuthenticationProfileUri");
            RequestedDeliveryGuarantee = (BrokerTransportQualityOfService)decoder.ReadEnumerated("RequestedDeliveryGuarantee", typeof(BrokerTransportQualityOfService));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            BrokerWriterGroupTransportDataType value = encodeable as BrokerWriterGroupTransportDataType;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_queueName, value.m_queueName)) return false;
            if (!Utils.IsEqual(m_resourceUri, value.m_resourceUri)) return false;
            if (!Utils.IsEqual(m_authenticationProfileUri, value.m_authenticationProfileUri)) return false;
            if (!Utils.IsEqual(m_requestedDeliveryGuarantee, value.m_requestedDeliveryGuarantee)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (BrokerWriterGroupTransportDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            BrokerWriterGroupTransportDataType clone = (BrokerWriterGroupTransportDataType)base.MemberwiseClone();

            clone.m_queueName = (string)Utils.Clone(this.m_queueName);
            clone.m_resourceUri = (string)Utils.Clone(this.m_resourceUri);
            clone.m_authenticationProfileUri = (string)Utils.Clone(this.m_authenticationProfileUri);
            clone.m_requestedDeliveryGuarantee = (BrokerTransportQualityOfService)Utils.Clone(this.m_requestedDeliveryGuarantee);

            return clone;
        }
        #endregion

        #region Private Fields
        private string m_queueName;
        private string m_resourceUri;
        private string m_authenticationProfileUri;
        private BrokerTransportQualityOfService m_requestedDeliveryGuarantee;
        #endregion
    }

    #region BrokerWriterGroupTransportDataTypeCollection Class
    /// <summary>
    /// A collection of BrokerWriterGroupTransportDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfBrokerWriterGroupTransportDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "BrokerWriterGroupTransportDataType")]
    #if !NET_STANDARD
    public partial class BrokerWriterGroupTransportDataTypeCollection : List<BrokerWriterGroupTransportDataType>, ICloneable
    #else
    public partial class BrokerWriterGroupTransportDataTypeCollection : List<BrokerWriterGroupTransportDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public BrokerWriterGroupTransportDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public BrokerWriterGroupTransportDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public BrokerWriterGroupTransportDataTypeCollection(IEnumerable<BrokerWriterGroupTransportDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator BrokerWriterGroupTransportDataTypeCollection(BrokerWriterGroupTransportDataType[] values)
        {
            if (values != null)
            {
                return new BrokerWriterGroupTransportDataTypeCollection(values);
            }

            return new BrokerWriterGroupTransportDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator BrokerWriterGroupTransportDataType[](BrokerWriterGroupTransportDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (BrokerWriterGroupTransportDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            BrokerWriterGroupTransportDataTypeCollection clone = new BrokerWriterGroupTransportDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((BrokerWriterGroupTransportDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region BrokerDataSetWriterTransportDataType Class
    #if (!OPCUA_EXCLUDE_BrokerDataSetWriterTransportDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class BrokerDataSetWriterTransportDataType : DataSetWriterTransportDataType
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public BrokerDataSetWriterTransportDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_queueName = null;
            m_resourceUri = null;
            m_authenticationProfileUri = null;
            m_requestedDeliveryGuarantee = BrokerTransportQualityOfService.NotSpecified;
            m_metaDataQueueName = null;
            m_metaDataUpdateTime = (double)0;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "QueueName", IsRequired = false, Order = 1)]
        public string QueueName
        {
            get { return m_queueName;  }
            set { m_queueName = value; }
        }

        /// <remarks />
        [DataMember(Name = "ResourceUri", IsRequired = false, Order = 2)]
        public string ResourceUri
        {
            get { return m_resourceUri;  }
            set { m_resourceUri = value; }
        }

        /// <remarks />
        [DataMember(Name = "AuthenticationProfileUri", IsRequired = false, Order = 3)]
        public string AuthenticationProfileUri
        {
            get { return m_authenticationProfileUri;  }
            set { m_authenticationProfileUri = value; }
        }

        /// <remarks />
        [DataMember(Name = "RequestedDeliveryGuarantee", IsRequired = false, Order = 4)]
        public BrokerTransportQualityOfService RequestedDeliveryGuarantee
        {
            get { return m_requestedDeliveryGuarantee;  }
            set { m_requestedDeliveryGuarantee = value; }
        }

        /// <remarks />
        [DataMember(Name = "MetaDataQueueName", IsRequired = false, Order = 5)]
        public string MetaDataQueueName
        {
            get { return m_metaDataQueueName;  }
            set { m_metaDataQueueName = value; }
        }

        /// <remarks />
        [DataMember(Name = "MetaDataUpdateTime", IsRequired = false, Order = 6)]
        public double MetaDataUpdateTime
        {
            get { return m_metaDataUpdateTime;  }
            set { m_metaDataUpdateTime = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.BrokerDataSetWriterTransportDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.BrokerDataSetWriterTransportDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.BrokerDataSetWriterTransportDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteString("QueueName", QueueName);
            encoder.WriteString("ResourceUri", ResourceUri);
            encoder.WriteString("AuthenticationProfileUri", AuthenticationProfileUri);
            encoder.WriteEnumerated("RequestedDeliveryGuarantee", RequestedDeliveryGuarantee);
            encoder.WriteString("MetaDataQueueName", MetaDataQueueName);
            encoder.WriteDouble("MetaDataUpdateTime", MetaDataUpdateTime);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            QueueName = decoder.ReadString("QueueName");
            ResourceUri = decoder.ReadString("ResourceUri");
            AuthenticationProfileUri = decoder.ReadString("AuthenticationProfileUri");
            RequestedDeliveryGuarantee = (BrokerTransportQualityOfService)decoder.ReadEnumerated("RequestedDeliveryGuarantee", typeof(BrokerTransportQualityOfService));
            MetaDataQueueName = decoder.ReadString("MetaDataQueueName");
            MetaDataUpdateTime = decoder.ReadDouble("MetaDataUpdateTime");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            BrokerDataSetWriterTransportDataType value = encodeable as BrokerDataSetWriterTransportDataType;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_queueName, value.m_queueName)) return false;
            if (!Utils.IsEqual(m_resourceUri, value.m_resourceUri)) return false;
            if (!Utils.IsEqual(m_authenticationProfileUri, value.m_authenticationProfileUri)) return false;
            if (!Utils.IsEqual(m_requestedDeliveryGuarantee, value.m_requestedDeliveryGuarantee)) return false;
            if (!Utils.IsEqual(m_metaDataQueueName, value.m_metaDataQueueName)) return false;
            if (!Utils.IsEqual(m_metaDataUpdateTime, value.m_metaDataUpdateTime)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (BrokerDataSetWriterTransportDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            BrokerDataSetWriterTransportDataType clone = (BrokerDataSetWriterTransportDataType)base.MemberwiseClone();

            clone.m_queueName = (string)Utils.Clone(this.m_queueName);
            clone.m_resourceUri = (string)Utils.Clone(this.m_resourceUri);
            clone.m_authenticationProfileUri = (string)Utils.Clone(this.m_authenticationProfileUri);
            clone.m_requestedDeliveryGuarantee = (BrokerTransportQualityOfService)Utils.Clone(this.m_requestedDeliveryGuarantee);
            clone.m_metaDataQueueName = (string)Utils.Clone(this.m_metaDataQueueName);
            clone.m_metaDataUpdateTime = (double)Utils.Clone(this.m_metaDataUpdateTime);

            return clone;
        }
        #endregion

        #region Private Fields
        private string m_queueName;
        private string m_resourceUri;
        private string m_authenticationProfileUri;
        private BrokerTransportQualityOfService m_requestedDeliveryGuarantee;
        private string m_metaDataQueueName;
        private double m_metaDataUpdateTime;
        #endregion
    }

    #region BrokerDataSetWriterTransportDataTypeCollection Class
    /// <summary>
    /// A collection of BrokerDataSetWriterTransportDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfBrokerDataSetWriterTransportDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "BrokerDataSetWriterTransportDataType")]
    #if !NET_STANDARD
    public partial class BrokerDataSetWriterTransportDataTypeCollection : List<BrokerDataSetWriterTransportDataType>, ICloneable
    #else
    public partial class BrokerDataSetWriterTransportDataTypeCollection : List<BrokerDataSetWriterTransportDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public BrokerDataSetWriterTransportDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public BrokerDataSetWriterTransportDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public BrokerDataSetWriterTransportDataTypeCollection(IEnumerable<BrokerDataSetWriterTransportDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator BrokerDataSetWriterTransportDataTypeCollection(BrokerDataSetWriterTransportDataType[] values)
        {
            if (values != null)
            {
                return new BrokerDataSetWriterTransportDataTypeCollection(values);
            }

            return new BrokerDataSetWriterTransportDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator BrokerDataSetWriterTransportDataType[](BrokerDataSetWriterTransportDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (BrokerDataSetWriterTransportDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            BrokerDataSetWriterTransportDataTypeCollection clone = new BrokerDataSetWriterTransportDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((BrokerDataSetWriterTransportDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region BrokerDataSetReaderTransportDataType Class
    #if (!OPCUA_EXCLUDE_BrokerDataSetReaderTransportDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class BrokerDataSetReaderTransportDataType : DataSetReaderTransportDataType
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public BrokerDataSetReaderTransportDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_queueName = null;
            m_resourceUri = null;
            m_authenticationProfileUri = null;
            m_requestedDeliveryGuarantee = BrokerTransportQualityOfService.NotSpecified;
            m_metaDataQueueName = null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "QueueName", IsRequired = false, Order = 1)]
        public string QueueName
        {
            get { return m_queueName;  }
            set { m_queueName = value; }
        }

        /// <remarks />
        [DataMember(Name = "ResourceUri", IsRequired = false, Order = 2)]
        public string ResourceUri
        {
            get { return m_resourceUri;  }
            set { m_resourceUri = value; }
        }

        /// <remarks />
        [DataMember(Name = "AuthenticationProfileUri", IsRequired = false, Order = 3)]
        public string AuthenticationProfileUri
        {
            get { return m_authenticationProfileUri;  }
            set { m_authenticationProfileUri = value; }
        }

        /// <remarks />
        [DataMember(Name = "RequestedDeliveryGuarantee", IsRequired = false, Order = 4)]
        public BrokerTransportQualityOfService RequestedDeliveryGuarantee
        {
            get { return m_requestedDeliveryGuarantee;  }
            set { m_requestedDeliveryGuarantee = value; }
        }

        /// <remarks />
        [DataMember(Name = "MetaDataQueueName", IsRequired = false, Order = 5)]
        public string MetaDataQueueName
        {
            get { return m_metaDataQueueName;  }
            set { m_metaDataQueueName = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.BrokerDataSetReaderTransportDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.BrokerDataSetReaderTransportDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.BrokerDataSetReaderTransportDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteString("QueueName", QueueName);
            encoder.WriteString("ResourceUri", ResourceUri);
            encoder.WriteString("AuthenticationProfileUri", AuthenticationProfileUri);
            encoder.WriteEnumerated("RequestedDeliveryGuarantee", RequestedDeliveryGuarantee);
            encoder.WriteString("MetaDataQueueName", MetaDataQueueName);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            QueueName = decoder.ReadString("QueueName");
            ResourceUri = decoder.ReadString("ResourceUri");
            AuthenticationProfileUri = decoder.ReadString("AuthenticationProfileUri");
            RequestedDeliveryGuarantee = (BrokerTransportQualityOfService)decoder.ReadEnumerated("RequestedDeliveryGuarantee", typeof(BrokerTransportQualityOfService));
            MetaDataQueueName = decoder.ReadString("MetaDataQueueName");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            BrokerDataSetReaderTransportDataType value = encodeable as BrokerDataSetReaderTransportDataType;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_queueName, value.m_queueName)) return false;
            if (!Utils.IsEqual(m_resourceUri, value.m_resourceUri)) return false;
            if (!Utils.IsEqual(m_authenticationProfileUri, value.m_authenticationProfileUri)) return false;
            if (!Utils.IsEqual(m_requestedDeliveryGuarantee, value.m_requestedDeliveryGuarantee)) return false;
            if (!Utils.IsEqual(m_metaDataQueueName, value.m_metaDataQueueName)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (BrokerDataSetReaderTransportDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            BrokerDataSetReaderTransportDataType clone = (BrokerDataSetReaderTransportDataType)base.MemberwiseClone();

            clone.m_queueName = (string)Utils.Clone(this.m_queueName);
            clone.m_resourceUri = (string)Utils.Clone(this.m_resourceUri);
            clone.m_authenticationProfileUri = (string)Utils.Clone(this.m_authenticationProfileUri);
            clone.m_requestedDeliveryGuarantee = (BrokerTransportQualityOfService)Utils.Clone(this.m_requestedDeliveryGuarantee);
            clone.m_metaDataQueueName = (string)Utils.Clone(this.m_metaDataQueueName);

            return clone;
        }
        #endregion

        #region Private Fields
        private string m_queueName;
        private string m_resourceUri;
        private string m_authenticationProfileUri;
        private BrokerTransportQualityOfService m_requestedDeliveryGuarantee;
        private string m_metaDataQueueName;
        #endregion
    }

    #region BrokerDataSetReaderTransportDataTypeCollection Class
    /// <summary>
    /// A collection of BrokerDataSetReaderTransportDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfBrokerDataSetReaderTransportDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "BrokerDataSetReaderTransportDataType")]
    #if !NET_STANDARD
    public partial class BrokerDataSetReaderTransportDataTypeCollection : List<BrokerDataSetReaderTransportDataType>, ICloneable
    #else
    public partial class BrokerDataSetReaderTransportDataTypeCollection : List<BrokerDataSetReaderTransportDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public BrokerDataSetReaderTransportDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public BrokerDataSetReaderTransportDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public BrokerDataSetReaderTransportDataTypeCollection(IEnumerable<BrokerDataSetReaderTransportDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator BrokerDataSetReaderTransportDataTypeCollection(BrokerDataSetReaderTransportDataType[] values)
        {
            if (values != null)
            {
                return new BrokerDataSetReaderTransportDataTypeCollection(values);
            }

            return new BrokerDataSetReaderTransportDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator BrokerDataSetReaderTransportDataType[](BrokerDataSetReaderTransportDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (BrokerDataSetReaderTransportDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            BrokerDataSetReaderTransportDataTypeCollection clone = new BrokerDataSetReaderTransportDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((BrokerDataSetReaderTransportDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region DiagnosticsLevel Enumeration
    #if (!OPCUA_EXCLUDE_DiagnosticsLevel)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public enum DiagnosticsLevel
    {
        /// <remarks />
        [EnumMember(Value = "Basic_0")]
        Basic = 0,

        /// <remarks />
        [EnumMember(Value = "Advanced_1")]
        Advanced = 1,

        /// <remarks />
        [EnumMember(Value = "Info_2")]
        Info = 2,

        /// <remarks />
        [EnumMember(Value = "Log_3")]
        Log = 3,

        /// <remarks />
        [EnumMember(Value = "Debug_4")]
        Debug = 4,
    }

    #region DiagnosticsLevelCollection Class
    /// <summary>
    /// A collection of DiagnosticsLevel objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfDiagnosticsLevel", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "DiagnosticsLevel")]
    #if !NET_STANDARD
    public partial class DiagnosticsLevelCollection : List<DiagnosticsLevel>, ICloneable
    #else
    public partial class DiagnosticsLevelCollection : List<DiagnosticsLevel>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public DiagnosticsLevelCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public DiagnosticsLevelCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public DiagnosticsLevelCollection(IEnumerable<DiagnosticsLevel> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator DiagnosticsLevelCollection(DiagnosticsLevel[] values)
        {
            if (values != null)
            {
                return new DiagnosticsLevelCollection(values);
            }

            return new DiagnosticsLevelCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator DiagnosticsLevel[](DiagnosticsLevelCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (DiagnosticsLevelCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            DiagnosticsLevelCollection clone = new DiagnosticsLevelCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((DiagnosticsLevel)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region PubSubDiagnosticsCounterClassification Enumeration
    #if (!OPCUA_EXCLUDE_PubSubDiagnosticsCounterClassification)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public enum PubSubDiagnosticsCounterClassification
    {
        /// <remarks />
        [EnumMember(Value = "Information_0")]
        Information = 0,

        /// <remarks />
        [EnumMember(Value = "Error_1")]
        Error = 1,
    }

    #region PubSubDiagnosticsCounterClassificationCollection Class
    /// <summary>
    /// A collection of PubSubDiagnosticsCounterClassification objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfPubSubDiagnosticsCounterClassification", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "PubSubDiagnosticsCounterClassification")]
    #if !NET_STANDARD
    public partial class PubSubDiagnosticsCounterClassificationCollection : List<PubSubDiagnosticsCounterClassification>, ICloneable
    #else
    public partial class PubSubDiagnosticsCounterClassificationCollection : List<PubSubDiagnosticsCounterClassification>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public PubSubDiagnosticsCounterClassificationCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public PubSubDiagnosticsCounterClassificationCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public PubSubDiagnosticsCounterClassificationCollection(IEnumerable<PubSubDiagnosticsCounterClassification> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator PubSubDiagnosticsCounterClassificationCollection(PubSubDiagnosticsCounterClassification[] values)
        {
            if (values != null)
            {
                return new PubSubDiagnosticsCounterClassificationCollection(values);
            }

            return new PubSubDiagnosticsCounterClassificationCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator PubSubDiagnosticsCounterClassification[](PubSubDiagnosticsCounterClassificationCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (PubSubDiagnosticsCounterClassificationCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            PubSubDiagnosticsCounterClassificationCollection clone = new PubSubDiagnosticsCounterClassificationCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((PubSubDiagnosticsCounterClassification)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region AliasNameDataType Class
    #if (!OPCUA_EXCLUDE_AliasNameDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class AliasNameDataType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public AliasNameDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_aliasName = null;
            m_referencedNodes = new ExpandedNodeIdCollection();
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "AliasName", IsRequired = false, Order = 1)]
        public QualifiedName AliasName
        {
            get { return m_aliasName;  }
            set { m_aliasName = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ReferencedNodes", IsRequired = false, Order = 2)]
        public ExpandedNodeIdCollection ReferencedNodes
        {
            get
            {
                return m_referencedNodes;
            }

            set
            {
                m_referencedNodes = value;

                if (value == null)
                {
                    m_referencedNodes = new ExpandedNodeIdCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.AliasNameDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.AliasNameDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.AliasNameDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteQualifiedName("AliasName", AliasName);
            encoder.WriteExpandedNodeIdArray("ReferencedNodes", ReferencedNodes);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            AliasName = decoder.ReadQualifiedName("AliasName");
            ReferencedNodes = decoder.ReadExpandedNodeIdArray("ReferencedNodes");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            AliasNameDataType value = encodeable as AliasNameDataType;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_aliasName, value.m_aliasName)) return false;
            if (!Utils.IsEqual(m_referencedNodes, value.m_referencedNodes)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (AliasNameDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            AliasNameDataType clone = (AliasNameDataType)base.MemberwiseClone();

            clone.m_aliasName = (QualifiedName)Utils.Clone(this.m_aliasName);
            clone.m_referencedNodes = (ExpandedNodeIdCollection)Utils.Clone(this.m_referencedNodes);

            return clone;
        }
        #endregion

        #region Private Fields
        private QualifiedName m_aliasName;
        private ExpandedNodeIdCollection m_referencedNodes;
        #endregion
    }

    #region AliasNameDataTypeCollection Class
    /// <summary>
    /// A collection of AliasNameDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfAliasNameDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "AliasNameDataType")]
    #if !NET_STANDARD
    public partial class AliasNameDataTypeCollection : List<AliasNameDataType>, ICloneable
    #else
    public partial class AliasNameDataTypeCollection : List<AliasNameDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public AliasNameDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public AliasNameDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public AliasNameDataTypeCollection(IEnumerable<AliasNameDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator AliasNameDataTypeCollection(AliasNameDataType[] values)
        {
            if (values != null)
            {
                return new AliasNameDataTypeCollection(values);
            }

            return new AliasNameDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator AliasNameDataType[](AliasNameDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (AliasNameDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            AliasNameDataTypeCollection clone = new AliasNameDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((AliasNameDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region Duplex Enumeration
    #if (!OPCUA_EXCLUDE_Duplex)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public enum Duplex
    {
        /// <remarks />
        [EnumMember(Value = "Full_0")]
        Full = 0,

        /// <remarks />
        [EnumMember(Value = "Half_1")]
        Half = 1,

        /// <remarks />
        [EnumMember(Value = "Unknown_2")]
        Unknown = 2,
    }

    #region DuplexCollection Class
    /// <summary>
    /// A collection of Duplex objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfDuplex", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "Duplex")]
    #if !NET_STANDARD
    public partial class DuplexCollection : List<Duplex>, ICloneable
    #else
    public partial class DuplexCollection : List<Duplex>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public DuplexCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public DuplexCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public DuplexCollection(IEnumerable<Duplex> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator DuplexCollection(Duplex[] values)
        {
            if (values != null)
            {
                return new DuplexCollection(values);
            }

            return new DuplexCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator Duplex[](DuplexCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (DuplexCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            DuplexCollection clone = new DuplexCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((Duplex)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region InterfaceAdminStatus Enumeration
    #if (!OPCUA_EXCLUDE_InterfaceAdminStatus)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public enum InterfaceAdminStatus
    {
        /// <remarks />
        [EnumMember(Value = "Up_0")]
        Up = 0,

        /// <remarks />
        [EnumMember(Value = "Down_1")]
        Down = 1,

        /// <remarks />
        [EnumMember(Value = "Testing_2")]
        Testing = 2,
    }

    #region InterfaceAdminStatusCollection Class
    /// <summary>
    /// A collection of InterfaceAdminStatus objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfInterfaceAdminStatus", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "InterfaceAdminStatus")]
    #if !NET_STANDARD
    public partial class InterfaceAdminStatusCollection : List<InterfaceAdminStatus>, ICloneable
    #else
    public partial class InterfaceAdminStatusCollection : List<InterfaceAdminStatus>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public InterfaceAdminStatusCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public InterfaceAdminStatusCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public InterfaceAdminStatusCollection(IEnumerable<InterfaceAdminStatus> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator InterfaceAdminStatusCollection(InterfaceAdminStatus[] values)
        {
            if (values != null)
            {
                return new InterfaceAdminStatusCollection(values);
            }

            return new InterfaceAdminStatusCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator InterfaceAdminStatus[](InterfaceAdminStatusCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (InterfaceAdminStatusCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            InterfaceAdminStatusCollection clone = new InterfaceAdminStatusCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((InterfaceAdminStatus)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region InterfaceOperStatus Enumeration
    #if (!OPCUA_EXCLUDE_InterfaceOperStatus)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public enum InterfaceOperStatus
    {
        /// <remarks />
        [EnumMember(Value = "Up_0")]
        Up = 0,

        /// <remarks />
        [EnumMember(Value = "Down_1")]
        Down = 1,

        /// <remarks />
        [EnumMember(Value = "Testing_2")]
        Testing = 2,

        /// <remarks />
        [EnumMember(Value = "Unknown_3")]
        Unknown = 3,

        /// <remarks />
        [EnumMember(Value = "Dormant_4")]
        Dormant = 4,

        /// <remarks />
        [EnumMember(Value = "NotPresent_5")]
        NotPresent = 5,

        /// <remarks />
        [EnumMember(Value = "LowerLayerDown_6")]
        LowerLayerDown = 6,
    }

    #region InterfaceOperStatusCollection Class
    /// <summary>
    /// A collection of InterfaceOperStatus objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfInterfaceOperStatus", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "InterfaceOperStatus")]
    #if !NET_STANDARD
    public partial class InterfaceOperStatusCollection : List<InterfaceOperStatus>, ICloneable
    #else
    public partial class InterfaceOperStatusCollection : List<InterfaceOperStatus>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public InterfaceOperStatusCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public InterfaceOperStatusCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public InterfaceOperStatusCollection(IEnumerable<InterfaceOperStatus> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator InterfaceOperStatusCollection(InterfaceOperStatus[] values)
        {
            if (values != null)
            {
                return new InterfaceOperStatusCollection(values);
            }

            return new InterfaceOperStatusCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator InterfaceOperStatus[](InterfaceOperStatusCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (InterfaceOperStatusCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            InterfaceOperStatusCollection clone = new InterfaceOperStatusCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((InterfaceOperStatus)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region NegotiationStatus Enumeration
    #if (!OPCUA_EXCLUDE_NegotiationStatus)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public enum NegotiationStatus
    {
        /// <remarks />
        [EnumMember(Value = "InProgress_0")]
        InProgress = 0,

        /// <remarks />
        [EnumMember(Value = "Complete_1")]
        Complete = 1,

        /// <remarks />
        [EnumMember(Value = "Failed_2")]
        Failed = 2,

        /// <remarks />
        [EnumMember(Value = "Unknown_3")]
        Unknown = 3,

        /// <remarks />
        [EnumMember(Value = "NoNegotiation_4")]
        NoNegotiation = 4,
    }

    #region NegotiationStatusCollection Class
    /// <summary>
    /// A collection of NegotiationStatus objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfNegotiationStatus", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "NegotiationStatus")]
    #if !NET_STANDARD
    public partial class NegotiationStatusCollection : List<NegotiationStatus>, ICloneable
    #else
    public partial class NegotiationStatusCollection : List<NegotiationStatus>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public NegotiationStatusCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public NegotiationStatusCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public NegotiationStatusCollection(IEnumerable<NegotiationStatus> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator NegotiationStatusCollection(NegotiationStatus[] values)
        {
            if (values != null)
            {
                return new NegotiationStatusCollection(values);
            }

            return new NegotiationStatusCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator NegotiationStatus[](NegotiationStatusCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (NegotiationStatusCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            NegotiationStatusCollection clone = new NegotiationStatusCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((NegotiationStatus)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region TsnFailureCode Enumeration
    #if (!OPCUA_EXCLUDE_TsnFailureCode)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public enum TsnFailureCode
    {
        /// <remarks />
        [EnumMember(Value = "NoFailure_0")]
        NoFailure = 0,

        /// <remarks />
        [EnumMember(Value = "InsufficientBandwidth_1")]
        InsufficientBandwidth = 1,

        /// <remarks />
        [EnumMember(Value = "InsufficientResources_2")]
        InsufficientResources = 2,

        /// <remarks />
        [EnumMember(Value = "InsufficientTrafficClassBandwidth_3")]
        InsufficientTrafficClassBandwidth = 3,

        /// <remarks />
        [EnumMember(Value = "StreamIdInUse_4")]
        StreamIdInUse = 4,

        /// <remarks />
        [EnumMember(Value = "StreamDestinationAddressInUse_5")]
        StreamDestinationAddressInUse = 5,

        /// <remarks />
        [EnumMember(Value = "StreamPreemptedByHigherRank_6")]
        StreamPreemptedByHigherRank = 6,

        /// <remarks />
        [EnumMember(Value = "LatencyHasChanged_7")]
        LatencyHasChanged = 7,

        /// <remarks />
        [EnumMember(Value = "EgressPortNotAvbCapable_8")]
        EgressPortNotAvbCapable = 8,

        /// <remarks />
        [EnumMember(Value = "UseDifferentDestinationAddress_9")]
        UseDifferentDestinationAddress = 9,

        /// <remarks />
        [EnumMember(Value = "OutOfMsrpResources_10")]
        OutOfMsrpResources = 10,

        /// <remarks />
        [EnumMember(Value = "OutOfMmrpResources_11")]
        OutOfMmrpResources = 11,

        /// <remarks />
        [EnumMember(Value = "CannotStoreDestinationAddress_12")]
        CannotStoreDestinationAddress = 12,

        /// <remarks />
        [EnumMember(Value = "PriorityIsNotAnSrcClass_13")]
        PriorityIsNotAnSrcClass = 13,

        /// <remarks />
        [EnumMember(Value = "MaxFrameSizeTooLarge_14")]
        MaxFrameSizeTooLarge = 14,

        /// <remarks />
        [EnumMember(Value = "MaxFanInPortsLimitReached_15")]
        MaxFanInPortsLimitReached = 15,

        /// <remarks />
        [EnumMember(Value = "FirstValueChangedForStreamId_16")]
        FirstValueChangedForStreamId = 16,

        /// <remarks />
        [EnumMember(Value = "VlanBlockedOnEgress_17")]
        VlanBlockedOnEgress = 17,

        /// <remarks />
        [EnumMember(Value = "VlanTaggingDisabledOnEgress_18")]
        VlanTaggingDisabledOnEgress = 18,

        /// <remarks />
        [EnumMember(Value = "SrClassPriorityMismatch_19")]
        SrClassPriorityMismatch = 19,

        /// <remarks />
        [EnumMember(Value = "FeatureNotPropagated_20")]
        FeatureNotPropagated = 20,

        /// <remarks />
        [EnumMember(Value = "MaxLatencyExceeded_21")]
        MaxLatencyExceeded = 21,

        /// <remarks />
        [EnumMember(Value = "BridgeDoesNotProvideNetworkId_22")]
        BridgeDoesNotProvideNetworkId = 22,

        /// <remarks />
        [EnumMember(Value = "StreamTransformNotSupported_23")]
        StreamTransformNotSupported = 23,

        /// <remarks />
        [EnumMember(Value = "StreamIdTypeNotSupported_24")]
        StreamIdTypeNotSupported = 24,

        /// <remarks />
        [EnumMember(Value = "FeatureNotSupported_25")]
        FeatureNotSupported = 25,
    }

    #region TsnFailureCodeCollection Class
    /// <summary>
    /// A collection of TsnFailureCode objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfTsnFailureCode", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "TsnFailureCode")]
    #if !NET_STANDARD
    public partial class TsnFailureCodeCollection : List<TsnFailureCode>, ICloneable
    #else
    public partial class TsnFailureCodeCollection : List<TsnFailureCode>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public TsnFailureCodeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public TsnFailureCodeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public TsnFailureCodeCollection(IEnumerable<TsnFailureCode> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator TsnFailureCodeCollection(TsnFailureCode[] values)
        {
            if (values != null)
            {
                return new TsnFailureCodeCollection(values);
            }

            return new TsnFailureCodeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator TsnFailureCode[](TsnFailureCodeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (TsnFailureCodeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            TsnFailureCodeCollection clone = new TsnFailureCodeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((TsnFailureCode)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region TsnStreamState Enumeration
    #if (!OPCUA_EXCLUDE_TsnStreamState)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public enum TsnStreamState
    {
        /// <remarks />
        [EnumMember(Value = "Disabled_0")]
        Disabled = 0,

        /// <remarks />
        [EnumMember(Value = "Configuring_1")]
        Configuring = 1,

        /// <remarks />
        [EnumMember(Value = "Ready_2")]
        Ready = 2,

        /// <remarks />
        [EnumMember(Value = "Operational_3")]
        Operational = 3,

        /// <remarks />
        [EnumMember(Value = "Error_4")]
        Error = 4,
    }

    #region TsnStreamStateCollection Class
    /// <summary>
    /// A collection of TsnStreamState objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfTsnStreamState", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "TsnStreamState")]
    #if !NET_STANDARD
    public partial class TsnStreamStateCollection : List<TsnStreamState>, ICloneable
    #else
    public partial class TsnStreamStateCollection : List<TsnStreamState>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public TsnStreamStateCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public TsnStreamStateCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public TsnStreamStateCollection(IEnumerable<TsnStreamState> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator TsnStreamStateCollection(TsnStreamState[] values)
        {
            if (values != null)
            {
                return new TsnStreamStateCollection(values);
            }

            return new TsnStreamStateCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator TsnStreamState[](TsnStreamStateCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (TsnStreamStateCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            TsnStreamStateCollection clone = new TsnStreamStateCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((TsnStreamState)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region TsnTalkerStatus Enumeration
    #if (!OPCUA_EXCLUDE_TsnTalkerStatus)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public enum TsnTalkerStatus
    {
        /// <remarks />
        [EnumMember(Value = "None_0")]
        None = 0,

        /// <remarks />
        [EnumMember(Value = "Ready_1")]
        Ready = 1,

        /// <remarks />
        [EnumMember(Value = "Failed_2")]
        Failed = 2,
    }

    #region TsnTalkerStatusCollection Class
    /// <summary>
    /// A collection of TsnTalkerStatus objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfTsnTalkerStatus", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "TsnTalkerStatus")]
    #if !NET_STANDARD
    public partial class TsnTalkerStatusCollection : List<TsnTalkerStatus>, ICloneable
    #else
    public partial class TsnTalkerStatusCollection : List<TsnTalkerStatus>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public TsnTalkerStatusCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public TsnTalkerStatusCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public TsnTalkerStatusCollection(IEnumerable<TsnTalkerStatus> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator TsnTalkerStatusCollection(TsnTalkerStatus[] values)
        {
            if (values != null)
            {
                return new TsnTalkerStatusCollection(values);
            }

            return new TsnTalkerStatusCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator TsnTalkerStatus[](TsnTalkerStatusCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (TsnTalkerStatusCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            TsnTalkerStatusCollection clone = new TsnTalkerStatusCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((TsnTalkerStatus)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region TsnListenerStatus Enumeration
    #if (!OPCUA_EXCLUDE_TsnListenerStatus)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public enum TsnListenerStatus
    {
        /// <remarks />
        [EnumMember(Value = "None_0")]
        None = 0,

        /// <remarks />
        [EnumMember(Value = "Ready_1")]
        Ready = 1,

        /// <remarks />
        [EnumMember(Value = "PartialFailed_2")]
        PartialFailed = 2,

        /// <remarks />
        [EnumMember(Value = "Failed_3")]
        Failed = 3,
    }

    #region TsnListenerStatusCollection Class
    /// <summary>
    /// A collection of TsnListenerStatus objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfTsnListenerStatus", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "TsnListenerStatus")]
    #if !NET_STANDARD
    public partial class TsnListenerStatusCollection : List<TsnListenerStatus>, ICloneable
    #else
    public partial class TsnListenerStatusCollection : List<TsnListenerStatus>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public TsnListenerStatusCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public TsnListenerStatusCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public TsnListenerStatusCollection(IEnumerable<TsnListenerStatus> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator TsnListenerStatusCollection(TsnListenerStatus[] values)
        {
            if (values != null)
            {
                return new TsnListenerStatusCollection(values);
            }

            return new TsnListenerStatusCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator TsnListenerStatus[](TsnListenerStatusCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (TsnListenerStatusCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            TsnListenerStatusCollection clone = new TsnListenerStatusCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((TsnListenerStatus)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region UnsignedRationalNumber Class
    #if (!OPCUA_EXCLUDE_UnsignedRationalNumber)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class UnsignedRationalNumber : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public UnsignedRationalNumber()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_numerator = (uint)0;
            m_denominator = (uint)0;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "Numerator", IsRequired = false, Order = 1)]
        public uint Numerator
        {
            get { return m_numerator;  }
            set { m_numerator = value; }
        }

        /// <remarks />
        [DataMember(Name = "Denominator", IsRequired = false, Order = 2)]
        public uint Denominator
        {
            get { return m_denominator;  }
            set { m_denominator = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.UnsignedRationalNumber; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.UnsignedRationalNumber_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.UnsignedRationalNumber_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteUInt32("Numerator", Numerator);
            encoder.WriteUInt32("Denominator", Denominator);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            Numerator = decoder.ReadUInt32("Numerator");
            Denominator = decoder.ReadUInt32("Denominator");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            UnsignedRationalNumber value = encodeable as UnsignedRationalNumber;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_numerator, value.m_numerator)) return false;
            if (!Utils.IsEqual(m_denominator, value.m_denominator)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (UnsignedRationalNumber)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            UnsignedRationalNumber clone = (UnsignedRationalNumber)base.MemberwiseClone();

            clone.m_numerator = (uint)Utils.Clone(this.m_numerator);
            clone.m_denominator = (uint)Utils.Clone(this.m_denominator);

            return clone;
        }
        #endregion

        #region Private Fields
        private uint m_numerator;
        private uint m_denominator;
        #endregion
    }

    #region UnsignedRationalNumberCollection Class
    /// <summary>
    /// A collection of UnsignedRationalNumber objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfUnsignedRationalNumber", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "UnsignedRationalNumber")]
    #if !NET_STANDARD
    public partial class UnsignedRationalNumberCollection : List<UnsignedRationalNumber>, ICloneable
    #else
    public partial class UnsignedRationalNumberCollection : List<UnsignedRationalNumber>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public UnsignedRationalNumberCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public UnsignedRationalNumberCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public UnsignedRationalNumberCollection(IEnumerable<UnsignedRationalNumber> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator UnsignedRationalNumberCollection(UnsignedRationalNumber[] values)
        {
            if (values != null)
            {
                return new UnsignedRationalNumberCollection(values);
            }

            return new UnsignedRationalNumberCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator UnsignedRationalNumber[](UnsignedRationalNumberCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (UnsignedRationalNumberCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            UnsignedRationalNumberCollection clone = new UnsignedRationalNumberCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((UnsignedRationalNumber)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region IdType Enumeration
    #if (!OPCUA_EXCLUDE_IdType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public enum IdType
    {
        /// <remarks />
        [EnumMember(Value = "Numeric_0")]
        Numeric = 0,

        /// <remarks />
        [EnumMember(Value = "String_1")]
        String = 1,

        /// <remarks />
        [EnumMember(Value = "Guid_2")]
        Guid = 2,

        /// <remarks />
        [EnumMember(Value = "Opaque_3")]
        Opaque = 3,
    }

    #region IdTypeCollection Class
    /// <summary>
    /// A collection of IdType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfIdType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "IdType")]
    #if !NET_STANDARD
    public partial class IdTypeCollection : List<IdType>, ICloneable
    #else
    public partial class IdTypeCollection : List<IdType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public IdTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public IdTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public IdTypeCollection(IEnumerable<IdType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator IdTypeCollection(IdType[] values)
        {
            if (values != null)
            {
                return new IdTypeCollection(values);
            }

            return new IdTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator IdType[](IdTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (IdTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            IdTypeCollection clone = new IdTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((IdType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region NodeClass Enumeration
    #if (!OPCUA_EXCLUDE_NodeClass)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public enum NodeClass
    {
        /// <remarks />
        [EnumMember(Value = "Unspecified_0")]
        Unspecified = 0,

        /// <remarks />
        [EnumMember(Value = "Object_1")]
        Object = 1,

        /// <remarks />
        [EnumMember(Value = "Variable_2")]
        Variable = 2,

        /// <remarks />
        [EnumMember(Value = "Method_4")]
        Method = 4,

        /// <remarks />
        [EnumMember(Value = "ObjectType_8")]
        ObjectType = 8,

        /// <remarks />
        [EnumMember(Value = "VariableType_16")]
        VariableType = 16,

        /// <remarks />
        [EnumMember(Value = "ReferenceType_32")]
        ReferenceType = 32,

        /// <remarks />
        [EnumMember(Value = "DataType_64")]
        DataType = 64,

        /// <remarks />
        [EnumMember(Value = "View_128")]
        View = 128,
    }
    #endif
    #endregion

    #region PermissionType Enumeration
    #if (!OPCUA_EXCLUDE_PermissionType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)][Flags]
    public enum PermissionType : UInt32
    {
        /// <remarks />
        [EnumMember(Value = "None_0")]
        None = 0,

        /// <remarks />
        [EnumMember(Value = "Browse_1")]
        Browse = 1,

        /// <remarks />
        [EnumMember(Value = "ReadRolePermissions_2")]
        ReadRolePermissions = 2,

        /// <remarks />
        [EnumMember(Value = "WriteAttribute_4")]
        WriteAttribute = 4,

        /// <remarks />
        [EnumMember(Value = "WriteRolePermissions_8")]
        WriteRolePermissions = 8,

        /// <remarks />
        [EnumMember(Value = "WriteHistorizing_16")]
        WriteHistorizing = 16,

        /// <remarks />
        [EnumMember(Value = "Read_32")]
        Read = 32,

        /// <remarks />
        [EnumMember(Value = "Write_64")]
        Write = 64,

        /// <remarks />
        [EnumMember(Value = "ReadHistory_128")]
        ReadHistory = 128,

        /// <remarks />
        [EnumMember(Value = "InsertHistory_256")]
        InsertHistory = 256,

        /// <remarks />
        [EnumMember(Value = "ModifyHistory_512")]
        ModifyHistory = 512,

        /// <remarks />
        [EnumMember(Value = "DeleteHistory_1024")]
        DeleteHistory = 1024,

        /// <remarks />
        [EnumMember(Value = "ReceiveEvents_2048")]
        ReceiveEvents = 2048,

        /// <remarks />
        [EnumMember(Value = "Call_4096")]
        Call = 4096,

        /// <remarks />
        [EnumMember(Value = "AddReference_8192")]
        AddReference = 8192,

        /// <remarks />
        [EnumMember(Value = "RemoveReference_16384")]
        RemoveReference = 16384,

        /// <remarks />
        [EnumMember(Value = "DeleteNode_32768")]
        DeleteNode = 32768,

        /// <remarks />
        [EnumMember(Value = "AddNode_65536")]
        AddNode = 65536,
    }
    #endif
    #endregion

    #region AccessLevelType Enumeration
    #if (!OPCUA_EXCLUDE_AccessLevelType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)][Flags]
    public enum AccessLevelType : Byte
    {
        /// <remarks />
        [EnumMember(Value = "None_0")]
        None = 0,

        /// <remarks />
        [EnumMember(Value = "CurrentRead_1")]
        CurrentRead = 1,

        /// <remarks />
        [EnumMember(Value = "CurrentWrite_2")]
        CurrentWrite = 2,

        /// <remarks />
        [EnumMember(Value = "HistoryRead_4")]
        HistoryRead = 4,

        /// <remarks />
        [EnumMember(Value = "HistoryWrite_8")]
        HistoryWrite = 8,

        /// <remarks />
        [EnumMember(Value = "SemanticChange_16")]
        SemanticChange = 16,

        /// <remarks />
        [EnumMember(Value = "StatusWrite_32")]
        StatusWrite = 32,

        /// <remarks />
        [EnumMember(Value = "TimestampWrite_64")]
        TimestampWrite = 64,
    }
    #endif
    #endregion

    #region AccessLevelExType Enumeration
    #if (!OPCUA_EXCLUDE_AccessLevelExType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)][Flags]
    public enum AccessLevelExType : UInt32
    {
        /// <remarks />
        [EnumMember(Value = "None_0")]
        None = 0,

        /// <remarks />
        [EnumMember(Value = "CurrentRead_1")]
        CurrentRead = 1,

        /// <remarks />
        [EnumMember(Value = "CurrentWrite_2")]
        CurrentWrite = 2,

        /// <remarks />
        [EnumMember(Value = "HistoryRead_4")]
        HistoryRead = 4,

        /// <remarks />
        [EnumMember(Value = "HistoryWrite_8")]
        HistoryWrite = 8,

        /// <remarks />
        [EnumMember(Value = "SemanticChange_16")]
        SemanticChange = 16,

        /// <remarks />
        [EnumMember(Value = "StatusWrite_32")]
        StatusWrite = 32,

        /// <remarks />
        [EnumMember(Value = "TimestampWrite_64")]
        TimestampWrite = 64,

        /// <remarks />
        [EnumMember(Value = "NonatomicRead_256")]
        NonatomicRead = 256,

        /// <remarks />
        [EnumMember(Value = "NonatomicWrite_512")]
        NonatomicWrite = 512,

        /// <remarks />
        [EnumMember(Value = "WriteFullArrayOnly_1024")]
        WriteFullArrayOnly = 1024,

        /// <remarks />
        [EnumMember(Value = "NoSubDataTypes_2048")]
        NoSubDataTypes = 2048,
    }
    #endif
    #endregion

    #region EventNotifierType Enumeration
    #if (!OPCUA_EXCLUDE_EventNotifierType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)][Flags]
    public enum EventNotifierType : Byte
    {
        /// <remarks />
        [EnumMember(Value = "None_0")]
        None = 0,

        /// <remarks />
        [EnumMember(Value = "SubscribeToEvents_1")]
        SubscribeToEvents = 1,

        /// <remarks />
        [EnumMember(Value = "HistoryRead_4")]
        HistoryRead = 4,

        /// <remarks />
        [EnumMember(Value = "HistoryWrite_8")]
        HistoryWrite = 8,
    }
    #endif
    #endregion

    #region AccessRestrictionType Enumeration
    #if (!OPCUA_EXCLUDE_AccessRestrictionType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)][Flags]
    public enum AccessRestrictionType : UInt16
    {
        /// <remarks />
        [EnumMember(Value = "None_0")]
        None = 0,

        /// <remarks />
        [EnumMember(Value = "SigningRequired_1")]
        SigningRequired = 1,

        /// <remarks />
        [EnumMember(Value = "EncryptionRequired_2")]
        EncryptionRequired = 2,

        /// <remarks />
        [EnumMember(Value = "SessionRequired_4")]
        SessionRequired = 4,

        /// <remarks />
        [EnumMember(Value = "ApplyRestrictionsToBrowse_8")]
        ApplyRestrictionsToBrowse = 8,
    }
    #endif
    #endregion

    #region RolePermissionType Class
    #if (!OPCUA_EXCLUDE_RolePermissionType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class RolePermissionType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public RolePermissionType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_roleId = null;
            m_permissions = 0;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "RoleId", IsRequired = false, Order = 1)]
        public NodeId RoleId
        {
            get { return m_roleId;  }
            set { m_roleId = value; }
        }

        /// <remarks />
        [DataMember(Name = "Permissions", IsRequired = false, Order = 2)]
        public uint Permissions
        {
            get { return m_permissions;  }
            set { m_permissions = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.RolePermissionType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.RolePermissionType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.RolePermissionType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteNodeId("RoleId", RoleId);
            encoder.WriteUInt32("Permissions", Permissions);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            RoleId = decoder.ReadNodeId("RoleId");
            Permissions = decoder.ReadUInt32("Permissions");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            RolePermissionType value = encodeable as RolePermissionType;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_roleId, value.m_roleId)) return false;
            if (!Utils.IsEqual(m_permissions, value.m_permissions)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (RolePermissionType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            RolePermissionType clone = (RolePermissionType)base.MemberwiseClone();

            clone.m_roleId = (NodeId)Utils.Clone(this.m_roleId);
            clone.m_permissions = (uint)Utils.Clone(this.m_permissions);

            return clone;
        }
        #endregion

        #region Private Fields
        private NodeId m_roleId;
        private uint m_permissions;
        #endregion
    }

    #region RolePermissionTypeCollection Class
    /// <summary>
    /// A collection of RolePermissionType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfRolePermissionType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "RolePermissionType")]
    #if !NET_STANDARD
    public partial class RolePermissionTypeCollection : List<RolePermissionType>, ICloneable
    #else
    public partial class RolePermissionTypeCollection : List<RolePermissionType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public RolePermissionTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public RolePermissionTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public RolePermissionTypeCollection(IEnumerable<RolePermissionType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator RolePermissionTypeCollection(RolePermissionType[] values)
        {
            if (values != null)
            {
                return new RolePermissionTypeCollection(values);
            }

            return new RolePermissionTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator RolePermissionType[](RolePermissionTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (RolePermissionTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            RolePermissionTypeCollection clone = new RolePermissionTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((RolePermissionType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region DataTypeDefinition Class
    #if (!OPCUA_EXCLUDE_DataTypeDefinition)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class DataTypeDefinition : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public DataTypeDefinition()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
        }
        #endregion

        #region Public Properties
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.DataTypeDefinition; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.DataTypeDefinition_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.DataTypeDefinition_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            DataTypeDefinition value = encodeable as DataTypeDefinition;

            if (value == null)
            {
                return false;
            }


            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (DataTypeDefinition)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            DataTypeDefinition clone = (DataTypeDefinition)base.MemberwiseClone();


            return clone;
        }
        #endregion

        #region Private Fields
        #endregion
    }

    #region DataTypeDefinitionCollection Class
    /// <summary>
    /// A collection of DataTypeDefinition objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfDataTypeDefinition", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "DataTypeDefinition")]
    #if !NET_STANDARD
    public partial class DataTypeDefinitionCollection : List<DataTypeDefinition>, ICloneable
    #else
    public partial class DataTypeDefinitionCollection : List<DataTypeDefinition>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public DataTypeDefinitionCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public DataTypeDefinitionCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public DataTypeDefinitionCollection(IEnumerable<DataTypeDefinition> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator DataTypeDefinitionCollection(DataTypeDefinition[] values)
        {
            if (values != null)
            {
                return new DataTypeDefinitionCollection(values);
            }

            return new DataTypeDefinitionCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator DataTypeDefinition[](DataTypeDefinitionCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (DataTypeDefinitionCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            DataTypeDefinitionCollection clone = new DataTypeDefinitionCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((DataTypeDefinition)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region StructureType Enumeration
    #if (!OPCUA_EXCLUDE_StructureType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public enum StructureType
    {
        /// <remarks />
        [EnumMember(Value = "Structure_0")]
        Structure = 0,

        /// <remarks />
        [EnumMember(Value = "StructureWithOptionalFields_1")]
        StructureWithOptionalFields = 1,

        /// <remarks />
        [EnumMember(Value = "Union_2")]
        Union = 2,

        /// <remarks />
        [EnumMember(Value = "StructureWithSubtypedValues_3")]
        StructureWithSubtypedValues = 3,

        /// <remarks />
        [EnumMember(Value = "UnionWithSubtypedValues_4")]
        UnionWithSubtypedValues = 4,
    }
    #endif
    #endregion

    #region StructureField Class
    #if (!OPCUA_EXCLUDE_StructureField)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class StructureField : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public StructureField()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_name = null;
            m_description = null;
            m_dataType = null;
            m_valueRank = (int)0;
            m_arrayDimensions = new UInt32Collection();
            m_maxStringLength = (uint)0;
            m_isOptional = false;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "Name", IsRequired = false, Order = 1)]
        public string Name
        {
            get { return m_name;  }
            set { m_name = value; }
        }

        /// <remarks />
        [DataMember(Name = "Description", IsRequired = false, Order = 2)]
        public LocalizedText Description
        {
            get { return m_description;  }
            set { m_description = value; }
        }

        /// <remarks />
        [DataMember(Name = "DataType", IsRequired = false, Order = 3)]
        public NodeId DataType
        {
            get { return m_dataType;  }
            set { m_dataType = value; }
        }

        /// <remarks />
        [DataMember(Name = "ValueRank", IsRequired = false, Order = 4)]
        public int ValueRank
        {
            get { return m_valueRank;  }
            set { m_valueRank = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ArrayDimensions", IsRequired = false, Order = 5)]
        public UInt32Collection ArrayDimensions
        {
            get
            {
                return m_arrayDimensions;
            }

            set
            {
                m_arrayDimensions = value;

                if (value == null)
                {
                    m_arrayDimensions = new UInt32Collection();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "MaxStringLength", IsRequired = false, Order = 6)]
        public uint MaxStringLength
        {
            get { return m_maxStringLength;  }
            set { m_maxStringLength = value; }
        }

        /// <remarks />
        [DataMember(Name = "IsOptional", IsRequired = false, Order = 7)]
        public bool IsOptional
        {
            get { return m_isOptional;  }
            set { m_isOptional = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.StructureField; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.StructureField_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.StructureField_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteString("Name", Name);
            encoder.WriteLocalizedText("Description", Description);
            encoder.WriteNodeId("DataType", DataType);
            encoder.WriteInt32("ValueRank", ValueRank);
            encoder.WriteUInt32Array("ArrayDimensions", ArrayDimensions);
            encoder.WriteUInt32("MaxStringLength", MaxStringLength);
            encoder.WriteBoolean("IsOptional", IsOptional);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            Name = decoder.ReadString("Name");
            Description = decoder.ReadLocalizedText("Description");
            DataType = decoder.ReadNodeId("DataType");
            ValueRank = decoder.ReadInt32("ValueRank");
            ArrayDimensions = decoder.ReadUInt32Array("ArrayDimensions");
            MaxStringLength = decoder.ReadUInt32("MaxStringLength");
            IsOptional = decoder.ReadBoolean("IsOptional");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            StructureField value = encodeable as StructureField;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_name, value.m_name)) return false;
            if (!Utils.IsEqual(m_description, value.m_description)) return false;
            if (!Utils.IsEqual(m_dataType, value.m_dataType)) return false;
            if (!Utils.IsEqual(m_valueRank, value.m_valueRank)) return false;
            if (!Utils.IsEqual(m_arrayDimensions, value.m_arrayDimensions)) return false;
            if (!Utils.IsEqual(m_maxStringLength, value.m_maxStringLength)) return false;
            if (!Utils.IsEqual(m_isOptional, value.m_isOptional)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (StructureField)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            StructureField clone = (StructureField)base.MemberwiseClone();

            clone.m_name = (string)Utils.Clone(this.m_name);
            clone.m_description = (LocalizedText)Utils.Clone(this.m_description);
            clone.m_dataType = (NodeId)Utils.Clone(this.m_dataType);
            clone.m_valueRank = (int)Utils.Clone(this.m_valueRank);
            clone.m_arrayDimensions = (UInt32Collection)Utils.Clone(this.m_arrayDimensions);
            clone.m_maxStringLength = (uint)Utils.Clone(this.m_maxStringLength);
            clone.m_isOptional = (bool)Utils.Clone(this.m_isOptional);

            return clone;
        }
        #endregion

        #region Private Fields
        private string m_name;
        private LocalizedText m_description;
        private NodeId m_dataType;
        private int m_valueRank;
        private UInt32Collection m_arrayDimensions;
        private uint m_maxStringLength;
        private bool m_isOptional;
        #endregion
    }

    #region StructureFieldCollection Class
    /// <summary>
    /// A collection of StructureField objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfStructureField", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "StructureField")]
    #if !NET_STANDARD
    public partial class StructureFieldCollection : List<StructureField>, ICloneable
    #else
    public partial class StructureFieldCollection : List<StructureField>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public StructureFieldCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public StructureFieldCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public StructureFieldCollection(IEnumerable<StructureField> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator StructureFieldCollection(StructureField[] values)
        {
            if (values != null)
            {
                return new StructureFieldCollection(values);
            }

            return new StructureFieldCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator StructureField[](StructureFieldCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (StructureFieldCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            StructureFieldCollection clone = new StructureFieldCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((StructureField)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region StructureDefinition Class
    #if (!OPCUA_EXCLUDE_StructureDefinition)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class StructureDefinition : DataTypeDefinition
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public StructureDefinition()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_defaultEncodingId = null;
            m_baseDataType = null;
            m_structureType = StructureType.Structure;
            m_fields = new StructureFieldCollection();
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "DefaultEncodingId", IsRequired = false, Order = 1)]
        public NodeId DefaultEncodingId
        {
            get { return m_defaultEncodingId;  }
            set { m_defaultEncodingId = value; }
        }

        /// <remarks />
        [DataMember(Name = "BaseDataType", IsRequired = false, Order = 2)]
        public NodeId BaseDataType
        {
            get { return m_baseDataType;  }
            set { m_baseDataType = value; }
        }

        /// <remarks />
        [DataMember(Name = "StructureType", IsRequired = false, Order = 3)]
        public StructureType StructureType
        {
            get { return m_structureType;  }
            set { m_structureType = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "Fields", IsRequired = false, Order = 4)]
        public StructureFieldCollection Fields
        {
            get
            {
                return m_fields;
            }

            set
            {
                m_fields = value;

                if (value == null)
                {
                    m_fields = new StructureFieldCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.StructureDefinition; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.StructureDefinition_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.StructureDefinition_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteNodeId("DefaultEncodingId", DefaultEncodingId);
            encoder.WriteNodeId("BaseDataType", BaseDataType);
            encoder.WriteEnumerated("StructureType", StructureType);
            encoder.WriteEncodeableArray("Fields", Fields.ToArray(), typeof(StructureField));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            DefaultEncodingId = decoder.ReadNodeId("DefaultEncodingId");
            BaseDataType = decoder.ReadNodeId("BaseDataType");
            StructureType = (StructureType)decoder.ReadEnumerated("StructureType", typeof(StructureType));
            Fields = (StructureFieldCollection)decoder.ReadEncodeableArray("Fields", typeof(StructureField));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            StructureDefinition value = encodeable as StructureDefinition;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_defaultEncodingId, value.m_defaultEncodingId)) return false;
            if (!Utils.IsEqual(m_baseDataType, value.m_baseDataType)) return false;
            if (!Utils.IsEqual(m_structureType, value.m_structureType)) return false;
            if (!Utils.IsEqual(m_fields, value.m_fields)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (StructureDefinition)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            StructureDefinition clone = (StructureDefinition)base.MemberwiseClone();

            clone.m_defaultEncodingId = (NodeId)Utils.Clone(this.m_defaultEncodingId);
            clone.m_baseDataType = (NodeId)Utils.Clone(this.m_baseDataType);
            clone.m_structureType = (StructureType)Utils.Clone(this.m_structureType);
            clone.m_fields = (StructureFieldCollection)Utils.Clone(this.m_fields);

            return clone;
        }
        #endregion

        #region Private Fields
        private NodeId m_defaultEncodingId;
        private NodeId m_baseDataType;
        private StructureType m_structureType;
        private StructureFieldCollection m_fields;
        #endregion
    }

    #region StructureDefinitionCollection Class
    /// <summary>
    /// A collection of StructureDefinition objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfStructureDefinition", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "StructureDefinition")]
    #if !NET_STANDARD
    public partial class StructureDefinitionCollection : List<StructureDefinition>, ICloneable
    #else
    public partial class StructureDefinitionCollection : List<StructureDefinition>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public StructureDefinitionCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public StructureDefinitionCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public StructureDefinitionCollection(IEnumerable<StructureDefinition> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator StructureDefinitionCollection(StructureDefinition[] values)
        {
            if (values != null)
            {
                return new StructureDefinitionCollection(values);
            }

            return new StructureDefinitionCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator StructureDefinition[](StructureDefinitionCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (StructureDefinitionCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            StructureDefinitionCollection clone = new StructureDefinitionCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((StructureDefinition)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region EnumDefinition Class
    #if (!OPCUA_EXCLUDE_EnumDefinition)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class EnumDefinition : DataTypeDefinition
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public EnumDefinition()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_fields = new EnumFieldCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "Fields", IsRequired = false, Order = 1)]
        public EnumFieldCollection Fields
        {
            get
            {
                return m_fields;
            }

            set
            {
                m_fields = value;

                if (value == null)
                {
                    m_fields = new EnumFieldCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.EnumDefinition; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.EnumDefinition_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.EnumDefinition_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeableArray("Fields", Fields.ToArray(), typeof(EnumField));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            Fields = (EnumFieldCollection)decoder.ReadEncodeableArray("Fields", typeof(EnumField));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            EnumDefinition value = encodeable as EnumDefinition;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_fields, value.m_fields)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (EnumDefinition)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            EnumDefinition clone = (EnumDefinition)base.MemberwiseClone();

            clone.m_fields = (EnumFieldCollection)Utils.Clone(this.m_fields);

            return clone;
        }
        #endregion

        #region Private Fields
        private EnumFieldCollection m_fields;
        #endregion
    }

    #region EnumDefinitionCollection Class
    /// <summary>
    /// A collection of EnumDefinition objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfEnumDefinition", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "EnumDefinition")]
    #if !NET_STANDARD
    public partial class EnumDefinitionCollection : List<EnumDefinition>, ICloneable
    #else
    public partial class EnumDefinitionCollection : List<EnumDefinition>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public EnumDefinitionCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public EnumDefinitionCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public EnumDefinitionCollection(IEnumerable<EnumDefinition> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator EnumDefinitionCollection(EnumDefinition[] values)
        {
            if (values != null)
            {
                return new EnumDefinitionCollection(values);
            }

            return new EnumDefinitionCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator EnumDefinition[](EnumDefinitionCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (EnumDefinitionCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            EnumDefinitionCollection clone = new EnumDefinitionCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((EnumDefinition)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region Node Class
    #if (!OPCUA_EXCLUDE_Node)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class Node : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public Node()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_nodeId = null;
            m_nodeClass = NodeClass.Unspecified;
            m_browseName = null;
            m_displayName = null;
            m_description = null;
            m_writeMask = (uint)0;
            m_userWriteMask = (uint)0;
            m_rolePermissions = new RolePermissionTypeCollection();
            m_userRolePermissions = new RolePermissionTypeCollection();
            m_accessRestrictions = (ushort)0;
            m_references = new ReferenceNodeCollection();
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "NodeId", IsRequired = false, Order = 1)]
        public NodeId NodeId
        {
            get { return m_nodeId;  }
            set { m_nodeId = value; }
        }

        /// <remarks />
        [DataMember(Name = "NodeClass", IsRequired = false, Order = 2)]
        public NodeClass NodeClass
        {
            get { return m_nodeClass;  }
            set { m_nodeClass = value; }
        }

        /// <remarks />
        [DataMember(Name = "BrowseName", IsRequired = false, Order = 3)]
        public QualifiedName BrowseName
        {
            get { return m_browseName;  }
            set { m_browseName = value; }
        }

        /// <remarks />
        [DataMember(Name = "DisplayName", IsRequired = false, Order = 4)]
        public LocalizedText DisplayName
        {
            get { return m_displayName;  }
            set { m_displayName = value; }
        }

        /// <remarks />
        [DataMember(Name = "Description", IsRequired = false, Order = 5)]
        public LocalizedText Description
        {
            get { return m_description;  }
            set { m_description = value; }
        }

        /// <remarks />
        [DataMember(Name = "WriteMask", IsRequired = false, Order = 6)]
        public uint WriteMask
        {
            get { return m_writeMask;  }
            set { m_writeMask = value; }
        }

        /// <remarks />
        [DataMember(Name = "UserWriteMask", IsRequired = false, Order = 7)]
        public uint UserWriteMask
        {
            get { return m_userWriteMask;  }
            set { m_userWriteMask = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RolePermissions", IsRequired = false, Order = 8)]
        public RolePermissionTypeCollection RolePermissions
        {
            get
            {
                return m_rolePermissions;
            }

            set
            {
                m_rolePermissions = value;

                if (value == null)
                {
                    m_rolePermissions = new RolePermissionTypeCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "UserRolePermissions", IsRequired = false, Order = 9)]
        public RolePermissionTypeCollection UserRolePermissions
        {
            get
            {
                return m_userRolePermissions;
            }

            set
            {
                m_userRolePermissions = value;

                if (value == null)
                {
                    m_userRolePermissions = new RolePermissionTypeCollection();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "AccessRestrictions", IsRequired = false, Order = 10)]
        public ushort AccessRestrictions
        {
            get { return m_accessRestrictions;  }
            set { m_accessRestrictions = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "References", IsRequired = false, Order = 11)]
        public ReferenceNodeCollection References
        {
            get
            {
                return m_references;
            }

            set
            {
                m_references = value;

                if (value == null)
                {
                    m_references = new ReferenceNodeCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.Node; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.Node_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.Node_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteNodeId("NodeId", NodeId);
            encoder.WriteEnumerated("NodeClass", NodeClass);
            encoder.WriteQualifiedName("BrowseName", BrowseName);
            encoder.WriteLocalizedText("DisplayName", DisplayName);
            encoder.WriteLocalizedText("Description", Description);
            encoder.WriteUInt32("WriteMask", WriteMask);
            encoder.WriteUInt32("UserWriteMask", UserWriteMask);
            encoder.WriteEncodeableArray("RolePermissions", RolePermissions.ToArray(), typeof(RolePermissionType));
            encoder.WriteEncodeableArray("UserRolePermissions", UserRolePermissions.ToArray(), typeof(RolePermissionType));
            encoder.WriteUInt16("AccessRestrictions", AccessRestrictions);
            encoder.WriteEncodeableArray("References", References.ToArray(), typeof(ReferenceNode));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            NodeId = decoder.ReadNodeId("NodeId");
            NodeClass = (NodeClass)decoder.ReadEnumerated("NodeClass", typeof(NodeClass));
            BrowseName = decoder.ReadQualifiedName("BrowseName");
            DisplayName = decoder.ReadLocalizedText("DisplayName");
            Description = decoder.ReadLocalizedText("Description");
            WriteMask = decoder.ReadUInt32("WriteMask");
            UserWriteMask = decoder.ReadUInt32("UserWriteMask");
            RolePermissions = (RolePermissionTypeCollection)decoder.ReadEncodeableArray("RolePermissions", typeof(RolePermissionType));
            UserRolePermissions = (RolePermissionTypeCollection)decoder.ReadEncodeableArray("UserRolePermissions", typeof(RolePermissionType));
            AccessRestrictions = decoder.ReadUInt16("AccessRestrictions");
            References = (ReferenceNodeCollection)decoder.ReadEncodeableArray("References", typeof(ReferenceNode));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            Node value = encodeable as Node;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_nodeId, value.m_nodeId)) return false;
            if (!Utils.IsEqual(m_nodeClass, value.m_nodeClass)) return false;
            if (!Utils.IsEqual(m_browseName, value.m_browseName)) return false;
            if (!Utils.IsEqual(m_displayName, value.m_displayName)) return false;
            if (!Utils.IsEqual(m_description, value.m_description)) return false;
            if (!Utils.IsEqual(m_writeMask, value.m_writeMask)) return false;
            if (!Utils.IsEqual(m_userWriteMask, value.m_userWriteMask)) return false;
            if (!Utils.IsEqual(m_rolePermissions, value.m_rolePermissions)) return false;
            if (!Utils.IsEqual(m_userRolePermissions, value.m_userRolePermissions)) return false;
            if (!Utils.IsEqual(m_accessRestrictions, value.m_accessRestrictions)) return false;
            if (!Utils.IsEqual(m_references, value.m_references)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (Node)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            Node clone = (Node)base.MemberwiseClone();

            clone.m_nodeId = (NodeId)Utils.Clone(this.m_nodeId);
            clone.m_nodeClass = (NodeClass)Utils.Clone(this.m_nodeClass);
            clone.m_browseName = (QualifiedName)Utils.Clone(this.m_browseName);
            clone.m_displayName = (LocalizedText)Utils.Clone(this.m_displayName);
            clone.m_description = (LocalizedText)Utils.Clone(this.m_description);
            clone.m_writeMask = (uint)Utils.Clone(this.m_writeMask);
            clone.m_userWriteMask = (uint)Utils.Clone(this.m_userWriteMask);
            clone.m_rolePermissions = (RolePermissionTypeCollection)Utils.Clone(this.m_rolePermissions);
            clone.m_userRolePermissions = (RolePermissionTypeCollection)Utils.Clone(this.m_userRolePermissions);
            clone.m_accessRestrictions = (ushort)Utils.Clone(this.m_accessRestrictions);
            clone.m_references = (ReferenceNodeCollection)Utils.Clone(this.m_references);

            return clone;
        }
        #endregion

        #region Private Fields
        private NodeId m_nodeId;
        private NodeClass m_nodeClass;
        private QualifiedName m_browseName;
        private LocalizedText m_displayName;
        private LocalizedText m_description;
        private uint m_writeMask;
        private uint m_userWriteMask;
        private RolePermissionTypeCollection m_rolePermissions;
        private RolePermissionTypeCollection m_userRolePermissions;
        private ushort m_accessRestrictions;
        private ReferenceNodeCollection m_references;
        #endregion
    }

    #region NodeCollection Class
    /// <summary>
    /// A collection of Node objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfNode", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "Node")]
    #if !NET_STANDARD
    public partial class NodeCollection : List<Node>, ICloneable
    #else
    public partial class NodeCollection : List<Node>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public NodeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public NodeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public NodeCollection(IEnumerable<Node> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator NodeCollection(Node[] values)
        {
            if (values != null)
            {
                return new NodeCollection(values);
            }

            return new NodeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator Node[](NodeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (NodeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            NodeCollection clone = new NodeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((Node)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region InstanceNode Class
    #if (!OPCUA_EXCLUDE_InstanceNode)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class InstanceNode : Node
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public InstanceNode()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
        }
        #endregion

        #region Public Properties
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.InstanceNode; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.InstanceNode_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.InstanceNode_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            InstanceNode value = encodeable as InstanceNode;

            if (value == null)
            {
                return false;
            }


            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (InstanceNode)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            InstanceNode clone = (InstanceNode)base.MemberwiseClone();


            return clone;
        }
        #endregion

        #region Private Fields
        #endregion
    }
    #endif
    #endregion

    #region TypeNode Class
    #if (!OPCUA_EXCLUDE_TypeNode)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class TypeNode : Node
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public TypeNode()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
        }
        #endregion

        #region Public Properties
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.TypeNode; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.TypeNode_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.TypeNode_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            TypeNode value = encodeable as TypeNode;

            if (value == null)
            {
                return false;
            }


            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (TypeNode)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            TypeNode clone = (TypeNode)base.MemberwiseClone();


            return clone;
        }
        #endregion

        #region Private Fields
        #endregion
    }
    #endif
    #endregion

    #region ObjectNode Class
    #if (!OPCUA_EXCLUDE_ObjectNode)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ObjectNode : InstanceNode
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ObjectNode()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_eventNotifier = (byte)0;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "EventNotifier", IsRequired = false, Order = 1)]
        public byte EventNotifier
        {
            get { return m_eventNotifier;  }
            set { m_eventNotifier = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ObjectNode; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ObjectNode_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ObjectNode_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteByte("EventNotifier", EventNotifier);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            EventNotifier = decoder.ReadByte("EventNotifier");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ObjectNode value = encodeable as ObjectNode;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_eventNotifier, value.m_eventNotifier)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (ObjectNode)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ObjectNode clone = (ObjectNode)base.MemberwiseClone();

            clone.m_eventNotifier = (byte)Utils.Clone(this.m_eventNotifier);

            return clone;
        }
        #endregion

        #region Private Fields
        private byte m_eventNotifier;
        #endregion
    }
    #endif
    #endregion

    #region ObjectTypeNode Class
    #if (!OPCUA_EXCLUDE_ObjectTypeNode)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ObjectTypeNode : TypeNode
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ObjectTypeNode()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_isAbstract = true;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "IsAbstract", IsRequired = false, Order = 1)]
        public bool IsAbstract
        {
            get { return m_isAbstract;  }
            set { m_isAbstract = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ObjectTypeNode; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ObjectTypeNode_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ObjectTypeNode_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteBoolean("IsAbstract", IsAbstract);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            IsAbstract = decoder.ReadBoolean("IsAbstract");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ObjectTypeNode value = encodeable as ObjectTypeNode;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_isAbstract, value.m_isAbstract)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (ObjectTypeNode)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ObjectTypeNode clone = (ObjectTypeNode)base.MemberwiseClone();

            clone.m_isAbstract = (bool)Utils.Clone(this.m_isAbstract);

            return clone;
        }
        #endregion

        #region Private Fields
        private bool m_isAbstract;
        #endregion
    }
    #endif
    #endregion

    #region VariableNode Class
    #if (!OPCUA_EXCLUDE_VariableNode)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class VariableNode : InstanceNode
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public VariableNode()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_value = Variant.Null;
            m_dataType = null;
            m_valueRank = (int)0;
            m_arrayDimensions = new UInt32Collection();
            m_accessLevel = (byte)0;
            m_userAccessLevel = (byte)0;
            m_minimumSamplingInterval = (double)0;
            m_historizing = true;
            m_accessLevelEx = (uint)0;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "Value", IsRequired = false, Order = 1)]
        public Variant Value
        {
            get { return m_value;  }
            set { m_value = value; }
        }

        /// <remarks />
        [DataMember(Name = "DataType", IsRequired = false, Order = 2)]
        public NodeId DataType
        {
            get { return m_dataType;  }
            set { m_dataType = value; }
        }

        /// <remarks />
        [DataMember(Name = "ValueRank", IsRequired = false, Order = 3)]
        public int ValueRank
        {
            get { return m_valueRank;  }
            set { m_valueRank = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ArrayDimensions", IsRequired = false, Order = 4)]
        public UInt32Collection ArrayDimensions
        {
            get
            {
                return m_arrayDimensions;
            }

            set
            {
                m_arrayDimensions = value;

                if (value == null)
                {
                    m_arrayDimensions = new UInt32Collection();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "AccessLevel", IsRequired = false, Order = 5)]
        public byte AccessLevel
        {
            get { return m_accessLevel;  }
            set { m_accessLevel = value; }
        }

        /// <remarks />
        [DataMember(Name = "UserAccessLevel", IsRequired = false, Order = 6)]
        public byte UserAccessLevel
        {
            get { return m_userAccessLevel;  }
            set { m_userAccessLevel = value; }
        }

        /// <remarks />
        [DataMember(Name = "MinimumSamplingInterval", IsRequired = false, Order = 7)]
        public double MinimumSamplingInterval
        {
            get { return m_minimumSamplingInterval;  }
            set { m_minimumSamplingInterval = value; }
        }

        /// <remarks />
        [DataMember(Name = "Historizing", IsRequired = false, Order = 8)]
        public bool Historizing
        {
            get { return m_historizing;  }
            set { m_historizing = value; }
        }

        /// <remarks />
        [DataMember(Name = "AccessLevelEx", IsRequired = false, Order = 9)]
        public uint AccessLevelEx
        {
            get { return m_accessLevelEx;  }
            set { m_accessLevelEx = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.VariableNode; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.VariableNode_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.VariableNode_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteVariant("Value", Value);
            encoder.WriteNodeId("DataType", DataType);
            encoder.WriteInt32("ValueRank", ValueRank);
            encoder.WriteUInt32Array("ArrayDimensions", ArrayDimensions);
            encoder.WriteByte("AccessLevel", AccessLevel);
            encoder.WriteByte("UserAccessLevel", UserAccessLevel);
            encoder.WriteDouble("MinimumSamplingInterval", MinimumSamplingInterval);
            encoder.WriteBoolean("Historizing", Historizing);
            encoder.WriteUInt32("AccessLevelEx", AccessLevelEx);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            Value = decoder.ReadVariant("Value");
            DataType = decoder.ReadNodeId("DataType");
            ValueRank = decoder.ReadInt32("ValueRank");
            ArrayDimensions = decoder.ReadUInt32Array("ArrayDimensions");
            AccessLevel = decoder.ReadByte("AccessLevel");
            UserAccessLevel = decoder.ReadByte("UserAccessLevel");
            MinimumSamplingInterval = decoder.ReadDouble("MinimumSamplingInterval");
            Historizing = decoder.ReadBoolean("Historizing");
            AccessLevelEx = decoder.ReadUInt32("AccessLevelEx");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            VariableNode value = encodeable as VariableNode;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_value, value.m_value)) return false;
            if (!Utils.IsEqual(m_dataType, value.m_dataType)) return false;
            if (!Utils.IsEqual(m_valueRank, value.m_valueRank)) return false;
            if (!Utils.IsEqual(m_arrayDimensions, value.m_arrayDimensions)) return false;
            if (!Utils.IsEqual(m_accessLevel, value.m_accessLevel)) return false;
            if (!Utils.IsEqual(m_userAccessLevel, value.m_userAccessLevel)) return false;
            if (!Utils.IsEqual(m_minimumSamplingInterval, value.m_minimumSamplingInterval)) return false;
            if (!Utils.IsEqual(m_historizing, value.m_historizing)) return false;
            if (!Utils.IsEqual(m_accessLevelEx, value.m_accessLevelEx)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (VariableNode)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            VariableNode clone = (VariableNode)base.MemberwiseClone();

            clone.m_value = (Variant)Utils.Clone(this.m_value);
            clone.m_dataType = (NodeId)Utils.Clone(this.m_dataType);
            clone.m_valueRank = (int)Utils.Clone(this.m_valueRank);
            clone.m_arrayDimensions = (UInt32Collection)Utils.Clone(this.m_arrayDimensions);
            clone.m_accessLevel = (byte)Utils.Clone(this.m_accessLevel);
            clone.m_userAccessLevel = (byte)Utils.Clone(this.m_userAccessLevel);
            clone.m_minimumSamplingInterval = (double)Utils.Clone(this.m_minimumSamplingInterval);
            clone.m_historizing = (bool)Utils.Clone(this.m_historizing);
            clone.m_accessLevelEx = (uint)Utils.Clone(this.m_accessLevelEx);

            return clone;
        }
        #endregion

        #region Private Fields
        private Variant m_value;
        private NodeId m_dataType;
        private int m_valueRank;
        private UInt32Collection m_arrayDimensions;
        private byte m_accessLevel;
        private byte m_userAccessLevel;
        private double m_minimumSamplingInterval;
        private bool m_historizing;
        private uint m_accessLevelEx;
        #endregion
    }
    #endif
    #endregion

    #region VariableTypeNode Class
    #if (!OPCUA_EXCLUDE_VariableTypeNode)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class VariableTypeNode : TypeNode
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public VariableTypeNode()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_value = Variant.Null;
            m_dataType = null;
            m_valueRank = (int)0;
            m_arrayDimensions = new UInt32Collection();
            m_isAbstract = true;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "Value", IsRequired = false, Order = 1)]
        public Variant Value
        {
            get { return m_value;  }
            set { m_value = value; }
        }

        /// <remarks />
        [DataMember(Name = "DataType", IsRequired = false, Order = 2)]
        public NodeId DataType
        {
            get { return m_dataType;  }
            set { m_dataType = value; }
        }

        /// <remarks />
        [DataMember(Name = "ValueRank", IsRequired = false, Order = 3)]
        public int ValueRank
        {
            get { return m_valueRank;  }
            set { m_valueRank = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ArrayDimensions", IsRequired = false, Order = 4)]
        public UInt32Collection ArrayDimensions
        {
            get
            {
                return m_arrayDimensions;
            }

            set
            {
                m_arrayDimensions = value;

                if (value == null)
                {
                    m_arrayDimensions = new UInt32Collection();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "IsAbstract", IsRequired = false, Order = 5)]
        public bool IsAbstract
        {
            get { return m_isAbstract;  }
            set { m_isAbstract = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.VariableTypeNode; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.VariableTypeNode_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.VariableTypeNode_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteVariant("Value", Value);
            encoder.WriteNodeId("DataType", DataType);
            encoder.WriteInt32("ValueRank", ValueRank);
            encoder.WriteUInt32Array("ArrayDimensions", ArrayDimensions);
            encoder.WriteBoolean("IsAbstract", IsAbstract);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            Value = decoder.ReadVariant("Value");
            DataType = decoder.ReadNodeId("DataType");
            ValueRank = decoder.ReadInt32("ValueRank");
            ArrayDimensions = decoder.ReadUInt32Array("ArrayDimensions");
            IsAbstract = decoder.ReadBoolean("IsAbstract");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            VariableTypeNode value = encodeable as VariableTypeNode;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_value, value.m_value)) return false;
            if (!Utils.IsEqual(m_dataType, value.m_dataType)) return false;
            if (!Utils.IsEqual(m_valueRank, value.m_valueRank)) return false;
            if (!Utils.IsEqual(m_arrayDimensions, value.m_arrayDimensions)) return false;
            if (!Utils.IsEqual(m_isAbstract, value.m_isAbstract)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (VariableTypeNode)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            VariableTypeNode clone = (VariableTypeNode)base.MemberwiseClone();

            clone.m_value = (Variant)Utils.Clone(this.m_value);
            clone.m_dataType = (NodeId)Utils.Clone(this.m_dataType);
            clone.m_valueRank = (int)Utils.Clone(this.m_valueRank);
            clone.m_arrayDimensions = (UInt32Collection)Utils.Clone(this.m_arrayDimensions);
            clone.m_isAbstract = (bool)Utils.Clone(this.m_isAbstract);

            return clone;
        }
        #endregion

        #region Private Fields
        private Variant m_value;
        private NodeId m_dataType;
        private int m_valueRank;
        private UInt32Collection m_arrayDimensions;
        private bool m_isAbstract;
        #endregion
    }
    #endif
    #endregion

    #region ReferenceTypeNode Class
    #if (!OPCUA_EXCLUDE_ReferenceTypeNode)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ReferenceTypeNode : TypeNode
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ReferenceTypeNode()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_isAbstract = true;
            m_symmetric = true;
            m_inverseName = null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "IsAbstract", IsRequired = false, Order = 1)]
        public bool IsAbstract
        {
            get { return m_isAbstract;  }
            set { m_isAbstract = value; }
        }

        /// <remarks />
        [DataMember(Name = "Symmetric", IsRequired = false, Order = 2)]
        public bool Symmetric
        {
            get { return m_symmetric;  }
            set { m_symmetric = value; }
        }

        /// <remarks />
        [DataMember(Name = "InverseName", IsRequired = false, Order = 3)]
        public LocalizedText InverseName
        {
            get { return m_inverseName;  }
            set { m_inverseName = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ReferenceTypeNode; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ReferenceTypeNode_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ReferenceTypeNode_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteBoolean("IsAbstract", IsAbstract);
            encoder.WriteBoolean("Symmetric", Symmetric);
            encoder.WriteLocalizedText("InverseName", InverseName);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            IsAbstract = decoder.ReadBoolean("IsAbstract");
            Symmetric = decoder.ReadBoolean("Symmetric");
            InverseName = decoder.ReadLocalizedText("InverseName");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ReferenceTypeNode value = encodeable as ReferenceTypeNode;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_isAbstract, value.m_isAbstract)) return false;
            if (!Utils.IsEqual(m_symmetric, value.m_symmetric)) return false;
            if (!Utils.IsEqual(m_inverseName, value.m_inverseName)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (ReferenceTypeNode)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ReferenceTypeNode clone = (ReferenceTypeNode)base.MemberwiseClone();

            clone.m_isAbstract = (bool)Utils.Clone(this.m_isAbstract);
            clone.m_symmetric = (bool)Utils.Clone(this.m_symmetric);
            clone.m_inverseName = (LocalizedText)Utils.Clone(this.m_inverseName);

            return clone;
        }
        #endregion

        #region Private Fields
        private bool m_isAbstract;
        private bool m_symmetric;
        private LocalizedText m_inverseName;
        #endregion
    }
    #endif
    #endregion

    #region MethodNode Class
    #if (!OPCUA_EXCLUDE_MethodNode)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class MethodNode : InstanceNode
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public MethodNode()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_executable = true;
            m_userExecutable = true;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "Executable", IsRequired = false, Order = 1)]
        public bool Executable
        {
            get { return m_executable;  }
            set { m_executable = value; }
        }

        /// <remarks />
        [DataMember(Name = "UserExecutable", IsRequired = false, Order = 2)]
        public bool UserExecutable
        {
            get { return m_userExecutable;  }
            set { m_userExecutable = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.MethodNode; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.MethodNode_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.MethodNode_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteBoolean("Executable", Executable);
            encoder.WriteBoolean("UserExecutable", UserExecutable);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            Executable = decoder.ReadBoolean("Executable");
            UserExecutable = decoder.ReadBoolean("UserExecutable");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            MethodNode value = encodeable as MethodNode;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_executable, value.m_executable)) return false;
            if (!Utils.IsEqual(m_userExecutable, value.m_userExecutable)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (MethodNode)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            MethodNode clone = (MethodNode)base.MemberwiseClone();

            clone.m_executable = (bool)Utils.Clone(this.m_executable);
            clone.m_userExecutable = (bool)Utils.Clone(this.m_userExecutable);

            return clone;
        }
        #endregion

        #region Private Fields
        private bool m_executable;
        private bool m_userExecutable;
        #endregion
    }
    #endif
    #endregion

    #region ViewNode Class
    #if (!OPCUA_EXCLUDE_ViewNode)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ViewNode : InstanceNode
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ViewNode()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_containsNoLoops = true;
            m_eventNotifier = (byte)0;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "ContainsNoLoops", IsRequired = false, Order = 1)]
        public bool ContainsNoLoops
        {
            get { return m_containsNoLoops;  }
            set { m_containsNoLoops = value; }
        }

        /// <remarks />
        [DataMember(Name = "EventNotifier", IsRequired = false, Order = 2)]
        public byte EventNotifier
        {
            get { return m_eventNotifier;  }
            set { m_eventNotifier = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ViewNode; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ViewNode_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ViewNode_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteBoolean("ContainsNoLoops", ContainsNoLoops);
            encoder.WriteByte("EventNotifier", EventNotifier);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ContainsNoLoops = decoder.ReadBoolean("ContainsNoLoops");
            EventNotifier = decoder.ReadByte("EventNotifier");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ViewNode value = encodeable as ViewNode;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_containsNoLoops, value.m_containsNoLoops)) return false;
            if (!Utils.IsEqual(m_eventNotifier, value.m_eventNotifier)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (ViewNode)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ViewNode clone = (ViewNode)base.MemberwiseClone();

            clone.m_containsNoLoops = (bool)Utils.Clone(this.m_containsNoLoops);
            clone.m_eventNotifier = (byte)Utils.Clone(this.m_eventNotifier);

            return clone;
        }
        #endregion

        #region Private Fields
        private bool m_containsNoLoops;
        private byte m_eventNotifier;
        #endregion
    }
    #endif
    #endregion

    #region DataTypeNode Class
    #if (!OPCUA_EXCLUDE_DataTypeNode)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class DataTypeNode : TypeNode
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public DataTypeNode()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_isAbstract = true;
            m_dataTypeDefinition = null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "IsAbstract", IsRequired = false, Order = 1)]
        public bool IsAbstract
        {
            get { return m_isAbstract;  }
            set { m_isAbstract = value; }
        }

        /// <remarks />
        [DataMember(Name = "DataTypeDefinition", IsRequired = false, Order = 2)]
        public ExtensionObject DataTypeDefinition
        {
            get { return m_dataTypeDefinition;  }
            set { m_dataTypeDefinition = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.DataTypeNode; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.DataTypeNode_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.DataTypeNode_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteBoolean("IsAbstract", IsAbstract);
            encoder.WriteExtensionObject("DataTypeDefinition", DataTypeDefinition);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            IsAbstract = decoder.ReadBoolean("IsAbstract");
            DataTypeDefinition = decoder.ReadExtensionObject("DataTypeDefinition");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            DataTypeNode value = encodeable as DataTypeNode;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_isAbstract, value.m_isAbstract)) return false;
            if (!Utils.IsEqual(m_dataTypeDefinition, value.m_dataTypeDefinition)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (DataTypeNode)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            DataTypeNode clone = (DataTypeNode)base.MemberwiseClone();

            clone.m_isAbstract = (bool)Utils.Clone(this.m_isAbstract);
            clone.m_dataTypeDefinition = (ExtensionObject)Utils.Clone(this.m_dataTypeDefinition);

            return clone;
        }
        #endregion

        #region Private Fields
        private bool m_isAbstract;
        private ExtensionObject m_dataTypeDefinition;
        #endregion
    }
    #endif
    #endregion

    #region ReferenceNode Class
    #if (!OPCUA_EXCLUDE_ReferenceNode)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ReferenceNode : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ReferenceNode()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_referenceTypeId = null;
            m_isInverse = true;
            m_targetId = null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "ReferenceTypeId", IsRequired = false, Order = 1)]
        public NodeId ReferenceTypeId
        {
            get { return m_referenceTypeId;  }
            set { m_referenceTypeId = value; }
        }

        /// <remarks />
        [DataMember(Name = "IsInverse", IsRequired = false, Order = 2)]
        public bool IsInverse
        {
            get { return m_isInverse;  }
            set { m_isInverse = value; }
        }

        /// <remarks />
        [DataMember(Name = "TargetId", IsRequired = false, Order = 3)]
        public ExpandedNodeId TargetId
        {
            get { return m_targetId;  }
            set { m_targetId = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ReferenceNode; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ReferenceNode_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ReferenceNode_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteNodeId("ReferenceTypeId", ReferenceTypeId);
            encoder.WriteBoolean("IsInverse", IsInverse);
            encoder.WriteExpandedNodeId("TargetId", TargetId);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ReferenceTypeId = decoder.ReadNodeId("ReferenceTypeId");
            IsInverse = decoder.ReadBoolean("IsInverse");
            TargetId = decoder.ReadExpandedNodeId("TargetId");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ReferenceNode value = encodeable as ReferenceNode;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_referenceTypeId, value.m_referenceTypeId)) return false;
            if (!Utils.IsEqual(m_isInverse, value.m_isInverse)) return false;
            if (!Utils.IsEqual(m_targetId, value.m_targetId)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (ReferenceNode)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ReferenceNode clone = (ReferenceNode)base.MemberwiseClone();

            clone.m_referenceTypeId = (NodeId)Utils.Clone(this.m_referenceTypeId);
            clone.m_isInverse = (bool)Utils.Clone(this.m_isInverse);
            clone.m_targetId = (ExpandedNodeId)Utils.Clone(this.m_targetId);

            return clone;
        }
        #endregion

        #region Private Fields
        private NodeId m_referenceTypeId;
        private bool m_isInverse;
        private ExpandedNodeId m_targetId;
        #endregion
    }

    #region ReferenceNodeCollection Class
    /// <summary>
    /// A collection of ReferenceNode objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfReferenceNode", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "ReferenceNode")]
    #if !NET_STANDARD
    public partial class ReferenceNodeCollection : List<ReferenceNode>, ICloneable
    #else
    public partial class ReferenceNodeCollection : List<ReferenceNode>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public ReferenceNodeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public ReferenceNodeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public ReferenceNodeCollection(IEnumerable<ReferenceNode> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator ReferenceNodeCollection(ReferenceNode[] values)
        {
            if (values != null)
            {
                return new ReferenceNodeCollection(values);
            }

            return new ReferenceNodeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator ReferenceNode[](ReferenceNodeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (ReferenceNodeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ReferenceNodeCollection clone = new ReferenceNodeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((ReferenceNode)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region Argument Class
    #if (!OPCUA_EXCLUDE_Argument)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class Argument : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public Argument()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_name = null;
            m_dataType = null;
            m_valueRank = (int)0;
            m_arrayDimensions = new UInt32Collection();
            m_description = null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "Name", IsRequired = false, Order = 1)]
        public string Name
        {
            get { return m_name;  }
            set { m_name = value; }
        }

        /// <remarks />
        [DataMember(Name = "DataType", IsRequired = false, Order = 2)]
        public NodeId DataType
        {
            get { return m_dataType;  }
            set { m_dataType = value; }
        }

        /// <remarks />
        [DataMember(Name = "ValueRank", IsRequired = false, Order = 3)]
        public int ValueRank
        {
            get { return m_valueRank;  }
            set { m_valueRank = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ArrayDimensions", IsRequired = false, Order = 4)]
        public UInt32Collection ArrayDimensions
        {
            get
            {
                return m_arrayDimensions;
            }

            set
            {
                m_arrayDimensions = value;

                if (value == null)
                {
                    m_arrayDimensions = new UInt32Collection();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "Description", IsRequired = false, Order = 5)]
        public LocalizedText Description
        {
            get { return m_description;  }
            set { m_description = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.Argument; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.Argument_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.Argument_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteString("Name", Name);
            encoder.WriteNodeId("DataType", DataType);
            encoder.WriteInt32("ValueRank", ValueRank);
            encoder.WriteUInt32Array("ArrayDimensions", ArrayDimensions);
            encoder.WriteLocalizedText("Description", Description);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            Name = decoder.ReadString("Name");
            DataType = decoder.ReadNodeId("DataType");
            ValueRank = decoder.ReadInt32("ValueRank");
            ArrayDimensions = decoder.ReadUInt32Array("ArrayDimensions");
            Description = decoder.ReadLocalizedText("Description");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            Argument value = encodeable as Argument;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_name, value.m_name)) return false;
            if (!Utils.IsEqual(m_dataType, value.m_dataType)) return false;
            if (!Utils.IsEqual(m_valueRank, value.m_valueRank)) return false;
            if (!Utils.IsEqual(m_arrayDimensions, value.m_arrayDimensions)) return false;
            if (!Utils.IsEqual(m_description, value.m_description)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (Argument)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            Argument clone = (Argument)base.MemberwiseClone();

            clone.m_name = (string)Utils.Clone(this.m_name);
            clone.m_dataType = (NodeId)Utils.Clone(this.m_dataType);
            clone.m_valueRank = (int)Utils.Clone(this.m_valueRank);
            clone.m_arrayDimensions = (UInt32Collection)Utils.Clone(this.m_arrayDimensions);
            clone.m_description = (LocalizedText)Utils.Clone(this.m_description);

            return clone;
        }
        #endregion

        #region Private Fields
        private string m_name;
        private NodeId m_dataType;
        private int m_valueRank;
        private UInt32Collection m_arrayDimensions;
        private LocalizedText m_description;
        #endregion
    }

    #region ArgumentCollection Class
    /// <summary>
    /// A collection of Argument objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfArgument", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "Argument")]
    #if !NET_STANDARD
    public partial class ArgumentCollection : List<Argument>, ICloneable
    #else
    public partial class ArgumentCollection : List<Argument>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public ArgumentCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public ArgumentCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public ArgumentCollection(IEnumerable<Argument> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator ArgumentCollection(Argument[] values)
        {
            if (values != null)
            {
                return new ArgumentCollection(values);
            }

            return new ArgumentCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator Argument[](ArgumentCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (ArgumentCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ArgumentCollection clone = new ArgumentCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((Argument)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region EnumValueType Class
    #if (!OPCUA_EXCLUDE_EnumValueType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class EnumValueType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public EnumValueType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_value = (long)0;
            m_displayName = null;
            m_description = null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "Value", IsRequired = false, Order = 1)]
        public long Value
        {
            get { return m_value;  }
            set { m_value = value; }
        }

        /// <remarks />
        [DataMember(Name = "DisplayName", IsRequired = false, Order = 2)]
        public LocalizedText DisplayName
        {
            get { return m_displayName;  }
            set { m_displayName = value; }
        }

        /// <remarks />
        [DataMember(Name = "Description", IsRequired = false, Order = 3)]
        public LocalizedText Description
        {
            get { return m_description;  }
            set { m_description = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.EnumValueType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.EnumValueType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.EnumValueType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteInt64("Value", Value);
            encoder.WriteLocalizedText("DisplayName", DisplayName);
            encoder.WriteLocalizedText("Description", Description);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            Value = decoder.ReadInt64("Value");
            DisplayName = decoder.ReadLocalizedText("DisplayName");
            Description = decoder.ReadLocalizedText("Description");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            EnumValueType value = encodeable as EnumValueType;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_value, value.m_value)) return false;
            if (!Utils.IsEqual(m_displayName, value.m_displayName)) return false;
            if (!Utils.IsEqual(m_description, value.m_description)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (EnumValueType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            EnumValueType clone = (EnumValueType)base.MemberwiseClone();

            clone.m_value = (long)Utils.Clone(this.m_value);
            clone.m_displayName = (LocalizedText)Utils.Clone(this.m_displayName);
            clone.m_description = (LocalizedText)Utils.Clone(this.m_description);

            return clone;
        }
        #endregion

        #region Private Fields
        private long m_value;
        private LocalizedText m_displayName;
        private LocalizedText m_description;
        #endregion
    }

    #region EnumValueTypeCollection Class
    /// <summary>
    /// A collection of EnumValueType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfEnumValueType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "EnumValueType")]
    #if !NET_STANDARD
    public partial class EnumValueTypeCollection : List<EnumValueType>, ICloneable
    #else
    public partial class EnumValueTypeCollection : List<EnumValueType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public EnumValueTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public EnumValueTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public EnumValueTypeCollection(IEnumerable<EnumValueType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator EnumValueTypeCollection(EnumValueType[] values)
        {
            if (values != null)
            {
                return new EnumValueTypeCollection(values);
            }

            return new EnumValueTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator EnumValueType[](EnumValueTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (EnumValueTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            EnumValueTypeCollection clone = new EnumValueTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((EnumValueType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region EnumField Class
    #if (!OPCUA_EXCLUDE_EnumField)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class EnumField : EnumValueType
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public EnumField()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_name = null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "Name", IsRequired = false, Order = 1)]
        public string Name
        {
            get { return m_name;  }
            set { m_name = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.EnumField; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.EnumField_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.EnumField_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteString("Name", Name);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            Name = decoder.ReadString("Name");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            EnumField value = encodeable as EnumField;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_name, value.m_name)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (EnumField)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            EnumField clone = (EnumField)base.MemberwiseClone();

            clone.m_name = (string)Utils.Clone(this.m_name);

            return clone;
        }
        #endregion

        #region Private Fields
        private string m_name;
        #endregion
    }

    #region EnumFieldCollection Class
    /// <summary>
    /// A collection of EnumField objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfEnumField", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "EnumField")]
    #if !NET_STANDARD
    public partial class EnumFieldCollection : List<EnumField>, ICloneable
    #else
    public partial class EnumFieldCollection : List<EnumField>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public EnumFieldCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public EnumFieldCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public EnumFieldCollection(IEnumerable<EnumField> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator EnumFieldCollection(EnumField[] values)
        {
            if (values != null)
            {
                return new EnumFieldCollection(values);
            }

            return new EnumFieldCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator EnumField[](EnumFieldCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (EnumFieldCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            EnumFieldCollection clone = new EnumFieldCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((EnumField)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region OptionSet Class
    #if (!OPCUA_EXCLUDE_OptionSet)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class OptionSet : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public OptionSet()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_value = null;
            m_validBits = null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "Value", IsRequired = false, Order = 1)]
        public byte[] Value
        {
            get { return m_value;  }
            set { m_value = value; }
        }

        /// <remarks />
        [DataMember(Name = "ValidBits", IsRequired = false, Order = 2)]
        public byte[] ValidBits
        {
            get { return m_validBits;  }
            set { m_validBits = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.OptionSet; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.OptionSet_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.OptionSet_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteByteString("Value", Value);
            encoder.WriteByteString("ValidBits", ValidBits);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            Value = decoder.ReadByteString("Value");
            ValidBits = decoder.ReadByteString("ValidBits");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            OptionSet value = encodeable as OptionSet;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_value, value.m_value)) return false;
            if (!Utils.IsEqual(m_validBits, value.m_validBits)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (OptionSet)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            OptionSet clone = (OptionSet)base.MemberwiseClone();

            clone.m_value = (byte[])Utils.Clone(this.m_value);
            clone.m_validBits = (byte[])Utils.Clone(this.m_validBits);

            return clone;
        }
        #endregion

        #region Private Fields
        private byte[] m_value;
        private byte[] m_validBits;
        #endregion
    }

    #region OptionSetCollection Class
    /// <summary>
    /// A collection of OptionSet objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfOptionSet", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "OptionSet")]
    #if !NET_STANDARD
    public partial class OptionSetCollection : List<OptionSet>, ICloneable
    #else
    public partial class OptionSetCollection : List<OptionSet>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public OptionSetCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public OptionSetCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public OptionSetCollection(IEnumerable<OptionSet> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator OptionSetCollection(OptionSet[] values)
        {
            if (values != null)
            {
                return new OptionSetCollection(values);
            }

            return new OptionSetCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator OptionSet[](OptionSetCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (OptionSetCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            OptionSetCollection clone = new OptionSetCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((OptionSet)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region TimeZoneDataType Class
    #if (!OPCUA_EXCLUDE_TimeZoneDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class TimeZoneDataType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public TimeZoneDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_offset = (short)0;
            m_daylightSavingInOffset = true;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "Offset", IsRequired = false, Order = 1)]
        public short Offset
        {
            get { return m_offset;  }
            set { m_offset = value; }
        }

        /// <remarks />
        [DataMember(Name = "DaylightSavingInOffset", IsRequired = false, Order = 2)]
        public bool DaylightSavingInOffset
        {
            get { return m_daylightSavingInOffset;  }
            set { m_daylightSavingInOffset = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.TimeZoneDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.TimeZoneDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.TimeZoneDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteInt16("Offset", Offset);
            encoder.WriteBoolean("DaylightSavingInOffset", DaylightSavingInOffset);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            Offset = decoder.ReadInt16("Offset");
            DaylightSavingInOffset = decoder.ReadBoolean("DaylightSavingInOffset");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            TimeZoneDataType value = encodeable as TimeZoneDataType;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_offset, value.m_offset)) return false;
            if (!Utils.IsEqual(m_daylightSavingInOffset, value.m_daylightSavingInOffset)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (TimeZoneDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            TimeZoneDataType clone = (TimeZoneDataType)base.MemberwiseClone();

            clone.m_offset = (short)Utils.Clone(this.m_offset);
            clone.m_daylightSavingInOffset = (bool)Utils.Clone(this.m_daylightSavingInOffset);

            return clone;
        }
        #endregion

        #region Private Fields
        private short m_offset;
        private bool m_daylightSavingInOffset;
        #endregion
    }

    #region TimeZoneDataTypeCollection Class
    /// <summary>
    /// A collection of TimeZoneDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfTimeZoneDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "TimeZoneDataType")]
    #if !NET_STANDARD
    public partial class TimeZoneDataTypeCollection : List<TimeZoneDataType>, ICloneable
    #else
    public partial class TimeZoneDataTypeCollection : List<TimeZoneDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public TimeZoneDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public TimeZoneDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public TimeZoneDataTypeCollection(IEnumerable<TimeZoneDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator TimeZoneDataTypeCollection(TimeZoneDataType[] values)
        {
            if (values != null)
            {
                return new TimeZoneDataTypeCollection(values);
            }

            return new TimeZoneDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator TimeZoneDataType[](TimeZoneDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (TimeZoneDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            TimeZoneDataTypeCollection clone = new TimeZoneDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((TimeZoneDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region ApplicationType Enumeration
    #if (!OPCUA_EXCLUDE_ApplicationType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public enum ApplicationType
    {
        /// <remarks />
        [EnumMember(Value = "Server_0")]
        Server = 0,

        /// <remarks />
        [EnumMember(Value = "Client_1")]
        Client = 1,

        /// <remarks />
        [EnumMember(Value = "ClientAndServer_2")]
        ClientAndServer = 2,

        /// <remarks />
        [EnumMember(Value = "DiscoveryServer_3")]
        DiscoveryServer = 3,
    }
    #endif
    #endregion

    #region ApplicationDescription Class
    #if (!OPCUA_EXCLUDE_ApplicationDescription)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ApplicationDescription : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ApplicationDescription()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_applicationUri = null;
            m_productUri = null;
            m_applicationName = null;
            m_applicationType = ApplicationType.Server;
            m_gatewayServerUri = null;
            m_discoveryProfileUri = null;
            m_discoveryUrls = new StringCollection();
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "ApplicationUri", IsRequired = false, Order = 1)]
        public string ApplicationUri
        {
            get { return m_applicationUri;  }
            set { m_applicationUri = value; }
        }

        /// <remarks />
        [DataMember(Name = "ProductUri", IsRequired = false, Order = 2)]
        public string ProductUri
        {
            get { return m_productUri;  }
            set { m_productUri = value; }
        }

        /// <remarks />
        [DataMember(Name = "ApplicationName", IsRequired = false, Order = 3)]
        public LocalizedText ApplicationName
        {
            get { return m_applicationName;  }
            set { m_applicationName = value; }
        }

        /// <remarks />
        [DataMember(Name = "ApplicationType", IsRequired = false, Order = 4)]
        public ApplicationType ApplicationType
        {
            get { return m_applicationType;  }
            set { m_applicationType = value; }
        }

        /// <remarks />
        [DataMember(Name = "GatewayServerUri", IsRequired = false, Order = 5)]
        public string GatewayServerUri
        {
            get { return m_gatewayServerUri;  }
            set { m_gatewayServerUri = value; }
        }

        /// <remarks />
        [DataMember(Name = "DiscoveryProfileUri", IsRequired = false, Order = 6)]
        public string DiscoveryProfileUri
        {
            get { return m_discoveryProfileUri;  }
            set { m_discoveryProfileUri = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "DiscoveryUrls", IsRequired = false, Order = 7)]
        public StringCollection DiscoveryUrls
        {
            get
            {
                return m_discoveryUrls;
            }

            set
            {
                m_discoveryUrls = value;

                if (value == null)
                {
                    m_discoveryUrls = new StringCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ApplicationDescription; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ApplicationDescription_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ApplicationDescription_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteString("ApplicationUri", ApplicationUri);
            encoder.WriteString("ProductUri", ProductUri);
            encoder.WriteLocalizedText("ApplicationName", ApplicationName);
            encoder.WriteEnumerated("ApplicationType", ApplicationType);
            encoder.WriteString("GatewayServerUri", GatewayServerUri);
            encoder.WriteString("DiscoveryProfileUri", DiscoveryProfileUri);
            encoder.WriteStringArray("DiscoveryUrls", DiscoveryUrls);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ApplicationUri = decoder.ReadString("ApplicationUri");
            ProductUri = decoder.ReadString("ProductUri");
            ApplicationName = decoder.ReadLocalizedText("ApplicationName");
            ApplicationType = (ApplicationType)decoder.ReadEnumerated("ApplicationType", typeof(ApplicationType));
            GatewayServerUri = decoder.ReadString("GatewayServerUri");
            DiscoveryProfileUri = decoder.ReadString("DiscoveryProfileUri");
            DiscoveryUrls = decoder.ReadStringArray("DiscoveryUrls");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ApplicationDescription value = encodeable as ApplicationDescription;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_applicationUri, value.m_applicationUri)) return false;
            if (!Utils.IsEqual(m_productUri, value.m_productUri)) return false;
            if (!Utils.IsEqual(m_applicationName, value.m_applicationName)) return false;
            if (!Utils.IsEqual(m_applicationType, value.m_applicationType)) return false;
            if (!Utils.IsEqual(m_gatewayServerUri, value.m_gatewayServerUri)) return false;
            if (!Utils.IsEqual(m_discoveryProfileUri, value.m_discoveryProfileUri)) return false;
            if (!Utils.IsEqual(m_discoveryUrls, value.m_discoveryUrls)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (ApplicationDescription)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ApplicationDescription clone = (ApplicationDescription)base.MemberwiseClone();

            clone.m_applicationUri = (string)Utils.Clone(this.m_applicationUri);
            clone.m_productUri = (string)Utils.Clone(this.m_productUri);
            clone.m_applicationName = (LocalizedText)Utils.Clone(this.m_applicationName);
            clone.m_applicationType = (ApplicationType)Utils.Clone(this.m_applicationType);
            clone.m_gatewayServerUri = (string)Utils.Clone(this.m_gatewayServerUri);
            clone.m_discoveryProfileUri = (string)Utils.Clone(this.m_discoveryProfileUri);
            clone.m_discoveryUrls = (StringCollection)Utils.Clone(this.m_discoveryUrls);

            return clone;
        }
        #endregion

        #region Private Fields
        private string m_applicationUri;
        private string m_productUri;
        private LocalizedText m_applicationName;
        private ApplicationType m_applicationType;
        private string m_gatewayServerUri;
        private string m_discoveryProfileUri;
        private StringCollection m_discoveryUrls;
        #endregion
    }

    #region ApplicationDescriptionCollection Class
    /// <summary>
    /// A collection of ApplicationDescription objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfApplicationDescription", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "ApplicationDescription")]
    #if !NET_STANDARD
    public partial class ApplicationDescriptionCollection : List<ApplicationDescription>, ICloneable
    #else
    public partial class ApplicationDescriptionCollection : List<ApplicationDescription>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public ApplicationDescriptionCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public ApplicationDescriptionCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public ApplicationDescriptionCollection(IEnumerable<ApplicationDescription> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator ApplicationDescriptionCollection(ApplicationDescription[] values)
        {
            if (values != null)
            {
                return new ApplicationDescriptionCollection(values);
            }

            return new ApplicationDescriptionCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator ApplicationDescription[](ApplicationDescriptionCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (ApplicationDescriptionCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ApplicationDescriptionCollection clone = new ApplicationDescriptionCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((ApplicationDescription)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region RequestHeader Class
    #if (!OPCUA_EXCLUDE_RequestHeader)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class RequestHeader : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public RequestHeader()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_authenticationToken = null;
            m_timestamp = DateTime.MinValue;
            m_requestHandle = (uint)0;
            m_returnDiagnostics = (uint)0;
            m_auditEntryId = null;
            m_timeoutHint = (uint)0;
            m_additionalHeader = null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "AuthenticationToken", IsRequired = false, Order = 1)]
        public NodeId AuthenticationToken
        {
            get { return m_authenticationToken;  }
            set { m_authenticationToken = value; }
        }

        /// <remarks />
        [DataMember(Name = "Timestamp", IsRequired = false, Order = 2)]
        public DateTime Timestamp
        {
            get { return m_timestamp;  }
            set { m_timestamp = value; }
        }

        /// <remarks />
        [DataMember(Name = "RequestHandle", IsRequired = false, Order = 3)]
        public uint RequestHandle
        {
            get { return m_requestHandle;  }
            set { m_requestHandle = value; }
        }

        /// <remarks />
        [DataMember(Name = "ReturnDiagnostics", IsRequired = false, Order = 4)]
        public uint ReturnDiagnostics
        {
            get { return m_returnDiagnostics;  }
            set { m_returnDiagnostics = value; }
        }

        /// <remarks />
        [DataMember(Name = "AuditEntryId", IsRequired = false, Order = 5)]
        public string AuditEntryId
        {
            get { return m_auditEntryId;  }
            set { m_auditEntryId = value; }
        }

        /// <remarks />
        [DataMember(Name = "TimeoutHint", IsRequired = false, Order = 6)]
        public uint TimeoutHint
        {
            get { return m_timeoutHint;  }
            set { m_timeoutHint = value; }
        }

        /// <remarks />
        [DataMember(Name = "AdditionalHeader", IsRequired = false, Order = 7)]
        public ExtensionObject AdditionalHeader
        {
            get { return m_additionalHeader;  }
            set { m_additionalHeader = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.RequestHeader; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.RequestHeader_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.RequestHeader_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteNodeId("AuthenticationToken", AuthenticationToken);
            encoder.WriteDateTime("Timestamp", Timestamp);
            encoder.WriteUInt32("RequestHandle", RequestHandle);
            encoder.WriteUInt32("ReturnDiagnostics", ReturnDiagnostics);
            encoder.WriteString("AuditEntryId", AuditEntryId);
            encoder.WriteUInt32("TimeoutHint", TimeoutHint);
            encoder.WriteExtensionObject("AdditionalHeader", AdditionalHeader);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            AuthenticationToken = decoder.ReadNodeId("AuthenticationToken");
            Timestamp = decoder.ReadDateTime("Timestamp");
            RequestHandle = decoder.ReadUInt32("RequestHandle");
            ReturnDiagnostics = decoder.ReadUInt32("ReturnDiagnostics");
            AuditEntryId = decoder.ReadString("AuditEntryId");
            TimeoutHint = decoder.ReadUInt32("TimeoutHint");
            AdditionalHeader = decoder.ReadExtensionObject("AdditionalHeader");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            RequestHeader value = encodeable as RequestHeader;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_authenticationToken, value.m_authenticationToken)) return false;
            if (!Utils.IsEqual(m_timestamp, value.m_timestamp)) return false;
            if (!Utils.IsEqual(m_requestHandle, value.m_requestHandle)) return false;
            if (!Utils.IsEqual(m_returnDiagnostics, value.m_returnDiagnostics)) return false;
            if (!Utils.IsEqual(m_auditEntryId, value.m_auditEntryId)) return false;
            if (!Utils.IsEqual(m_timeoutHint, value.m_timeoutHint)) return false;
            if (!Utils.IsEqual(m_additionalHeader, value.m_additionalHeader)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (RequestHeader)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            RequestHeader clone = (RequestHeader)base.MemberwiseClone();

            clone.m_authenticationToken = (NodeId)Utils.Clone(this.m_authenticationToken);
            clone.m_timestamp = (DateTime)Utils.Clone(this.m_timestamp);
            clone.m_requestHandle = (uint)Utils.Clone(this.m_requestHandle);
            clone.m_returnDiagnostics = (uint)Utils.Clone(this.m_returnDiagnostics);
            clone.m_auditEntryId = (string)Utils.Clone(this.m_auditEntryId);
            clone.m_timeoutHint = (uint)Utils.Clone(this.m_timeoutHint);
            clone.m_additionalHeader = (ExtensionObject)Utils.Clone(this.m_additionalHeader);

            return clone;
        }
        #endregion

        #region Private Fields
        private NodeId m_authenticationToken;
        private DateTime m_timestamp;
        private uint m_requestHandle;
        private uint m_returnDiagnostics;
        private string m_auditEntryId;
        private uint m_timeoutHint;
        private ExtensionObject m_additionalHeader;
        #endregion
    }
    #endif
    #endregion

    #region ResponseHeader Class
    #if (!OPCUA_EXCLUDE_ResponseHeader)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ResponseHeader : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ResponseHeader()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_timestamp = DateTime.MinValue;
            m_requestHandle = (uint)0;
            m_serviceResult = StatusCodes.Good;
            m_serviceDiagnostics = null;
            m_stringTable = new StringCollection();
            m_additionalHeader = null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "Timestamp", IsRequired = false, Order = 1)]
        public DateTime Timestamp
        {
            get { return m_timestamp;  }
            set { m_timestamp = value; }
        }

        /// <remarks />
        [DataMember(Name = "RequestHandle", IsRequired = false, Order = 2)]
        public uint RequestHandle
        {
            get { return m_requestHandle;  }
            set { m_requestHandle = value; }
        }

        /// <remarks />
        [DataMember(Name = "ServiceResult", IsRequired = false, Order = 3)]
        public StatusCode ServiceResult
        {
            get { return m_serviceResult;  }
            set { m_serviceResult = value; }
        }

        /// <remarks />
        [DataMember(Name = "ServiceDiagnostics", IsRequired = false, Order = 4)]
        public DiagnosticInfo ServiceDiagnostics
        {
            get { return m_serviceDiagnostics;  }
            set { m_serviceDiagnostics = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "StringTable", IsRequired = false, Order = 5)]
        public StringCollection StringTable
        {
            get
            {
                return m_stringTable;
            }

            set
            {
                m_stringTable = value;

                if (value == null)
                {
                    m_stringTable = new StringCollection();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "AdditionalHeader", IsRequired = false, Order = 6)]
        public ExtensionObject AdditionalHeader
        {
            get { return m_additionalHeader;  }
            set { m_additionalHeader = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ResponseHeader; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ResponseHeader_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ResponseHeader_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteDateTime("Timestamp", Timestamp);
            encoder.WriteUInt32("RequestHandle", RequestHandle);
            encoder.WriteStatusCode("ServiceResult", ServiceResult);
            encoder.WriteDiagnosticInfo("ServiceDiagnostics", ServiceDiagnostics);
            encoder.WriteStringArray("StringTable", StringTable);
            encoder.WriteExtensionObject("AdditionalHeader", AdditionalHeader);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            Timestamp = decoder.ReadDateTime("Timestamp");
            RequestHandle = decoder.ReadUInt32("RequestHandle");
            ServiceResult = decoder.ReadStatusCode("ServiceResult");
            ServiceDiagnostics = decoder.ReadDiagnosticInfo("ServiceDiagnostics");
            StringTable = decoder.ReadStringArray("StringTable");
            AdditionalHeader = decoder.ReadExtensionObject("AdditionalHeader");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ResponseHeader value = encodeable as ResponseHeader;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_timestamp, value.m_timestamp)) return false;
            if (!Utils.IsEqual(m_requestHandle, value.m_requestHandle)) return false;
            if (!Utils.IsEqual(m_serviceResult, value.m_serviceResult)) return false;
            if (!Utils.IsEqual(m_serviceDiagnostics, value.m_serviceDiagnostics)) return false;
            if (!Utils.IsEqual(m_stringTable, value.m_stringTable)) return false;
            if (!Utils.IsEqual(m_additionalHeader, value.m_additionalHeader)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (ResponseHeader)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ResponseHeader clone = (ResponseHeader)base.MemberwiseClone();

            clone.m_timestamp = (DateTime)Utils.Clone(this.m_timestamp);
            clone.m_requestHandle = (uint)Utils.Clone(this.m_requestHandle);
            clone.m_serviceResult = (StatusCode)Utils.Clone(this.m_serviceResult);
            clone.m_serviceDiagnostics = (DiagnosticInfo)Utils.Clone(this.m_serviceDiagnostics);
            clone.m_stringTable = (StringCollection)Utils.Clone(this.m_stringTable);
            clone.m_additionalHeader = (ExtensionObject)Utils.Clone(this.m_additionalHeader);

            return clone;
        }
        #endregion

        #region Private Fields
        private DateTime m_timestamp;
        private uint m_requestHandle;
        private StatusCode m_serviceResult;
        private DiagnosticInfo m_serviceDiagnostics;
        private StringCollection m_stringTable;
        private ExtensionObject m_additionalHeader;
        #endregion
    }
    #endif
    #endregion

    #region ServiceFault Class
    #if (!OPCUA_EXCLUDE_ServiceFault)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ServiceFault : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ServiceFault()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_responseHeader = new ResponseHeader();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ResponseHeader", IsRequired = false, Order = 1)]
        public ResponseHeader ResponseHeader
        {
            get
            {
                return m_responseHeader;
            }

            set
            {
                m_responseHeader = value;

                if (value == null)
                {
                    m_responseHeader = new ResponseHeader();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ServiceFault; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ServiceFault_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ServiceFault_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("ResponseHeader", ResponseHeader, typeof(ResponseHeader));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ResponseHeader = (ResponseHeader)decoder.ReadEncodeable("ResponseHeader", typeof(ResponseHeader));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ServiceFault value = encodeable as ServiceFault;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_responseHeader, value.m_responseHeader)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (ServiceFault)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ServiceFault clone = (ServiceFault)base.MemberwiseClone();

            clone.m_responseHeader = (ResponseHeader)Utils.Clone(this.m_responseHeader);

            return clone;
        }
        #endregion

        #region Private Fields
        private ResponseHeader m_responseHeader;
        #endregion
    }
    #endif
    #endregion

    #region SessionlessInvokeRequestType Class
    #if (!OPCUA_EXCLUDE_SessionlessInvokeRequestType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class SessionlessInvokeRequestType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public SessionlessInvokeRequestType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_urisVersion = (uint)0;
            m_namespaceUris = new StringCollection();
            m_serverUris = new StringCollection();
            m_localeIds = new StringCollection();
            m_serviceId = (uint)0;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "UrisVersion", IsRequired = false, Order = 1)]
        public uint UrisVersion
        {
            get { return m_urisVersion;  }
            set { m_urisVersion = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "NamespaceUris", IsRequired = false, Order = 2)]
        public StringCollection NamespaceUris
        {
            get
            {
                return m_namespaceUris;
            }

            set
            {
                m_namespaceUris = value;

                if (value == null)
                {
                    m_namespaceUris = new StringCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ServerUris", IsRequired = false, Order = 3)]
        public StringCollection ServerUris
        {
            get
            {
                return m_serverUris;
            }

            set
            {
                m_serverUris = value;

                if (value == null)
                {
                    m_serverUris = new StringCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "LocaleIds", IsRequired = false, Order = 4)]
        public StringCollection LocaleIds
        {
            get
            {
                return m_localeIds;
            }

            set
            {
                m_localeIds = value;

                if (value == null)
                {
                    m_localeIds = new StringCollection();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "ServiceId", IsRequired = false, Order = 5)]
        public uint ServiceId
        {
            get { return m_serviceId;  }
            set { m_serviceId = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.SessionlessInvokeRequestType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.SessionlessInvokeRequestType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.SessionlessInvokeRequestType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteUInt32("UrisVersion", UrisVersion);
            encoder.WriteStringArray("NamespaceUris", NamespaceUris);
            encoder.WriteStringArray("ServerUris", ServerUris);
            encoder.WriteStringArray("LocaleIds", LocaleIds);
            encoder.WriteUInt32("ServiceId", ServiceId);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            UrisVersion = decoder.ReadUInt32("UrisVersion");
            NamespaceUris = decoder.ReadStringArray("NamespaceUris");
            ServerUris = decoder.ReadStringArray("ServerUris");
            LocaleIds = decoder.ReadStringArray("LocaleIds");
            ServiceId = decoder.ReadUInt32("ServiceId");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            SessionlessInvokeRequestType value = encodeable as SessionlessInvokeRequestType;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_urisVersion, value.m_urisVersion)) return false;
            if (!Utils.IsEqual(m_namespaceUris, value.m_namespaceUris)) return false;
            if (!Utils.IsEqual(m_serverUris, value.m_serverUris)) return false;
            if (!Utils.IsEqual(m_localeIds, value.m_localeIds)) return false;
            if (!Utils.IsEqual(m_serviceId, value.m_serviceId)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (SessionlessInvokeRequestType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            SessionlessInvokeRequestType clone = (SessionlessInvokeRequestType)base.MemberwiseClone();

            clone.m_urisVersion = (uint)Utils.Clone(this.m_urisVersion);
            clone.m_namespaceUris = (StringCollection)Utils.Clone(this.m_namespaceUris);
            clone.m_serverUris = (StringCollection)Utils.Clone(this.m_serverUris);
            clone.m_localeIds = (StringCollection)Utils.Clone(this.m_localeIds);
            clone.m_serviceId = (uint)Utils.Clone(this.m_serviceId);

            return clone;
        }
        #endregion

        #region Private Fields
        private uint m_urisVersion;
        private StringCollection m_namespaceUris;
        private StringCollection m_serverUris;
        private StringCollection m_localeIds;
        private uint m_serviceId;
        #endregion
    }
    #endif
    #endregion

    #region SessionlessInvokeResponseType Class
    #if (!OPCUA_EXCLUDE_SessionlessInvokeResponseType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class SessionlessInvokeResponseType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public SessionlessInvokeResponseType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_namespaceUris = new StringCollection();
            m_serverUris = new StringCollection();
            m_serviceId = (uint)0;
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "NamespaceUris", IsRequired = false, Order = 1)]
        public StringCollection NamespaceUris
        {
            get
            {
                return m_namespaceUris;
            }

            set
            {
                m_namespaceUris = value;

                if (value == null)
                {
                    m_namespaceUris = new StringCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ServerUris", IsRequired = false, Order = 2)]
        public StringCollection ServerUris
        {
            get
            {
                return m_serverUris;
            }

            set
            {
                m_serverUris = value;

                if (value == null)
                {
                    m_serverUris = new StringCollection();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "ServiceId", IsRequired = false, Order = 3)]
        public uint ServiceId
        {
            get { return m_serviceId;  }
            set { m_serviceId = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.SessionlessInvokeResponseType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.SessionlessInvokeResponseType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.SessionlessInvokeResponseType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteStringArray("NamespaceUris", NamespaceUris);
            encoder.WriteStringArray("ServerUris", ServerUris);
            encoder.WriteUInt32("ServiceId", ServiceId);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            NamespaceUris = decoder.ReadStringArray("NamespaceUris");
            ServerUris = decoder.ReadStringArray("ServerUris");
            ServiceId = decoder.ReadUInt32("ServiceId");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            SessionlessInvokeResponseType value = encodeable as SessionlessInvokeResponseType;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_namespaceUris, value.m_namespaceUris)) return false;
            if (!Utils.IsEqual(m_serverUris, value.m_serverUris)) return false;
            if (!Utils.IsEqual(m_serviceId, value.m_serviceId)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (SessionlessInvokeResponseType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            SessionlessInvokeResponseType clone = (SessionlessInvokeResponseType)base.MemberwiseClone();

            clone.m_namespaceUris = (StringCollection)Utils.Clone(this.m_namespaceUris);
            clone.m_serverUris = (StringCollection)Utils.Clone(this.m_serverUris);
            clone.m_serviceId = (uint)Utils.Clone(this.m_serviceId);

            return clone;
        }
        #endregion

        #region Private Fields
        private StringCollection m_namespaceUris;
        private StringCollection m_serverUris;
        private uint m_serviceId;
        #endregion
    }
    #endif
    #endregion

    #region FindServersRequest Class
    #if (!OPCUA_EXCLUDE_FindServersRequest)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class FindServersRequest : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public FindServersRequest()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_requestHeader = new RequestHeader();
            m_endpointUrl = null;
            m_localeIds = new StringCollection();
            m_serverUris = new StringCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RequestHeader", IsRequired = false, Order = 1)]
        public RequestHeader RequestHeader
        {
            get
            {
                return m_requestHeader;
            }

            set
            {
                m_requestHeader = value;

                if (value == null)
                {
                    m_requestHeader = new RequestHeader();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "EndpointUrl", IsRequired = false, Order = 2)]
        public string EndpointUrl
        {
            get { return m_endpointUrl;  }
            set { m_endpointUrl = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "LocaleIds", IsRequired = false, Order = 3)]
        public StringCollection LocaleIds
        {
            get
            {
                return m_localeIds;
            }

            set
            {
                m_localeIds = value;

                if (value == null)
                {
                    m_localeIds = new StringCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ServerUris", IsRequired = false, Order = 4)]
        public StringCollection ServerUris
        {
            get
            {
                return m_serverUris;
            }

            set
            {
                m_serverUris = value;

                if (value == null)
                {
                    m_serverUris = new StringCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.FindServersRequest; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.FindServersRequest_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.FindServersRequest_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("RequestHeader", RequestHeader, typeof(RequestHeader));
            encoder.WriteString("EndpointUrl", EndpointUrl);
            encoder.WriteStringArray("LocaleIds", LocaleIds);
            encoder.WriteStringArray("ServerUris", ServerUris);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            RequestHeader = (RequestHeader)decoder.ReadEncodeable("RequestHeader", typeof(RequestHeader));
            EndpointUrl = decoder.ReadString("EndpointUrl");
            LocaleIds = decoder.ReadStringArray("LocaleIds");
            ServerUris = decoder.ReadStringArray("ServerUris");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            FindServersRequest value = encodeable as FindServersRequest;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_requestHeader, value.m_requestHeader)) return false;
            if (!Utils.IsEqual(m_endpointUrl, value.m_endpointUrl)) return false;
            if (!Utils.IsEqual(m_localeIds, value.m_localeIds)) return false;
            if (!Utils.IsEqual(m_serverUris, value.m_serverUris)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (FindServersRequest)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            FindServersRequest clone = (FindServersRequest)base.MemberwiseClone();

            clone.m_requestHeader = (RequestHeader)Utils.Clone(this.m_requestHeader);
            clone.m_endpointUrl = (string)Utils.Clone(this.m_endpointUrl);
            clone.m_localeIds = (StringCollection)Utils.Clone(this.m_localeIds);
            clone.m_serverUris = (StringCollection)Utils.Clone(this.m_serverUris);

            return clone;
        }
        #endregion

        #region Private Fields
        private RequestHeader m_requestHeader;
        private string m_endpointUrl;
        private StringCollection m_localeIds;
        private StringCollection m_serverUris;
        #endregion
    }
    #endif
    #endregion

    #region FindServersResponse Class
    #if (!OPCUA_EXCLUDE_FindServersResponse)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class FindServersResponse : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public FindServersResponse()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_responseHeader = new ResponseHeader();
            m_servers = new ApplicationDescriptionCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ResponseHeader", IsRequired = false, Order = 1)]
        public ResponseHeader ResponseHeader
        {
            get
            {
                return m_responseHeader;
            }

            set
            {
                m_responseHeader = value;

                if (value == null)
                {
                    m_responseHeader = new ResponseHeader();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "Servers", IsRequired = false, Order = 2)]
        public ApplicationDescriptionCollection Servers
        {
            get
            {
                return m_servers;
            }

            set
            {
                m_servers = value;

                if (value == null)
                {
                    m_servers = new ApplicationDescriptionCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.FindServersResponse; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.FindServersResponse_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.FindServersResponse_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("ResponseHeader", ResponseHeader, typeof(ResponseHeader));
            encoder.WriteEncodeableArray("Servers", Servers.ToArray(), typeof(ApplicationDescription));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ResponseHeader = (ResponseHeader)decoder.ReadEncodeable("ResponseHeader", typeof(ResponseHeader));
            Servers = (ApplicationDescriptionCollection)decoder.ReadEncodeableArray("Servers", typeof(ApplicationDescription));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            FindServersResponse value = encodeable as FindServersResponse;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_responseHeader, value.m_responseHeader)) return false;
            if (!Utils.IsEqual(m_servers, value.m_servers)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (FindServersResponse)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            FindServersResponse clone = (FindServersResponse)base.MemberwiseClone();

            clone.m_responseHeader = (ResponseHeader)Utils.Clone(this.m_responseHeader);
            clone.m_servers = (ApplicationDescriptionCollection)Utils.Clone(this.m_servers);

            return clone;
        }
        #endregion

        #region Private Fields
        private ResponseHeader m_responseHeader;
        private ApplicationDescriptionCollection m_servers;
        #endregion
    }
    #endif
    #endregion

    #region ServerOnNetwork Class
    #if (!OPCUA_EXCLUDE_ServerOnNetwork)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ServerOnNetwork : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ServerOnNetwork()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_recordId = (uint)0;
            m_serverName = null;
            m_discoveryUrl = null;
            m_serverCapabilities = new StringCollection();
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "RecordId", IsRequired = false, Order = 1)]
        public uint RecordId
        {
            get { return m_recordId;  }
            set { m_recordId = value; }
        }

        /// <remarks />
        [DataMember(Name = "ServerName", IsRequired = false, Order = 2)]
        public string ServerName
        {
            get { return m_serverName;  }
            set { m_serverName = value; }
        }

        /// <remarks />
        [DataMember(Name = "DiscoveryUrl", IsRequired = false, Order = 3)]
        public string DiscoveryUrl
        {
            get { return m_discoveryUrl;  }
            set { m_discoveryUrl = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ServerCapabilities", IsRequired = false, Order = 4)]
        public StringCollection ServerCapabilities
        {
            get
            {
                return m_serverCapabilities;
            }

            set
            {
                m_serverCapabilities = value;

                if (value == null)
                {
                    m_serverCapabilities = new StringCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ServerOnNetwork; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ServerOnNetwork_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ServerOnNetwork_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteUInt32("RecordId", RecordId);
            encoder.WriteString("ServerName", ServerName);
            encoder.WriteString("DiscoveryUrl", DiscoveryUrl);
            encoder.WriteStringArray("ServerCapabilities", ServerCapabilities);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            RecordId = decoder.ReadUInt32("RecordId");
            ServerName = decoder.ReadString("ServerName");
            DiscoveryUrl = decoder.ReadString("DiscoveryUrl");
            ServerCapabilities = decoder.ReadStringArray("ServerCapabilities");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ServerOnNetwork value = encodeable as ServerOnNetwork;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_recordId, value.m_recordId)) return false;
            if (!Utils.IsEqual(m_serverName, value.m_serverName)) return false;
            if (!Utils.IsEqual(m_discoveryUrl, value.m_discoveryUrl)) return false;
            if (!Utils.IsEqual(m_serverCapabilities, value.m_serverCapabilities)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (ServerOnNetwork)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ServerOnNetwork clone = (ServerOnNetwork)base.MemberwiseClone();

            clone.m_recordId = (uint)Utils.Clone(this.m_recordId);
            clone.m_serverName = (string)Utils.Clone(this.m_serverName);
            clone.m_discoveryUrl = (string)Utils.Clone(this.m_discoveryUrl);
            clone.m_serverCapabilities = (StringCollection)Utils.Clone(this.m_serverCapabilities);

            return clone;
        }
        #endregion

        #region Private Fields
        private uint m_recordId;
        private string m_serverName;
        private string m_discoveryUrl;
        private StringCollection m_serverCapabilities;
        #endregion
    }

    #region ServerOnNetworkCollection Class
    /// <summary>
    /// A collection of ServerOnNetwork objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfServerOnNetwork", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "ServerOnNetwork")]
    #if !NET_STANDARD
    public partial class ServerOnNetworkCollection : List<ServerOnNetwork>, ICloneable
    #else
    public partial class ServerOnNetworkCollection : List<ServerOnNetwork>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public ServerOnNetworkCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public ServerOnNetworkCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public ServerOnNetworkCollection(IEnumerable<ServerOnNetwork> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator ServerOnNetworkCollection(ServerOnNetwork[] values)
        {
            if (values != null)
            {
                return new ServerOnNetworkCollection(values);
            }

            return new ServerOnNetworkCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator ServerOnNetwork[](ServerOnNetworkCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (ServerOnNetworkCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ServerOnNetworkCollection clone = new ServerOnNetworkCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((ServerOnNetwork)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region FindServersOnNetworkRequest Class
    #if (!OPCUA_EXCLUDE_FindServersOnNetworkRequest)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class FindServersOnNetworkRequest : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public FindServersOnNetworkRequest()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_requestHeader = new RequestHeader();
            m_startingRecordId = (uint)0;
            m_maxRecordsToReturn = (uint)0;
            m_serverCapabilityFilter = new StringCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RequestHeader", IsRequired = false, Order = 1)]
        public RequestHeader RequestHeader
        {
            get
            {
                return m_requestHeader;
            }

            set
            {
                m_requestHeader = value;

                if (value == null)
                {
                    m_requestHeader = new RequestHeader();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "StartingRecordId", IsRequired = false, Order = 2)]
        public uint StartingRecordId
        {
            get { return m_startingRecordId;  }
            set { m_startingRecordId = value; }
        }

        /// <remarks />
        [DataMember(Name = "MaxRecordsToReturn", IsRequired = false, Order = 3)]
        public uint MaxRecordsToReturn
        {
            get { return m_maxRecordsToReturn;  }
            set { m_maxRecordsToReturn = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ServerCapabilityFilter", IsRequired = false, Order = 4)]
        public StringCollection ServerCapabilityFilter
        {
            get
            {
                return m_serverCapabilityFilter;
            }

            set
            {
                m_serverCapabilityFilter = value;

                if (value == null)
                {
                    m_serverCapabilityFilter = new StringCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.FindServersOnNetworkRequest; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.FindServersOnNetworkRequest_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.FindServersOnNetworkRequest_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("RequestHeader", RequestHeader, typeof(RequestHeader));
            encoder.WriteUInt32("StartingRecordId", StartingRecordId);
            encoder.WriteUInt32("MaxRecordsToReturn", MaxRecordsToReturn);
            encoder.WriteStringArray("ServerCapabilityFilter", ServerCapabilityFilter);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            RequestHeader = (RequestHeader)decoder.ReadEncodeable("RequestHeader", typeof(RequestHeader));
            StartingRecordId = decoder.ReadUInt32("StartingRecordId");
            MaxRecordsToReturn = decoder.ReadUInt32("MaxRecordsToReturn");
            ServerCapabilityFilter = decoder.ReadStringArray("ServerCapabilityFilter");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            FindServersOnNetworkRequest value = encodeable as FindServersOnNetworkRequest;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_requestHeader, value.m_requestHeader)) return false;
            if (!Utils.IsEqual(m_startingRecordId, value.m_startingRecordId)) return false;
            if (!Utils.IsEqual(m_maxRecordsToReturn, value.m_maxRecordsToReturn)) return false;
            if (!Utils.IsEqual(m_serverCapabilityFilter, value.m_serverCapabilityFilter)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (FindServersOnNetworkRequest)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            FindServersOnNetworkRequest clone = (FindServersOnNetworkRequest)base.MemberwiseClone();

            clone.m_requestHeader = (RequestHeader)Utils.Clone(this.m_requestHeader);
            clone.m_startingRecordId = (uint)Utils.Clone(this.m_startingRecordId);
            clone.m_maxRecordsToReturn = (uint)Utils.Clone(this.m_maxRecordsToReturn);
            clone.m_serverCapabilityFilter = (StringCollection)Utils.Clone(this.m_serverCapabilityFilter);

            return clone;
        }
        #endregion

        #region Private Fields
        private RequestHeader m_requestHeader;
        private uint m_startingRecordId;
        private uint m_maxRecordsToReturn;
        private StringCollection m_serverCapabilityFilter;
        #endregion
    }
    #endif
    #endregion

    #region FindServersOnNetworkResponse Class
    #if (!OPCUA_EXCLUDE_FindServersOnNetworkResponse)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class FindServersOnNetworkResponse : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public FindServersOnNetworkResponse()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_responseHeader = new ResponseHeader();
            m_lastCounterResetTime = DateTime.MinValue;
            m_servers = new ServerOnNetworkCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ResponseHeader", IsRequired = false, Order = 1)]
        public ResponseHeader ResponseHeader
        {
            get
            {
                return m_responseHeader;
            }

            set
            {
                m_responseHeader = value;

                if (value == null)
                {
                    m_responseHeader = new ResponseHeader();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "LastCounterResetTime", IsRequired = false, Order = 2)]
        public DateTime LastCounterResetTime
        {
            get { return m_lastCounterResetTime;  }
            set { m_lastCounterResetTime = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "Servers", IsRequired = false, Order = 3)]
        public ServerOnNetworkCollection Servers
        {
            get
            {
                return m_servers;
            }

            set
            {
                m_servers = value;

                if (value == null)
                {
                    m_servers = new ServerOnNetworkCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.FindServersOnNetworkResponse; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.FindServersOnNetworkResponse_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.FindServersOnNetworkResponse_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("ResponseHeader", ResponseHeader, typeof(ResponseHeader));
            encoder.WriteDateTime("LastCounterResetTime", LastCounterResetTime);
            encoder.WriteEncodeableArray("Servers", Servers.ToArray(), typeof(ServerOnNetwork));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ResponseHeader = (ResponseHeader)decoder.ReadEncodeable("ResponseHeader", typeof(ResponseHeader));
            LastCounterResetTime = decoder.ReadDateTime("LastCounterResetTime");
            Servers = (ServerOnNetworkCollection)decoder.ReadEncodeableArray("Servers", typeof(ServerOnNetwork));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            FindServersOnNetworkResponse value = encodeable as FindServersOnNetworkResponse;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_responseHeader, value.m_responseHeader)) return false;
            if (!Utils.IsEqual(m_lastCounterResetTime, value.m_lastCounterResetTime)) return false;
            if (!Utils.IsEqual(m_servers, value.m_servers)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (FindServersOnNetworkResponse)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            FindServersOnNetworkResponse clone = (FindServersOnNetworkResponse)base.MemberwiseClone();

            clone.m_responseHeader = (ResponseHeader)Utils.Clone(this.m_responseHeader);
            clone.m_lastCounterResetTime = (DateTime)Utils.Clone(this.m_lastCounterResetTime);
            clone.m_servers = (ServerOnNetworkCollection)Utils.Clone(this.m_servers);

            return clone;
        }
        #endregion

        #region Private Fields
        private ResponseHeader m_responseHeader;
        private DateTime m_lastCounterResetTime;
        private ServerOnNetworkCollection m_servers;
        #endregion
    }
    #endif
    #endregion

    #region MessageSecurityMode Enumeration
    #if (!OPCUA_EXCLUDE_MessageSecurityMode)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public enum MessageSecurityMode
    {
        /// <remarks />
        [EnumMember(Value = "Invalid_0")]
        Invalid = 0,

        /// <remarks />
        [EnumMember(Value = "None_1")]
        None = 1,

        /// <remarks />
        [EnumMember(Value = "Sign_2")]
        Sign = 2,

        /// <remarks />
        [EnumMember(Value = "SignAndEncrypt_3")]
        SignAndEncrypt = 3,
    }
    #endif
    #endregion

    #region UserTokenType Enumeration
    #if (!OPCUA_EXCLUDE_UserTokenType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public enum UserTokenType
    {
        /// <remarks />
        [EnumMember(Value = "Anonymous_0")]
        Anonymous = 0,

        /// <remarks />
        [EnumMember(Value = "UserName_1")]
        UserName = 1,

        /// <remarks />
        [EnumMember(Value = "Certificate_2")]
        Certificate = 2,

        /// <remarks />
        [EnumMember(Value = "IssuedToken_3")]
        IssuedToken = 3,
    }
    #endif
    #endregion

    #region UserTokenPolicy Class
    #if (!OPCUA_EXCLUDE_UserTokenPolicy)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class UserTokenPolicy : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public UserTokenPolicy()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_policyId = null;
            m_tokenType = UserTokenType.Anonymous;
            m_issuedTokenType = null;
            m_issuerEndpointUrl = null;
            m_securityPolicyUri = null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "PolicyId", IsRequired = false, Order = 1)]
        public string PolicyId
        {
            get { return m_policyId;  }
            set { m_policyId = value; }
        }

        /// <remarks />
        [DataMember(Name = "TokenType", IsRequired = false, Order = 2)]
        public UserTokenType TokenType
        {
            get { return m_tokenType;  }
            set { m_tokenType = value; }
        }

        /// <remarks />
        [DataMember(Name = "IssuedTokenType", IsRequired = false, Order = 3)]
        public string IssuedTokenType
        {
            get { return m_issuedTokenType;  }
            set { m_issuedTokenType = value; }
        }

        /// <remarks />
        [DataMember(Name = "IssuerEndpointUrl", IsRequired = false, Order = 4)]
        public string IssuerEndpointUrl
        {
            get { return m_issuerEndpointUrl;  }
            set { m_issuerEndpointUrl = value; }
        }

        /// <remarks />
        [DataMember(Name = "SecurityPolicyUri", IsRequired = false, Order = 5)]
        public string SecurityPolicyUri
        {
            get { return m_securityPolicyUri;  }
            set { m_securityPolicyUri = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.UserTokenPolicy; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.UserTokenPolicy_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.UserTokenPolicy_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteString("PolicyId", PolicyId);
            encoder.WriteEnumerated("TokenType", TokenType);
            encoder.WriteString("IssuedTokenType", IssuedTokenType);
            encoder.WriteString("IssuerEndpointUrl", IssuerEndpointUrl);
            encoder.WriteString("SecurityPolicyUri", SecurityPolicyUri);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            PolicyId = decoder.ReadString("PolicyId");
            TokenType = (UserTokenType)decoder.ReadEnumerated("TokenType", typeof(UserTokenType));
            IssuedTokenType = decoder.ReadString("IssuedTokenType");
            IssuerEndpointUrl = decoder.ReadString("IssuerEndpointUrl");
            SecurityPolicyUri = decoder.ReadString("SecurityPolicyUri");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            UserTokenPolicy value = encodeable as UserTokenPolicy;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_policyId, value.m_policyId)) return false;
            if (!Utils.IsEqual(m_tokenType, value.m_tokenType)) return false;
            if (!Utils.IsEqual(m_issuedTokenType, value.m_issuedTokenType)) return false;
            if (!Utils.IsEqual(m_issuerEndpointUrl, value.m_issuerEndpointUrl)) return false;
            if (!Utils.IsEqual(m_securityPolicyUri, value.m_securityPolicyUri)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (UserTokenPolicy)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            UserTokenPolicy clone = (UserTokenPolicy)base.MemberwiseClone();

            clone.m_policyId = (string)Utils.Clone(this.m_policyId);
            clone.m_tokenType = (UserTokenType)Utils.Clone(this.m_tokenType);
            clone.m_issuedTokenType = (string)Utils.Clone(this.m_issuedTokenType);
            clone.m_issuerEndpointUrl = (string)Utils.Clone(this.m_issuerEndpointUrl);
            clone.m_securityPolicyUri = (string)Utils.Clone(this.m_securityPolicyUri);

            return clone;
        }
        #endregion

        #region Private Fields
        private string m_policyId;
        private UserTokenType m_tokenType;
        private string m_issuedTokenType;
        private string m_issuerEndpointUrl;
        private string m_securityPolicyUri;
        #endregion
    }

    #region UserTokenPolicyCollection Class
    /// <summary>
    /// A collection of UserTokenPolicy objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfUserTokenPolicy", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "UserTokenPolicy")]
    #if !NET_STANDARD
    public partial class UserTokenPolicyCollection : List<UserTokenPolicy>, ICloneable
    #else
    public partial class UserTokenPolicyCollection : List<UserTokenPolicy>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public UserTokenPolicyCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public UserTokenPolicyCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public UserTokenPolicyCollection(IEnumerable<UserTokenPolicy> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator UserTokenPolicyCollection(UserTokenPolicy[] values)
        {
            if (values != null)
            {
                return new UserTokenPolicyCollection(values);
            }

            return new UserTokenPolicyCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator UserTokenPolicy[](UserTokenPolicyCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (UserTokenPolicyCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            UserTokenPolicyCollection clone = new UserTokenPolicyCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((UserTokenPolicy)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region EndpointDescription Class
    #if (!OPCUA_EXCLUDE_EndpointDescription)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class EndpointDescription : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public EndpointDescription()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_endpointUrl = null;
            m_server = new ApplicationDescription();
            m_serverCertificate = null;
            m_securityMode = MessageSecurityMode.Invalid;
            m_securityPolicyUri = null;
            m_userIdentityTokens = new UserTokenPolicyCollection();
            m_transportProfileUri = null;
            m_securityLevel = (byte)0;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "EndpointUrl", IsRequired = false, Order = 1)]
        public string EndpointUrl
        {
            get { return m_endpointUrl;  }
            set { m_endpointUrl = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "Server", IsRequired = false, Order = 2)]
        public ApplicationDescription Server
        {
            get
            {
                return m_server;
            }

            set
            {
                m_server = value;

                if (value == null)
                {
                    m_server = new ApplicationDescription();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "ServerCertificate", IsRequired = false, Order = 3)]
        public byte[] ServerCertificate
        {
            get { return m_serverCertificate;  }
            set { m_serverCertificate = value; }
        }

        /// <remarks />
        [DataMember(Name = "SecurityMode", IsRequired = false, Order = 4)]
        public MessageSecurityMode SecurityMode
        {
            get { return m_securityMode;  }
            set { m_securityMode = value; }
        }

        /// <remarks />
        [DataMember(Name = "SecurityPolicyUri", IsRequired = false, Order = 5)]
        public string SecurityPolicyUri
        {
            get { return m_securityPolicyUri;  }
            set { m_securityPolicyUri = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "UserIdentityTokens", IsRequired = false, Order = 6)]
        public UserTokenPolicyCollection UserIdentityTokens
        {
            get
            {
                return m_userIdentityTokens;
            }

            set
            {
                m_userIdentityTokens = value;

                if (value == null)
                {
                    m_userIdentityTokens = new UserTokenPolicyCollection();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "TransportProfileUri", IsRequired = false, Order = 7)]
        public string TransportProfileUri
        {
            get { return m_transportProfileUri;  }
            set { m_transportProfileUri = value; }
        }

        /// <remarks />
        [DataMember(Name = "SecurityLevel", IsRequired = false, Order = 8)]
        public byte SecurityLevel
        {
            get { return m_securityLevel;  }
            set { m_securityLevel = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.EndpointDescription; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.EndpointDescription_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.EndpointDescription_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteString("EndpointUrl", EndpointUrl);
            encoder.WriteEncodeable("Server", Server, typeof(ApplicationDescription));
            encoder.WriteByteString("ServerCertificate", ServerCertificate);
            encoder.WriteEnumerated("SecurityMode", SecurityMode);
            encoder.WriteString("SecurityPolicyUri", SecurityPolicyUri);
            encoder.WriteEncodeableArray("UserIdentityTokens", UserIdentityTokens.ToArray(), typeof(UserTokenPolicy));
            encoder.WriteString("TransportProfileUri", TransportProfileUri);
            encoder.WriteByte("SecurityLevel", SecurityLevel);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            EndpointUrl = decoder.ReadString("EndpointUrl");
            Server = (ApplicationDescription)decoder.ReadEncodeable("Server", typeof(ApplicationDescription));
            ServerCertificate = decoder.ReadByteString("ServerCertificate");
            SecurityMode = (MessageSecurityMode)decoder.ReadEnumerated("SecurityMode", typeof(MessageSecurityMode));
            SecurityPolicyUri = decoder.ReadString("SecurityPolicyUri");
            UserIdentityTokens = (UserTokenPolicyCollection)decoder.ReadEncodeableArray("UserIdentityTokens", typeof(UserTokenPolicy));
            TransportProfileUri = decoder.ReadString("TransportProfileUri");
            SecurityLevel = decoder.ReadByte("SecurityLevel");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            EndpointDescription value = encodeable as EndpointDescription;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_endpointUrl, value.m_endpointUrl)) return false;
            if (!Utils.IsEqual(m_server, value.m_server)) return false;
            if (!Utils.IsEqual(m_serverCertificate, value.m_serverCertificate)) return false;
            if (!Utils.IsEqual(m_securityMode, value.m_securityMode)) return false;
            if (!Utils.IsEqual(m_securityPolicyUri, value.m_securityPolicyUri)) return false;
            if (!Utils.IsEqual(m_userIdentityTokens, value.m_userIdentityTokens)) return false;
            if (!Utils.IsEqual(m_transportProfileUri, value.m_transportProfileUri)) return false;
            if (!Utils.IsEqual(m_securityLevel, value.m_securityLevel)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (EndpointDescription)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            EndpointDescription clone = (EndpointDescription)base.MemberwiseClone();

            clone.m_endpointUrl = (string)Utils.Clone(this.m_endpointUrl);
            clone.m_server = (ApplicationDescription)Utils.Clone(this.m_server);
            clone.m_serverCertificate = (byte[])Utils.Clone(this.m_serverCertificate);
            clone.m_securityMode = (MessageSecurityMode)Utils.Clone(this.m_securityMode);
            clone.m_securityPolicyUri = (string)Utils.Clone(this.m_securityPolicyUri);
            clone.m_userIdentityTokens = (UserTokenPolicyCollection)Utils.Clone(this.m_userIdentityTokens);
            clone.m_transportProfileUri = (string)Utils.Clone(this.m_transportProfileUri);
            clone.m_securityLevel = (byte)Utils.Clone(this.m_securityLevel);

            return clone;
        }
        #endregion

        #region Private Fields
        private string m_endpointUrl;
        private ApplicationDescription m_server;
        private byte[] m_serverCertificate;
        private MessageSecurityMode m_securityMode;
        private string m_securityPolicyUri;
        private UserTokenPolicyCollection m_userIdentityTokens;
        private string m_transportProfileUri;
        private byte m_securityLevel;
        #endregion
    }

    #region EndpointDescriptionCollection Class
    /// <summary>
    /// A collection of EndpointDescription objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfEndpointDescription", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "EndpointDescription")]
    #if !NET_STANDARD
    public partial class EndpointDescriptionCollection : List<EndpointDescription>, ICloneable
    #else
    public partial class EndpointDescriptionCollection : List<EndpointDescription>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public EndpointDescriptionCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public EndpointDescriptionCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public EndpointDescriptionCollection(IEnumerable<EndpointDescription> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator EndpointDescriptionCollection(EndpointDescription[] values)
        {
            if (values != null)
            {
                return new EndpointDescriptionCollection(values);
            }

            return new EndpointDescriptionCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator EndpointDescription[](EndpointDescriptionCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (EndpointDescriptionCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            EndpointDescriptionCollection clone = new EndpointDescriptionCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((EndpointDescription)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region GetEndpointsRequest Class
    #if (!OPCUA_EXCLUDE_GetEndpointsRequest)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class GetEndpointsRequest : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public GetEndpointsRequest()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_requestHeader = new RequestHeader();
            m_endpointUrl = null;
            m_localeIds = new StringCollection();
            m_profileUris = new StringCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RequestHeader", IsRequired = false, Order = 1)]
        public RequestHeader RequestHeader
        {
            get
            {
                return m_requestHeader;
            }

            set
            {
                m_requestHeader = value;

                if (value == null)
                {
                    m_requestHeader = new RequestHeader();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "EndpointUrl", IsRequired = false, Order = 2)]
        public string EndpointUrl
        {
            get { return m_endpointUrl;  }
            set { m_endpointUrl = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "LocaleIds", IsRequired = false, Order = 3)]
        public StringCollection LocaleIds
        {
            get
            {
                return m_localeIds;
            }

            set
            {
                m_localeIds = value;

                if (value == null)
                {
                    m_localeIds = new StringCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ProfileUris", IsRequired = false, Order = 4)]
        public StringCollection ProfileUris
        {
            get
            {
                return m_profileUris;
            }

            set
            {
                m_profileUris = value;

                if (value == null)
                {
                    m_profileUris = new StringCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.GetEndpointsRequest; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.GetEndpointsRequest_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.GetEndpointsRequest_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("RequestHeader", RequestHeader, typeof(RequestHeader));
            encoder.WriteString("EndpointUrl", EndpointUrl);
            encoder.WriteStringArray("LocaleIds", LocaleIds);
            encoder.WriteStringArray("ProfileUris", ProfileUris);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            RequestHeader = (RequestHeader)decoder.ReadEncodeable("RequestHeader", typeof(RequestHeader));
            EndpointUrl = decoder.ReadString("EndpointUrl");
            LocaleIds = decoder.ReadStringArray("LocaleIds");
            ProfileUris = decoder.ReadStringArray("ProfileUris");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            GetEndpointsRequest value = encodeable as GetEndpointsRequest;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_requestHeader, value.m_requestHeader)) return false;
            if (!Utils.IsEqual(m_endpointUrl, value.m_endpointUrl)) return false;
            if (!Utils.IsEqual(m_localeIds, value.m_localeIds)) return false;
            if (!Utils.IsEqual(m_profileUris, value.m_profileUris)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (GetEndpointsRequest)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            GetEndpointsRequest clone = (GetEndpointsRequest)base.MemberwiseClone();

            clone.m_requestHeader = (RequestHeader)Utils.Clone(this.m_requestHeader);
            clone.m_endpointUrl = (string)Utils.Clone(this.m_endpointUrl);
            clone.m_localeIds = (StringCollection)Utils.Clone(this.m_localeIds);
            clone.m_profileUris = (StringCollection)Utils.Clone(this.m_profileUris);

            return clone;
        }
        #endregion

        #region Private Fields
        private RequestHeader m_requestHeader;
        private string m_endpointUrl;
        private StringCollection m_localeIds;
        private StringCollection m_profileUris;
        #endregion
    }
    #endif
    #endregion

    #region GetEndpointsResponse Class
    #if (!OPCUA_EXCLUDE_GetEndpointsResponse)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class GetEndpointsResponse : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public GetEndpointsResponse()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_responseHeader = new ResponseHeader();
            m_endpoints = new EndpointDescriptionCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ResponseHeader", IsRequired = false, Order = 1)]
        public ResponseHeader ResponseHeader
        {
            get
            {
                return m_responseHeader;
            }

            set
            {
                m_responseHeader = value;

                if (value == null)
                {
                    m_responseHeader = new ResponseHeader();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "Endpoints", IsRequired = false, Order = 2)]
        public EndpointDescriptionCollection Endpoints
        {
            get
            {
                return m_endpoints;
            }

            set
            {
                m_endpoints = value;

                if (value == null)
                {
                    m_endpoints = new EndpointDescriptionCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.GetEndpointsResponse; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.GetEndpointsResponse_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.GetEndpointsResponse_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("ResponseHeader", ResponseHeader, typeof(ResponseHeader));
            encoder.WriteEncodeableArray("Endpoints", Endpoints.ToArray(), typeof(EndpointDescription));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ResponseHeader = (ResponseHeader)decoder.ReadEncodeable("ResponseHeader", typeof(ResponseHeader));
            Endpoints = (EndpointDescriptionCollection)decoder.ReadEncodeableArray("Endpoints", typeof(EndpointDescription));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            GetEndpointsResponse value = encodeable as GetEndpointsResponse;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_responseHeader, value.m_responseHeader)) return false;
            if (!Utils.IsEqual(m_endpoints, value.m_endpoints)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (GetEndpointsResponse)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            GetEndpointsResponse clone = (GetEndpointsResponse)base.MemberwiseClone();

            clone.m_responseHeader = (ResponseHeader)Utils.Clone(this.m_responseHeader);
            clone.m_endpoints = (EndpointDescriptionCollection)Utils.Clone(this.m_endpoints);

            return clone;
        }
        #endregion

        #region Private Fields
        private ResponseHeader m_responseHeader;
        private EndpointDescriptionCollection m_endpoints;
        #endregion
    }
    #endif
    #endregion

    #region RegisteredServer Class
    #if (!OPCUA_EXCLUDE_RegisteredServer)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class RegisteredServer : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public RegisteredServer()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_serverUri = null;
            m_productUri = null;
            m_serverNames = new LocalizedTextCollection();
            m_serverType = ApplicationType.Server;
            m_gatewayServerUri = null;
            m_discoveryUrls = new StringCollection();
            m_semaphoreFilePath = null;
            m_isOnline = true;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "ServerUri", IsRequired = false, Order = 1)]
        public string ServerUri
        {
            get { return m_serverUri;  }
            set { m_serverUri = value; }
        }

        /// <remarks />
        [DataMember(Name = "ProductUri", IsRequired = false, Order = 2)]
        public string ProductUri
        {
            get { return m_productUri;  }
            set { m_productUri = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ServerNames", IsRequired = false, Order = 3)]
        public LocalizedTextCollection ServerNames
        {
            get
            {
                return m_serverNames;
            }

            set
            {
                m_serverNames = value;

                if (value == null)
                {
                    m_serverNames = new LocalizedTextCollection();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "ServerType", IsRequired = false, Order = 4)]
        public ApplicationType ServerType
        {
            get { return m_serverType;  }
            set { m_serverType = value; }
        }

        /// <remarks />
        [DataMember(Name = "GatewayServerUri", IsRequired = false, Order = 5)]
        public string GatewayServerUri
        {
            get { return m_gatewayServerUri;  }
            set { m_gatewayServerUri = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "DiscoveryUrls", IsRequired = false, Order = 6)]
        public StringCollection DiscoveryUrls
        {
            get
            {
                return m_discoveryUrls;
            }

            set
            {
                m_discoveryUrls = value;

                if (value == null)
                {
                    m_discoveryUrls = new StringCollection();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "SemaphoreFilePath", IsRequired = false, Order = 7)]
        public string SemaphoreFilePath
        {
            get { return m_semaphoreFilePath;  }
            set { m_semaphoreFilePath = value; }
        }

        /// <remarks />
        [DataMember(Name = "IsOnline", IsRequired = false, Order = 8)]
        public bool IsOnline
        {
            get { return m_isOnline;  }
            set { m_isOnline = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.RegisteredServer; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.RegisteredServer_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.RegisteredServer_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteString("ServerUri", ServerUri);
            encoder.WriteString("ProductUri", ProductUri);
            encoder.WriteLocalizedTextArray("ServerNames", ServerNames);
            encoder.WriteEnumerated("ServerType", ServerType);
            encoder.WriteString("GatewayServerUri", GatewayServerUri);
            encoder.WriteStringArray("DiscoveryUrls", DiscoveryUrls);
            encoder.WriteString("SemaphoreFilePath", SemaphoreFilePath);
            encoder.WriteBoolean("IsOnline", IsOnline);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ServerUri = decoder.ReadString("ServerUri");
            ProductUri = decoder.ReadString("ProductUri");
            ServerNames = decoder.ReadLocalizedTextArray("ServerNames");
            ServerType = (ApplicationType)decoder.ReadEnumerated("ServerType", typeof(ApplicationType));
            GatewayServerUri = decoder.ReadString("GatewayServerUri");
            DiscoveryUrls = decoder.ReadStringArray("DiscoveryUrls");
            SemaphoreFilePath = decoder.ReadString("SemaphoreFilePath");
            IsOnline = decoder.ReadBoolean("IsOnline");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            RegisteredServer value = encodeable as RegisteredServer;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_serverUri, value.m_serverUri)) return false;
            if (!Utils.IsEqual(m_productUri, value.m_productUri)) return false;
            if (!Utils.IsEqual(m_serverNames, value.m_serverNames)) return false;
            if (!Utils.IsEqual(m_serverType, value.m_serverType)) return false;
            if (!Utils.IsEqual(m_gatewayServerUri, value.m_gatewayServerUri)) return false;
            if (!Utils.IsEqual(m_discoveryUrls, value.m_discoveryUrls)) return false;
            if (!Utils.IsEqual(m_semaphoreFilePath, value.m_semaphoreFilePath)) return false;
            if (!Utils.IsEqual(m_isOnline, value.m_isOnline)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (RegisteredServer)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            RegisteredServer clone = (RegisteredServer)base.MemberwiseClone();

            clone.m_serverUri = (string)Utils.Clone(this.m_serverUri);
            clone.m_productUri = (string)Utils.Clone(this.m_productUri);
            clone.m_serverNames = (LocalizedTextCollection)Utils.Clone(this.m_serverNames);
            clone.m_serverType = (ApplicationType)Utils.Clone(this.m_serverType);
            clone.m_gatewayServerUri = (string)Utils.Clone(this.m_gatewayServerUri);
            clone.m_discoveryUrls = (StringCollection)Utils.Clone(this.m_discoveryUrls);
            clone.m_semaphoreFilePath = (string)Utils.Clone(this.m_semaphoreFilePath);
            clone.m_isOnline = (bool)Utils.Clone(this.m_isOnline);

            return clone;
        }
        #endregion

        #region Private Fields
        private string m_serverUri;
        private string m_productUri;
        private LocalizedTextCollection m_serverNames;
        private ApplicationType m_serverType;
        private string m_gatewayServerUri;
        private StringCollection m_discoveryUrls;
        private string m_semaphoreFilePath;
        private bool m_isOnline;
        #endregion
    }

    #region RegisteredServerCollection Class
    /// <summary>
    /// A collection of RegisteredServer objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfRegisteredServer", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "RegisteredServer")]
    #if !NET_STANDARD
    public partial class RegisteredServerCollection : List<RegisteredServer>, ICloneable
    #else
    public partial class RegisteredServerCollection : List<RegisteredServer>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public RegisteredServerCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public RegisteredServerCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public RegisteredServerCollection(IEnumerable<RegisteredServer> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator RegisteredServerCollection(RegisteredServer[] values)
        {
            if (values != null)
            {
                return new RegisteredServerCollection(values);
            }

            return new RegisteredServerCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator RegisteredServer[](RegisteredServerCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (RegisteredServerCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            RegisteredServerCollection clone = new RegisteredServerCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((RegisteredServer)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region RegisterServerRequest Class
    #if (!OPCUA_EXCLUDE_RegisterServerRequest)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class RegisterServerRequest : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public RegisterServerRequest()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_requestHeader = new RequestHeader();
            m_server = new RegisteredServer();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RequestHeader", IsRequired = false, Order = 1)]
        public RequestHeader RequestHeader
        {
            get
            {
                return m_requestHeader;
            }

            set
            {
                m_requestHeader = value;

                if (value == null)
                {
                    m_requestHeader = new RequestHeader();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "Server", IsRequired = false, Order = 2)]
        public RegisteredServer Server
        {
            get
            {
                return m_server;
            }

            set
            {
                m_server = value;

                if (value == null)
                {
                    m_server = new RegisteredServer();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.RegisterServerRequest; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.RegisterServerRequest_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.RegisterServerRequest_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("RequestHeader", RequestHeader, typeof(RequestHeader));
            encoder.WriteEncodeable("Server", Server, typeof(RegisteredServer));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            RequestHeader = (RequestHeader)decoder.ReadEncodeable("RequestHeader", typeof(RequestHeader));
            Server = (RegisteredServer)decoder.ReadEncodeable("Server", typeof(RegisteredServer));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            RegisterServerRequest value = encodeable as RegisterServerRequest;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_requestHeader, value.m_requestHeader)) return false;
            if (!Utils.IsEqual(m_server, value.m_server)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (RegisterServerRequest)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            RegisterServerRequest clone = (RegisterServerRequest)base.MemberwiseClone();

            clone.m_requestHeader = (RequestHeader)Utils.Clone(this.m_requestHeader);
            clone.m_server = (RegisteredServer)Utils.Clone(this.m_server);

            return clone;
        }
        #endregion

        #region Private Fields
        private RequestHeader m_requestHeader;
        private RegisteredServer m_server;
        #endregion
    }
    #endif
    #endregion

    #region RegisterServerResponse Class
    #if (!OPCUA_EXCLUDE_RegisterServerResponse)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class RegisterServerResponse : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public RegisterServerResponse()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_responseHeader = new ResponseHeader();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ResponseHeader", IsRequired = false, Order = 1)]
        public ResponseHeader ResponseHeader
        {
            get
            {
                return m_responseHeader;
            }

            set
            {
                m_responseHeader = value;

                if (value == null)
                {
                    m_responseHeader = new ResponseHeader();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.RegisterServerResponse; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.RegisterServerResponse_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.RegisterServerResponse_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("ResponseHeader", ResponseHeader, typeof(ResponseHeader));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ResponseHeader = (ResponseHeader)decoder.ReadEncodeable("ResponseHeader", typeof(ResponseHeader));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            RegisterServerResponse value = encodeable as RegisterServerResponse;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_responseHeader, value.m_responseHeader)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (RegisterServerResponse)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            RegisterServerResponse clone = (RegisterServerResponse)base.MemberwiseClone();

            clone.m_responseHeader = (ResponseHeader)Utils.Clone(this.m_responseHeader);

            return clone;
        }
        #endregion

        #region Private Fields
        private ResponseHeader m_responseHeader;
        #endregion
    }
    #endif
    #endregion

    #region DiscoveryConfiguration Class
    #if (!OPCUA_EXCLUDE_DiscoveryConfiguration)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class DiscoveryConfiguration : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public DiscoveryConfiguration()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
        }
        #endregion

        #region Public Properties
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.DiscoveryConfiguration; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.DiscoveryConfiguration_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.DiscoveryConfiguration_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            DiscoveryConfiguration value = encodeable as DiscoveryConfiguration;

            if (value == null)
            {
                return false;
            }


            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (DiscoveryConfiguration)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            DiscoveryConfiguration clone = (DiscoveryConfiguration)base.MemberwiseClone();


            return clone;
        }
        #endregion

        #region Private Fields
        #endregion
    }
    #endif
    #endregion

    #region MdnsDiscoveryConfiguration Class
    #if (!OPCUA_EXCLUDE_MdnsDiscoveryConfiguration)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class MdnsDiscoveryConfiguration : DiscoveryConfiguration
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public MdnsDiscoveryConfiguration()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_mdnsServerName = null;
            m_serverCapabilities = new StringCollection();
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "MdnsServerName", IsRequired = false, Order = 1)]
        public string MdnsServerName
        {
            get { return m_mdnsServerName;  }
            set { m_mdnsServerName = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ServerCapabilities", IsRequired = false, Order = 2)]
        public StringCollection ServerCapabilities
        {
            get
            {
                return m_serverCapabilities;
            }

            set
            {
                m_serverCapabilities = value;

                if (value == null)
                {
                    m_serverCapabilities = new StringCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.MdnsDiscoveryConfiguration; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.MdnsDiscoveryConfiguration_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.MdnsDiscoveryConfiguration_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteString("MdnsServerName", MdnsServerName);
            encoder.WriteStringArray("ServerCapabilities", ServerCapabilities);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            MdnsServerName = decoder.ReadString("MdnsServerName");
            ServerCapabilities = decoder.ReadStringArray("ServerCapabilities");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            MdnsDiscoveryConfiguration value = encodeable as MdnsDiscoveryConfiguration;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_mdnsServerName, value.m_mdnsServerName)) return false;
            if (!Utils.IsEqual(m_serverCapabilities, value.m_serverCapabilities)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (MdnsDiscoveryConfiguration)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            MdnsDiscoveryConfiguration clone = (MdnsDiscoveryConfiguration)base.MemberwiseClone();

            clone.m_mdnsServerName = (string)Utils.Clone(this.m_mdnsServerName);
            clone.m_serverCapabilities = (StringCollection)Utils.Clone(this.m_serverCapabilities);

            return clone;
        }
        #endregion

        #region Private Fields
        private string m_mdnsServerName;
        private StringCollection m_serverCapabilities;
        #endregion
    }
    #endif
    #endregion

    #region RegisterServer2Request Class
    #if (!OPCUA_EXCLUDE_RegisterServer2Request)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class RegisterServer2Request : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public RegisterServer2Request()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_requestHeader = new RequestHeader();
            m_server = new RegisteredServer();
            m_discoveryConfiguration = new ExtensionObjectCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RequestHeader", IsRequired = false, Order = 1)]
        public RequestHeader RequestHeader
        {
            get
            {
                return m_requestHeader;
            }

            set
            {
                m_requestHeader = value;

                if (value == null)
                {
                    m_requestHeader = new RequestHeader();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "Server", IsRequired = false, Order = 2)]
        public RegisteredServer Server
        {
            get
            {
                return m_server;
            }

            set
            {
                m_server = value;

                if (value == null)
                {
                    m_server = new RegisteredServer();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "DiscoveryConfiguration", IsRequired = false, Order = 3)]
        public ExtensionObjectCollection DiscoveryConfiguration
        {
            get
            {
                return m_discoveryConfiguration;
            }

            set
            {
                m_discoveryConfiguration = value;

                if (value == null)
                {
                    m_discoveryConfiguration = new ExtensionObjectCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.RegisterServer2Request; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.RegisterServer2Request_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.RegisterServer2Request_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("RequestHeader", RequestHeader, typeof(RequestHeader));
            encoder.WriteEncodeable("Server", Server, typeof(RegisteredServer));
            encoder.WriteExtensionObjectArray("DiscoveryConfiguration", DiscoveryConfiguration);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            RequestHeader = (RequestHeader)decoder.ReadEncodeable("RequestHeader", typeof(RequestHeader));
            Server = (RegisteredServer)decoder.ReadEncodeable("Server", typeof(RegisteredServer));
            DiscoveryConfiguration = decoder.ReadExtensionObjectArray("DiscoveryConfiguration");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            RegisterServer2Request value = encodeable as RegisterServer2Request;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_requestHeader, value.m_requestHeader)) return false;
            if (!Utils.IsEqual(m_server, value.m_server)) return false;
            if (!Utils.IsEqual(m_discoveryConfiguration, value.m_discoveryConfiguration)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (RegisterServer2Request)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            RegisterServer2Request clone = (RegisterServer2Request)base.MemberwiseClone();

            clone.m_requestHeader = (RequestHeader)Utils.Clone(this.m_requestHeader);
            clone.m_server = (RegisteredServer)Utils.Clone(this.m_server);
            clone.m_discoveryConfiguration = (ExtensionObjectCollection)Utils.Clone(this.m_discoveryConfiguration);

            return clone;
        }
        #endregion

        #region Private Fields
        private RequestHeader m_requestHeader;
        private RegisteredServer m_server;
        private ExtensionObjectCollection m_discoveryConfiguration;
        #endregion
    }
    #endif
    #endregion

    #region RegisterServer2Response Class
    #if (!OPCUA_EXCLUDE_RegisterServer2Response)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class RegisterServer2Response : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public RegisterServer2Response()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_responseHeader = new ResponseHeader();
            m_configurationResults = new StatusCodeCollection();
            m_diagnosticInfos = new DiagnosticInfoCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ResponseHeader", IsRequired = false, Order = 1)]
        public ResponseHeader ResponseHeader
        {
            get
            {
                return m_responseHeader;
            }

            set
            {
                m_responseHeader = value;

                if (value == null)
                {
                    m_responseHeader = new ResponseHeader();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ConfigurationResults", IsRequired = false, Order = 2)]
        public StatusCodeCollection ConfigurationResults
        {
            get
            {
                return m_configurationResults;
            }

            set
            {
                m_configurationResults = value;

                if (value == null)
                {
                    m_configurationResults = new StatusCodeCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "DiagnosticInfos", IsRequired = false, Order = 3)]
        public DiagnosticInfoCollection DiagnosticInfos
        {
            get
            {
                return m_diagnosticInfos;
            }

            set
            {
                m_diagnosticInfos = value;

                if (value == null)
                {
                    m_diagnosticInfos = new DiagnosticInfoCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.RegisterServer2Response; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.RegisterServer2Response_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.RegisterServer2Response_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("ResponseHeader", ResponseHeader, typeof(ResponseHeader));
            encoder.WriteStatusCodeArray("ConfigurationResults", ConfigurationResults);
            encoder.WriteDiagnosticInfoArray("DiagnosticInfos", DiagnosticInfos);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ResponseHeader = (ResponseHeader)decoder.ReadEncodeable("ResponseHeader", typeof(ResponseHeader));
            ConfigurationResults = decoder.ReadStatusCodeArray("ConfigurationResults");
            DiagnosticInfos = decoder.ReadDiagnosticInfoArray("DiagnosticInfos");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            RegisterServer2Response value = encodeable as RegisterServer2Response;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_responseHeader, value.m_responseHeader)) return false;
            if (!Utils.IsEqual(m_configurationResults, value.m_configurationResults)) return false;
            if (!Utils.IsEqual(m_diagnosticInfos, value.m_diagnosticInfos)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (RegisterServer2Response)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            RegisterServer2Response clone = (RegisterServer2Response)base.MemberwiseClone();

            clone.m_responseHeader = (ResponseHeader)Utils.Clone(this.m_responseHeader);
            clone.m_configurationResults = (StatusCodeCollection)Utils.Clone(this.m_configurationResults);
            clone.m_diagnosticInfos = (DiagnosticInfoCollection)Utils.Clone(this.m_diagnosticInfos);

            return clone;
        }
        #endregion

        #region Private Fields
        private ResponseHeader m_responseHeader;
        private StatusCodeCollection m_configurationResults;
        private DiagnosticInfoCollection m_diagnosticInfos;
        #endregion
    }
    #endif
    #endregion

    #region SecurityTokenRequestType Enumeration
    #if (!OPCUA_EXCLUDE_SecurityTokenRequestType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public enum SecurityTokenRequestType
    {
        /// <remarks />
        [EnumMember(Value = "Issue_0")]
        Issue = 0,

        /// <remarks />
        [EnumMember(Value = "Renew_1")]
        Renew = 1,
    }
    #endif
    #endregion

    #region ChannelSecurityToken Class
    #if (!OPCUA_EXCLUDE_ChannelSecurityToken)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ChannelSecurityToken : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ChannelSecurityToken()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_channelId = (uint)0;
            m_tokenId = (uint)0;
            m_createdAt = DateTime.MinValue;
            m_revisedLifetime = (uint)0;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "ChannelId", IsRequired = false, Order = 1)]
        public uint ChannelId
        {
            get { return m_channelId;  }
            set { m_channelId = value; }
        }

        /// <remarks />
        [DataMember(Name = "TokenId", IsRequired = false, Order = 2)]
        public uint TokenId
        {
            get { return m_tokenId;  }
            set { m_tokenId = value; }
        }

        /// <remarks />
        [DataMember(Name = "CreatedAt", IsRequired = false, Order = 3)]
        public DateTime CreatedAt
        {
            get { return m_createdAt;  }
            set { m_createdAt = value; }
        }

        /// <remarks />
        [DataMember(Name = "RevisedLifetime", IsRequired = false, Order = 4)]
        public uint RevisedLifetime
        {
            get { return m_revisedLifetime;  }
            set { m_revisedLifetime = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ChannelSecurityToken; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ChannelSecurityToken_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ChannelSecurityToken_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteUInt32("ChannelId", ChannelId);
            encoder.WriteUInt32("TokenId", TokenId);
            encoder.WriteDateTime("CreatedAt", CreatedAt);
            encoder.WriteUInt32("RevisedLifetime", RevisedLifetime);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ChannelId = decoder.ReadUInt32("ChannelId");
            TokenId = decoder.ReadUInt32("TokenId");
            CreatedAt = decoder.ReadDateTime("CreatedAt");
            RevisedLifetime = decoder.ReadUInt32("RevisedLifetime");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ChannelSecurityToken value = encodeable as ChannelSecurityToken;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_channelId, value.m_channelId)) return false;
            if (!Utils.IsEqual(m_tokenId, value.m_tokenId)) return false;
            if (!Utils.IsEqual(m_createdAt, value.m_createdAt)) return false;
            if (!Utils.IsEqual(m_revisedLifetime, value.m_revisedLifetime)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (ChannelSecurityToken)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ChannelSecurityToken clone = (ChannelSecurityToken)base.MemberwiseClone();

            clone.m_channelId = (uint)Utils.Clone(this.m_channelId);
            clone.m_tokenId = (uint)Utils.Clone(this.m_tokenId);
            clone.m_createdAt = (DateTime)Utils.Clone(this.m_createdAt);
            clone.m_revisedLifetime = (uint)Utils.Clone(this.m_revisedLifetime);

            return clone;
        }
        #endregion

        #region Private Fields
        private uint m_channelId;
        private uint m_tokenId;
        private DateTime m_createdAt;
        private uint m_revisedLifetime;
        #endregion
    }
    #endif
    #endregion

    #region OpenSecureChannelRequest Class
    #if (!OPCUA_EXCLUDE_OpenSecureChannelRequest)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class OpenSecureChannelRequest : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public OpenSecureChannelRequest()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_requestHeader = new RequestHeader();
            m_clientProtocolVersion = (uint)0;
            m_requestType = SecurityTokenRequestType.Issue;
            m_securityMode = MessageSecurityMode.Invalid;
            m_clientNonce = null;
            m_requestedLifetime = (uint)0;
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RequestHeader", IsRequired = false, Order = 1)]
        public RequestHeader RequestHeader
        {
            get
            {
                return m_requestHeader;
            }

            set
            {
                m_requestHeader = value;

                if (value == null)
                {
                    m_requestHeader = new RequestHeader();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "ClientProtocolVersion", IsRequired = false, Order = 2)]
        public uint ClientProtocolVersion
        {
            get { return m_clientProtocolVersion;  }
            set { m_clientProtocolVersion = value; }
        }

        /// <remarks />
        [DataMember(Name = "RequestType", IsRequired = false, Order = 3)]
        public SecurityTokenRequestType RequestType
        {
            get { return m_requestType;  }
            set { m_requestType = value; }
        }

        /// <remarks />
        [DataMember(Name = "SecurityMode", IsRequired = false, Order = 4)]
        public MessageSecurityMode SecurityMode
        {
            get { return m_securityMode;  }
            set { m_securityMode = value; }
        }

        /// <remarks />
        [DataMember(Name = "ClientNonce", IsRequired = false, Order = 5)]
        public byte[] ClientNonce
        {
            get { return m_clientNonce;  }
            set { m_clientNonce = value; }
        }

        /// <remarks />
        [DataMember(Name = "RequestedLifetime", IsRequired = false, Order = 6)]
        public uint RequestedLifetime
        {
            get { return m_requestedLifetime;  }
            set { m_requestedLifetime = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.OpenSecureChannelRequest; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.OpenSecureChannelRequest_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.OpenSecureChannelRequest_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("RequestHeader", RequestHeader, typeof(RequestHeader));
            encoder.WriteUInt32("ClientProtocolVersion", ClientProtocolVersion);
            encoder.WriteEnumerated("RequestType", RequestType);
            encoder.WriteEnumerated("SecurityMode", SecurityMode);
            encoder.WriteByteString("ClientNonce", ClientNonce);
            encoder.WriteUInt32("RequestedLifetime", RequestedLifetime);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            RequestHeader = (RequestHeader)decoder.ReadEncodeable("RequestHeader", typeof(RequestHeader));
            ClientProtocolVersion = decoder.ReadUInt32("ClientProtocolVersion");
            RequestType = (SecurityTokenRequestType)decoder.ReadEnumerated("RequestType", typeof(SecurityTokenRequestType));
            SecurityMode = (MessageSecurityMode)decoder.ReadEnumerated("SecurityMode", typeof(MessageSecurityMode));
            ClientNonce = decoder.ReadByteString("ClientNonce");
            RequestedLifetime = decoder.ReadUInt32("RequestedLifetime");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            OpenSecureChannelRequest value = encodeable as OpenSecureChannelRequest;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_requestHeader, value.m_requestHeader)) return false;
            if (!Utils.IsEqual(m_clientProtocolVersion, value.m_clientProtocolVersion)) return false;
            if (!Utils.IsEqual(m_requestType, value.m_requestType)) return false;
            if (!Utils.IsEqual(m_securityMode, value.m_securityMode)) return false;
            if (!Utils.IsEqual(m_clientNonce, value.m_clientNonce)) return false;
            if (!Utils.IsEqual(m_requestedLifetime, value.m_requestedLifetime)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (OpenSecureChannelRequest)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            OpenSecureChannelRequest clone = (OpenSecureChannelRequest)base.MemberwiseClone();

            clone.m_requestHeader = (RequestHeader)Utils.Clone(this.m_requestHeader);
            clone.m_clientProtocolVersion = (uint)Utils.Clone(this.m_clientProtocolVersion);
            clone.m_requestType = (SecurityTokenRequestType)Utils.Clone(this.m_requestType);
            clone.m_securityMode = (MessageSecurityMode)Utils.Clone(this.m_securityMode);
            clone.m_clientNonce = (byte[])Utils.Clone(this.m_clientNonce);
            clone.m_requestedLifetime = (uint)Utils.Clone(this.m_requestedLifetime);

            return clone;
        }
        #endregion

        #region Private Fields
        private RequestHeader m_requestHeader;
        private uint m_clientProtocolVersion;
        private SecurityTokenRequestType m_requestType;
        private MessageSecurityMode m_securityMode;
        private byte[] m_clientNonce;
        private uint m_requestedLifetime;
        #endregion
    }
    #endif
    #endregion

    #region OpenSecureChannelResponse Class
    #if (!OPCUA_EXCLUDE_OpenSecureChannelResponse)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class OpenSecureChannelResponse : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public OpenSecureChannelResponse()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_responseHeader = new ResponseHeader();
            m_serverProtocolVersion = (uint)0;
            m_securityToken = new ChannelSecurityToken();
            m_serverNonce = null;
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ResponseHeader", IsRequired = false, Order = 1)]
        public ResponseHeader ResponseHeader
        {
            get
            {
                return m_responseHeader;
            }

            set
            {
                m_responseHeader = value;

                if (value == null)
                {
                    m_responseHeader = new ResponseHeader();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "ServerProtocolVersion", IsRequired = false, Order = 2)]
        public uint ServerProtocolVersion
        {
            get { return m_serverProtocolVersion;  }
            set { m_serverProtocolVersion = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "SecurityToken", IsRequired = false, Order = 3)]
        public ChannelSecurityToken SecurityToken
        {
            get
            {
                return m_securityToken;
            }

            set
            {
                m_securityToken = value;

                if (value == null)
                {
                    m_securityToken = new ChannelSecurityToken();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "ServerNonce", IsRequired = false, Order = 4)]
        public byte[] ServerNonce
        {
            get { return m_serverNonce;  }
            set { m_serverNonce = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.OpenSecureChannelResponse; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.OpenSecureChannelResponse_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.OpenSecureChannelResponse_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("ResponseHeader", ResponseHeader, typeof(ResponseHeader));
            encoder.WriteUInt32("ServerProtocolVersion", ServerProtocolVersion);
            encoder.WriteEncodeable("SecurityToken", SecurityToken, typeof(ChannelSecurityToken));
            encoder.WriteByteString("ServerNonce", ServerNonce);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ResponseHeader = (ResponseHeader)decoder.ReadEncodeable("ResponseHeader", typeof(ResponseHeader));
            ServerProtocolVersion = decoder.ReadUInt32("ServerProtocolVersion");
            SecurityToken = (ChannelSecurityToken)decoder.ReadEncodeable("SecurityToken", typeof(ChannelSecurityToken));
            ServerNonce = decoder.ReadByteString("ServerNonce");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            OpenSecureChannelResponse value = encodeable as OpenSecureChannelResponse;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_responseHeader, value.m_responseHeader)) return false;
            if (!Utils.IsEqual(m_serverProtocolVersion, value.m_serverProtocolVersion)) return false;
            if (!Utils.IsEqual(m_securityToken, value.m_securityToken)) return false;
            if (!Utils.IsEqual(m_serverNonce, value.m_serverNonce)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (OpenSecureChannelResponse)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            OpenSecureChannelResponse clone = (OpenSecureChannelResponse)base.MemberwiseClone();

            clone.m_responseHeader = (ResponseHeader)Utils.Clone(this.m_responseHeader);
            clone.m_serverProtocolVersion = (uint)Utils.Clone(this.m_serverProtocolVersion);
            clone.m_securityToken = (ChannelSecurityToken)Utils.Clone(this.m_securityToken);
            clone.m_serverNonce = (byte[])Utils.Clone(this.m_serverNonce);

            return clone;
        }
        #endregion

        #region Private Fields
        private ResponseHeader m_responseHeader;
        private uint m_serverProtocolVersion;
        private ChannelSecurityToken m_securityToken;
        private byte[] m_serverNonce;
        #endregion
    }
    #endif
    #endregion

    #region CloseSecureChannelRequest Class
    #if (!OPCUA_EXCLUDE_CloseSecureChannelRequest)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class CloseSecureChannelRequest : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public CloseSecureChannelRequest()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_requestHeader = new RequestHeader();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RequestHeader", IsRequired = false, Order = 1)]
        public RequestHeader RequestHeader
        {
            get
            {
                return m_requestHeader;
            }

            set
            {
                m_requestHeader = value;

                if (value == null)
                {
                    m_requestHeader = new RequestHeader();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.CloseSecureChannelRequest; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.CloseSecureChannelRequest_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.CloseSecureChannelRequest_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("RequestHeader", RequestHeader, typeof(RequestHeader));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            RequestHeader = (RequestHeader)decoder.ReadEncodeable("RequestHeader", typeof(RequestHeader));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            CloseSecureChannelRequest value = encodeable as CloseSecureChannelRequest;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_requestHeader, value.m_requestHeader)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (CloseSecureChannelRequest)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            CloseSecureChannelRequest clone = (CloseSecureChannelRequest)base.MemberwiseClone();

            clone.m_requestHeader = (RequestHeader)Utils.Clone(this.m_requestHeader);

            return clone;
        }
        #endregion

        #region Private Fields
        private RequestHeader m_requestHeader;
        #endregion
    }
    #endif
    #endregion

    #region CloseSecureChannelResponse Class
    #if (!OPCUA_EXCLUDE_CloseSecureChannelResponse)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class CloseSecureChannelResponse : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public CloseSecureChannelResponse()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_responseHeader = new ResponseHeader();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ResponseHeader", IsRequired = false, Order = 1)]
        public ResponseHeader ResponseHeader
        {
            get
            {
                return m_responseHeader;
            }

            set
            {
                m_responseHeader = value;

                if (value == null)
                {
                    m_responseHeader = new ResponseHeader();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.CloseSecureChannelResponse; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.CloseSecureChannelResponse_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.CloseSecureChannelResponse_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("ResponseHeader", ResponseHeader, typeof(ResponseHeader));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ResponseHeader = (ResponseHeader)decoder.ReadEncodeable("ResponseHeader", typeof(ResponseHeader));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            CloseSecureChannelResponse value = encodeable as CloseSecureChannelResponse;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_responseHeader, value.m_responseHeader)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (CloseSecureChannelResponse)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            CloseSecureChannelResponse clone = (CloseSecureChannelResponse)base.MemberwiseClone();

            clone.m_responseHeader = (ResponseHeader)Utils.Clone(this.m_responseHeader);

            return clone;
        }
        #endregion

        #region Private Fields
        private ResponseHeader m_responseHeader;
        #endregion
    }
    #endif
    #endregion

    #region SignedSoftwareCertificate Class
    #if (!OPCUA_EXCLUDE_SignedSoftwareCertificate)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class SignedSoftwareCertificate : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public SignedSoftwareCertificate()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_certificateData = null;
            m_signature = null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "CertificateData", IsRequired = false, Order = 1)]
        public byte[] CertificateData
        {
            get { return m_certificateData;  }
            set { m_certificateData = value; }
        }

        /// <remarks />
        [DataMember(Name = "Signature", IsRequired = false, Order = 2)]
        public byte[] Signature
        {
            get { return m_signature;  }
            set { m_signature = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.SignedSoftwareCertificate; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.SignedSoftwareCertificate_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.SignedSoftwareCertificate_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteByteString("CertificateData", CertificateData);
            encoder.WriteByteString("Signature", Signature);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            CertificateData = decoder.ReadByteString("CertificateData");
            Signature = decoder.ReadByteString("Signature");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            SignedSoftwareCertificate value = encodeable as SignedSoftwareCertificate;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_certificateData, value.m_certificateData)) return false;
            if (!Utils.IsEqual(m_signature, value.m_signature)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (SignedSoftwareCertificate)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            SignedSoftwareCertificate clone = (SignedSoftwareCertificate)base.MemberwiseClone();

            clone.m_certificateData = (byte[])Utils.Clone(this.m_certificateData);
            clone.m_signature = (byte[])Utils.Clone(this.m_signature);

            return clone;
        }
        #endregion

        #region Private Fields
        private byte[] m_certificateData;
        private byte[] m_signature;
        #endregion
    }

    #region SignedSoftwareCertificateCollection Class
    /// <summary>
    /// A collection of SignedSoftwareCertificate objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfSignedSoftwareCertificate", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "SignedSoftwareCertificate")]
    #if !NET_STANDARD
    public partial class SignedSoftwareCertificateCollection : List<SignedSoftwareCertificate>, ICloneable
    #else
    public partial class SignedSoftwareCertificateCollection : List<SignedSoftwareCertificate>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public SignedSoftwareCertificateCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public SignedSoftwareCertificateCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public SignedSoftwareCertificateCollection(IEnumerable<SignedSoftwareCertificate> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator SignedSoftwareCertificateCollection(SignedSoftwareCertificate[] values)
        {
            if (values != null)
            {
                return new SignedSoftwareCertificateCollection(values);
            }

            return new SignedSoftwareCertificateCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator SignedSoftwareCertificate[](SignedSoftwareCertificateCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (SignedSoftwareCertificateCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            SignedSoftwareCertificateCollection clone = new SignedSoftwareCertificateCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((SignedSoftwareCertificate)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region SignatureData Class
    #if (!OPCUA_EXCLUDE_SignatureData)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class SignatureData : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public SignatureData()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_algorithm = null;
            m_signature = null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "Algorithm", IsRequired = false, Order = 1)]
        public string Algorithm
        {
            get { return m_algorithm;  }
            set { m_algorithm = value; }
        }

        /// <remarks />
        [DataMember(Name = "Signature", IsRequired = false, Order = 2)]
        public byte[] Signature
        {
            get { return m_signature;  }
            set { m_signature = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.SignatureData; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.SignatureData_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.SignatureData_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteString("Algorithm", Algorithm);
            encoder.WriteByteString("Signature", Signature);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            Algorithm = decoder.ReadString("Algorithm");
            Signature = decoder.ReadByteString("Signature");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            SignatureData value = encodeable as SignatureData;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_algorithm, value.m_algorithm)) return false;
            if (!Utils.IsEqual(m_signature, value.m_signature)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (SignatureData)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            SignatureData clone = (SignatureData)base.MemberwiseClone();

            clone.m_algorithm = (string)Utils.Clone(this.m_algorithm);
            clone.m_signature = (byte[])Utils.Clone(this.m_signature);

            return clone;
        }
        #endregion

        #region Private Fields
        private string m_algorithm;
        private byte[] m_signature;
        #endregion
    }
    #endif
    #endregion

    #region CreateSessionRequest Class
    #if (!OPCUA_EXCLUDE_CreateSessionRequest)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class CreateSessionRequest : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public CreateSessionRequest()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_requestHeader = new RequestHeader();
            m_clientDescription = new ApplicationDescription();
            m_serverUri = null;
            m_endpointUrl = null;
            m_sessionName = null;
            m_clientNonce = null;
            m_clientCertificate = null;
            m_requestedSessionTimeout = (double)0;
            m_maxResponseMessageSize = (uint)0;
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RequestHeader", IsRequired = false, Order = 1)]
        public RequestHeader RequestHeader
        {
            get
            {
                return m_requestHeader;
            }

            set
            {
                m_requestHeader = value;

                if (value == null)
                {
                    m_requestHeader = new RequestHeader();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ClientDescription", IsRequired = false, Order = 2)]
        public ApplicationDescription ClientDescription
        {
            get
            {
                return m_clientDescription;
            }

            set
            {
                m_clientDescription = value;

                if (value == null)
                {
                    m_clientDescription = new ApplicationDescription();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "ServerUri", IsRequired = false, Order = 3)]
        public string ServerUri
        {
            get { return m_serverUri;  }
            set { m_serverUri = value; }
        }

        /// <remarks />
        [DataMember(Name = "EndpointUrl", IsRequired = false, Order = 4)]
        public string EndpointUrl
        {
            get { return m_endpointUrl;  }
            set { m_endpointUrl = value; }
        }

        /// <remarks />
        [DataMember(Name = "SessionName", IsRequired = false, Order = 5)]
        public string SessionName
        {
            get { return m_sessionName;  }
            set { m_sessionName = value; }
        }

        /// <remarks />
        [DataMember(Name = "ClientNonce", IsRequired = false, Order = 6)]
        public byte[] ClientNonce
        {
            get { return m_clientNonce;  }
            set { m_clientNonce = value; }
        }

        /// <remarks />
        [DataMember(Name = "ClientCertificate", IsRequired = false, Order = 7)]
        public byte[] ClientCertificate
        {
            get { return m_clientCertificate;  }
            set { m_clientCertificate = value; }
        }

        /// <remarks />
        [DataMember(Name = "RequestedSessionTimeout", IsRequired = false, Order = 8)]
        public double RequestedSessionTimeout
        {
            get { return m_requestedSessionTimeout;  }
            set { m_requestedSessionTimeout = value; }
        }

        /// <remarks />
        [DataMember(Name = "MaxResponseMessageSize", IsRequired = false, Order = 9)]
        public uint MaxResponseMessageSize
        {
            get { return m_maxResponseMessageSize;  }
            set { m_maxResponseMessageSize = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.CreateSessionRequest; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.CreateSessionRequest_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.CreateSessionRequest_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("RequestHeader", RequestHeader, typeof(RequestHeader));
            encoder.WriteEncodeable("ClientDescription", ClientDescription, typeof(ApplicationDescription));
            encoder.WriteString("ServerUri", ServerUri);
            encoder.WriteString("EndpointUrl", EndpointUrl);
            encoder.WriteString("SessionName", SessionName);
            encoder.WriteByteString("ClientNonce", ClientNonce);
            encoder.WriteByteString("ClientCertificate", ClientCertificate);
            encoder.WriteDouble("RequestedSessionTimeout", RequestedSessionTimeout);
            encoder.WriteUInt32("MaxResponseMessageSize", MaxResponseMessageSize);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            RequestHeader = (RequestHeader)decoder.ReadEncodeable("RequestHeader", typeof(RequestHeader));
            ClientDescription = (ApplicationDescription)decoder.ReadEncodeable("ClientDescription", typeof(ApplicationDescription));
            ServerUri = decoder.ReadString("ServerUri");
            EndpointUrl = decoder.ReadString("EndpointUrl");
            SessionName = decoder.ReadString("SessionName");
            ClientNonce = decoder.ReadByteString("ClientNonce");
            ClientCertificate = decoder.ReadByteString("ClientCertificate");
            RequestedSessionTimeout = decoder.ReadDouble("RequestedSessionTimeout");
            MaxResponseMessageSize = decoder.ReadUInt32("MaxResponseMessageSize");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            CreateSessionRequest value = encodeable as CreateSessionRequest;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_requestHeader, value.m_requestHeader)) return false;
            if (!Utils.IsEqual(m_clientDescription, value.m_clientDescription)) return false;
            if (!Utils.IsEqual(m_serverUri, value.m_serverUri)) return false;
            if (!Utils.IsEqual(m_endpointUrl, value.m_endpointUrl)) return false;
            if (!Utils.IsEqual(m_sessionName, value.m_sessionName)) return false;
            if (!Utils.IsEqual(m_clientNonce, value.m_clientNonce)) return false;
            if (!Utils.IsEqual(m_clientCertificate, value.m_clientCertificate)) return false;
            if (!Utils.IsEqual(m_requestedSessionTimeout, value.m_requestedSessionTimeout)) return false;
            if (!Utils.IsEqual(m_maxResponseMessageSize, value.m_maxResponseMessageSize)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (CreateSessionRequest)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            CreateSessionRequest clone = (CreateSessionRequest)base.MemberwiseClone();

            clone.m_requestHeader = (RequestHeader)Utils.Clone(this.m_requestHeader);
            clone.m_clientDescription = (ApplicationDescription)Utils.Clone(this.m_clientDescription);
            clone.m_serverUri = (string)Utils.Clone(this.m_serverUri);
            clone.m_endpointUrl = (string)Utils.Clone(this.m_endpointUrl);
            clone.m_sessionName = (string)Utils.Clone(this.m_sessionName);
            clone.m_clientNonce = (byte[])Utils.Clone(this.m_clientNonce);
            clone.m_clientCertificate = (byte[])Utils.Clone(this.m_clientCertificate);
            clone.m_requestedSessionTimeout = (double)Utils.Clone(this.m_requestedSessionTimeout);
            clone.m_maxResponseMessageSize = (uint)Utils.Clone(this.m_maxResponseMessageSize);

            return clone;
        }
        #endregion

        #region Private Fields
        private RequestHeader m_requestHeader;
        private ApplicationDescription m_clientDescription;
        private string m_serverUri;
        private string m_endpointUrl;
        private string m_sessionName;
        private byte[] m_clientNonce;
        private byte[] m_clientCertificate;
        private double m_requestedSessionTimeout;
        private uint m_maxResponseMessageSize;
        #endregion
    }
    #endif
    #endregion

    #region CreateSessionResponse Class
    #if (!OPCUA_EXCLUDE_CreateSessionResponse)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class CreateSessionResponse : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public CreateSessionResponse()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_responseHeader = new ResponseHeader();
            m_sessionId = null;
            m_authenticationToken = null;
            m_revisedSessionTimeout = (double)0;
            m_serverNonce = null;
            m_serverCertificate = null;
            m_serverEndpoints = new EndpointDescriptionCollection();
            m_serverSoftwareCertificates = new SignedSoftwareCertificateCollection();
            m_serverSignature = new SignatureData();
            m_maxRequestMessageSize = (uint)0;
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ResponseHeader", IsRequired = false, Order = 1)]
        public ResponseHeader ResponseHeader
        {
            get
            {
                return m_responseHeader;
            }

            set
            {
                m_responseHeader = value;

                if (value == null)
                {
                    m_responseHeader = new ResponseHeader();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "SessionId", IsRequired = false, Order = 2)]
        public NodeId SessionId
        {
            get { return m_sessionId;  }
            set { m_sessionId = value; }
        }

        /// <remarks />
        [DataMember(Name = "AuthenticationToken", IsRequired = false, Order = 3)]
        public NodeId AuthenticationToken
        {
            get { return m_authenticationToken;  }
            set { m_authenticationToken = value; }
        }

        /// <remarks />
        [DataMember(Name = "RevisedSessionTimeout", IsRequired = false, Order = 4)]
        public double RevisedSessionTimeout
        {
            get { return m_revisedSessionTimeout;  }
            set { m_revisedSessionTimeout = value; }
        }

        /// <remarks />
        [DataMember(Name = "ServerNonce", IsRequired = false, Order = 5)]
        public byte[] ServerNonce
        {
            get { return m_serverNonce;  }
            set { m_serverNonce = value; }
        }

        /// <remarks />
        [DataMember(Name = "ServerCertificate", IsRequired = false, Order = 6)]
        public byte[] ServerCertificate
        {
            get { return m_serverCertificate;  }
            set { m_serverCertificate = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ServerEndpoints", IsRequired = false, Order = 7)]
        public EndpointDescriptionCollection ServerEndpoints
        {
            get
            {
                return m_serverEndpoints;
            }

            set
            {
                m_serverEndpoints = value;

                if (value == null)
                {
                    m_serverEndpoints = new EndpointDescriptionCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ServerSoftwareCertificates", IsRequired = false, Order = 8)]
        public SignedSoftwareCertificateCollection ServerSoftwareCertificates
        {
            get
            {
                return m_serverSoftwareCertificates;
            }

            set
            {
                m_serverSoftwareCertificates = value;

                if (value == null)
                {
                    m_serverSoftwareCertificates = new SignedSoftwareCertificateCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ServerSignature", IsRequired = false, Order = 9)]
        public SignatureData ServerSignature
        {
            get
            {
                return m_serverSignature;
            }

            set
            {
                m_serverSignature = value;

                if (value == null)
                {
                    m_serverSignature = new SignatureData();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "MaxRequestMessageSize", IsRequired = false, Order = 10)]
        public uint MaxRequestMessageSize
        {
            get { return m_maxRequestMessageSize;  }
            set { m_maxRequestMessageSize = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.CreateSessionResponse; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.CreateSessionResponse_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.CreateSessionResponse_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("ResponseHeader", ResponseHeader, typeof(ResponseHeader));
            encoder.WriteNodeId("SessionId", SessionId);
            encoder.WriteNodeId("AuthenticationToken", AuthenticationToken);
            encoder.WriteDouble("RevisedSessionTimeout", RevisedSessionTimeout);
            encoder.WriteByteString("ServerNonce", ServerNonce);
            encoder.WriteByteString("ServerCertificate", ServerCertificate);
            encoder.WriteEncodeableArray("ServerEndpoints", ServerEndpoints.ToArray(), typeof(EndpointDescription));
            encoder.WriteEncodeableArray("ServerSoftwareCertificates", ServerSoftwareCertificates.ToArray(), typeof(SignedSoftwareCertificate));
            encoder.WriteEncodeable("ServerSignature", ServerSignature, typeof(SignatureData));
            encoder.WriteUInt32("MaxRequestMessageSize", MaxRequestMessageSize);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ResponseHeader = (ResponseHeader)decoder.ReadEncodeable("ResponseHeader", typeof(ResponseHeader));
            SessionId = decoder.ReadNodeId("SessionId");
            AuthenticationToken = decoder.ReadNodeId("AuthenticationToken");
            RevisedSessionTimeout = decoder.ReadDouble("RevisedSessionTimeout");
            ServerNonce = decoder.ReadByteString("ServerNonce");
            ServerCertificate = decoder.ReadByteString("ServerCertificate");
            ServerEndpoints = (EndpointDescriptionCollection)decoder.ReadEncodeableArray("ServerEndpoints", typeof(EndpointDescription));
            ServerSoftwareCertificates = (SignedSoftwareCertificateCollection)decoder.ReadEncodeableArray("ServerSoftwareCertificates", typeof(SignedSoftwareCertificate));
            ServerSignature = (SignatureData)decoder.ReadEncodeable("ServerSignature", typeof(SignatureData));
            MaxRequestMessageSize = decoder.ReadUInt32("MaxRequestMessageSize");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            CreateSessionResponse value = encodeable as CreateSessionResponse;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_responseHeader, value.m_responseHeader)) return false;
            if (!Utils.IsEqual(m_sessionId, value.m_sessionId)) return false;
            if (!Utils.IsEqual(m_authenticationToken, value.m_authenticationToken)) return false;
            if (!Utils.IsEqual(m_revisedSessionTimeout, value.m_revisedSessionTimeout)) return false;
            if (!Utils.IsEqual(m_serverNonce, value.m_serverNonce)) return false;
            if (!Utils.IsEqual(m_serverCertificate, value.m_serverCertificate)) return false;
            if (!Utils.IsEqual(m_serverEndpoints, value.m_serverEndpoints)) return false;
            if (!Utils.IsEqual(m_serverSoftwareCertificates, value.m_serverSoftwareCertificates)) return false;
            if (!Utils.IsEqual(m_serverSignature, value.m_serverSignature)) return false;
            if (!Utils.IsEqual(m_maxRequestMessageSize, value.m_maxRequestMessageSize)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (CreateSessionResponse)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            CreateSessionResponse clone = (CreateSessionResponse)base.MemberwiseClone();

            clone.m_responseHeader = (ResponseHeader)Utils.Clone(this.m_responseHeader);
            clone.m_sessionId = (NodeId)Utils.Clone(this.m_sessionId);
            clone.m_authenticationToken = (NodeId)Utils.Clone(this.m_authenticationToken);
            clone.m_revisedSessionTimeout = (double)Utils.Clone(this.m_revisedSessionTimeout);
            clone.m_serverNonce = (byte[])Utils.Clone(this.m_serverNonce);
            clone.m_serverCertificate = (byte[])Utils.Clone(this.m_serverCertificate);
            clone.m_serverEndpoints = (EndpointDescriptionCollection)Utils.Clone(this.m_serverEndpoints);
            clone.m_serverSoftwareCertificates = (SignedSoftwareCertificateCollection)Utils.Clone(this.m_serverSoftwareCertificates);
            clone.m_serverSignature = (SignatureData)Utils.Clone(this.m_serverSignature);
            clone.m_maxRequestMessageSize = (uint)Utils.Clone(this.m_maxRequestMessageSize);

            return clone;
        }
        #endregion

        #region Private Fields
        private ResponseHeader m_responseHeader;
        private NodeId m_sessionId;
        private NodeId m_authenticationToken;
        private double m_revisedSessionTimeout;
        private byte[] m_serverNonce;
        private byte[] m_serverCertificate;
        private EndpointDescriptionCollection m_serverEndpoints;
        private SignedSoftwareCertificateCollection m_serverSoftwareCertificates;
        private SignatureData m_serverSignature;
        private uint m_maxRequestMessageSize;
        #endregion
    }
    #endif
    #endregion

    #region UserIdentityToken Class
    #if (!OPCUA_EXCLUDE_UserIdentityToken)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class UserIdentityToken : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public UserIdentityToken()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_policyId = null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "PolicyId", IsRequired = false, Order = 1)]
        public string PolicyId
        {
            get { return m_policyId;  }
            set { m_policyId = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.UserIdentityToken; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.UserIdentityToken_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.UserIdentityToken_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteString("PolicyId", PolicyId);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            PolicyId = decoder.ReadString("PolicyId");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            UserIdentityToken value = encodeable as UserIdentityToken;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_policyId, value.m_policyId)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (UserIdentityToken)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            UserIdentityToken clone = (UserIdentityToken)base.MemberwiseClone();

            clone.m_policyId = (string)Utils.Clone(this.m_policyId);

            return clone;
        }
        #endregion

        #region Private Fields
        private string m_policyId;
        #endregion
    }
    #endif
    #endregion

    #region AnonymousIdentityToken Class
    #if (!OPCUA_EXCLUDE_AnonymousIdentityToken)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class AnonymousIdentityToken : UserIdentityToken
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public AnonymousIdentityToken()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
        }
        #endregion

        #region Public Properties
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.AnonymousIdentityToken; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.AnonymousIdentityToken_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.AnonymousIdentityToken_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            AnonymousIdentityToken value = encodeable as AnonymousIdentityToken;

            if (value == null)
            {
                return false;
            }


            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (AnonymousIdentityToken)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            AnonymousIdentityToken clone = (AnonymousIdentityToken)base.MemberwiseClone();


            return clone;
        }
        #endregion

        #region Private Fields
        #endregion
    }
    #endif
    #endregion

    #region UserNameIdentityToken Class
    #if (!OPCUA_EXCLUDE_UserNameIdentityToken)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class UserNameIdentityToken : UserIdentityToken
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public UserNameIdentityToken()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_userName = null;
            m_password = null;
            m_encryptionAlgorithm = null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "UserName", IsRequired = false, Order = 1)]
        public string UserName
        {
            get { return m_userName;  }
            set { m_userName = value; }
        }

        /// <remarks />
        [DataMember(Name = "Password", IsRequired = false, Order = 2)]
        public byte[] Password
        {
            get { return m_password;  }
            set { m_password = value; }
        }

        /// <remarks />
        [DataMember(Name = "EncryptionAlgorithm", IsRequired = false, Order = 3)]
        public string EncryptionAlgorithm
        {
            get { return m_encryptionAlgorithm;  }
            set { m_encryptionAlgorithm = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.UserNameIdentityToken; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.UserNameIdentityToken_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.UserNameIdentityToken_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteString("UserName", UserName);
            encoder.WriteByteString("Password", Password);
            encoder.WriteString("EncryptionAlgorithm", EncryptionAlgorithm);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            UserName = decoder.ReadString("UserName");
            Password = decoder.ReadByteString("Password");
            EncryptionAlgorithm = decoder.ReadString("EncryptionAlgorithm");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            UserNameIdentityToken value = encodeable as UserNameIdentityToken;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_userName, value.m_userName)) return false;
            if (!Utils.IsEqual(m_password, value.m_password)) return false;
            if (!Utils.IsEqual(m_encryptionAlgorithm, value.m_encryptionAlgorithm)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (UserNameIdentityToken)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            UserNameIdentityToken clone = (UserNameIdentityToken)base.MemberwiseClone();

            clone.m_userName = (string)Utils.Clone(this.m_userName);
            clone.m_password = (byte[])Utils.Clone(this.m_password);
            clone.m_encryptionAlgorithm = (string)Utils.Clone(this.m_encryptionAlgorithm);

            return clone;
        }
        #endregion

        #region Private Fields
        private string m_userName;
        private byte[] m_password;
        private string m_encryptionAlgorithm;
        #endregion
    }
    #endif
    #endregion

    #region X509IdentityToken Class
    #if (!OPCUA_EXCLUDE_X509IdentityToken)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class X509IdentityToken : UserIdentityToken
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public X509IdentityToken()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_certificateData = null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "CertificateData", IsRequired = false, Order = 1)]
        public byte[] CertificateData
        {
            get { return m_certificateData;  }
            set { m_certificateData = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.X509IdentityToken; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.X509IdentityToken_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.X509IdentityToken_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteByteString("CertificateData", CertificateData);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            CertificateData = decoder.ReadByteString("CertificateData");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            X509IdentityToken value = encodeable as X509IdentityToken;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_certificateData, value.m_certificateData)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (X509IdentityToken)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            X509IdentityToken clone = (X509IdentityToken)base.MemberwiseClone();

            clone.m_certificateData = (byte[])Utils.Clone(this.m_certificateData);

            return clone;
        }
        #endregion

        #region Private Fields
        private byte[] m_certificateData;
        #endregion
    }
    #endif
    #endregion

    #region IssuedIdentityToken Class
    #if (!OPCUA_EXCLUDE_IssuedIdentityToken)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class IssuedIdentityToken : UserIdentityToken
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public IssuedIdentityToken()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_tokenData = null;
            m_encryptionAlgorithm = null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "TokenData", IsRequired = false, Order = 1)]
        public byte[] TokenData
        {
            get { return m_tokenData;  }
            set { m_tokenData = value; }
        }

        /// <remarks />
        [DataMember(Name = "EncryptionAlgorithm", IsRequired = false, Order = 2)]
        public string EncryptionAlgorithm
        {
            get { return m_encryptionAlgorithm;  }
            set { m_encryptionAlgorithm = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.IssuedIdentityToken; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.IssuedIdentityToken_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.IssuedIdentityToken_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteByteString("TokenData", TokenData);
            encoder.WriteString("EncryptionAlgorithm", EncryptionAlgorithm);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            TokenData = decoder.ReadByteString("TokenData");
            EncryptionAlgorithm = decoder.ReadString("EncryptionAlgorithm");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            IssuedIdentityToken value = encodeable as IssuedIdentityToken;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_tokenData, value.m_tokenData)) return false;
            if (!Utils.IsEqual(m_encryptionAlgorithm, value.m_encryptionAlgorithm)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (IssuedIdentityToken)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            IssuedIdentityToken clone = (IssuedIdentityToken)base.MemberwiseClone();

            clone.m_tokenData = (byte[])Utils.Clone(this.m_tokenData);
            clone.m_encryptionAlgorithm = (string)Utils.Clone(this.m_encryptionAlgorithm);

            return clone;
        }
        #endregion

        #region Private Fields
        private byte[] m_tokenData;
        private string m_encryptionAlgorithm;
        #endregion
    }
    #endif
    #endregion

    #region ActivateSessionRequest Class
    #if (!OPCUA_EXCLUDE_ActivateSessionRequest)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ActivateSessionRequest : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ActivateSessionRequest()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_requestHeader = new RequestHeader();
            m_clientSignature = new SignatureData();
            m_clientSoftwareCertificates = new SignedSoftwareCertificateCollection();
            m_localeIds = new StringCollection();
            m_userIdentityToken = null;
            m_userTokenSignature = new SignatureData();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RequestHeader", IsRequired = false, Order = 1)]
        public RequestHeader RequestHeader
        {
            get
            {
                return m_requestHeader;
            }

            set
            {
                m_requestHeader = value;

                if (value == null)
                {
                    m_requestHeader = new RequestHeader();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ClientSignature", IsRequired = false, Order = 2)]
        public SignatureData ClientSignature
        {
            get
            {
                return m_clientSignature;
            }

            set
            {
                m_clientSignature = value;

                if (value == null)
                {
                    m_clientSignature = new SignatureData();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ClientSoftwareCertificates", IsRequired = false, Order = 3)]
        public SignedSoftwareCertificateCollection ClientSoftwareCertificates
        {
            get
            {
                return m_clientSoftwareCertificates;
            }

            set
            {
                m_clientSoftwareCertificates = value;

                if (value == null)
                {
                    m_clientSoftwareCertificates = new SignedSoftwareCertificateCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "LocaleIds", IsRequired = false, Order = 4)]
        public StringCollection LocaleIds
        {
            get
            {
                return m_localeIds;
            }

            set
            {
                m_localeIds = value;

                if (value == null)
                {
                    m_localeIds = new StringCollection();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "UserIdentityToken", IsRequired = false, Order = 5)]
        public ExtensionObject UserIdentityToken
        {
            get { return m_userIdentityToken;  }
            set { m_userIdentityToken = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "UserTokenSignature", IsRequired = false, Order = 6)]
        public SignatureData UserTokenSignature
        {
            get
            {
                return m_userTokenSignature;
            }

            set
            {
                m_userTokenSignature = value;

                if (value == null)
                {
                    m_userTokenSignature = new SignatureData();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ActivateSessionRequest; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ActivateSessionRequest_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ActivateSessionRequest_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("RequestHeader", RequestHeader, typeof(RequestHeader));
            encoder.WriteEncodeable("ClientSignature", ClientSignature, typeof(SignatureData));
            encoder.WriteEncodeableArray("ClientSoftwareCertificates", ClientSoftwareCertificates.ToArray(), typeof(SignedSoftwareCertificate));
            encoder.WriteStringArray("LocaleIds", LocaleIds);
            encoder.WriteExtensionObject("UserIdentityToken", UserIdentityToken);
            encoder.WriteEncodeable("UserTokenSignature", UserTokenSignature, typeof(SignatureData));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            RequestHeader = (RequestHeader)decoder.ReadEncodeable("RequestHeader", typeof(RequestHeader));
            ClientSignature = (SignatureData)decoder.ReadEncodeable("ClientSignature", typeof(SignatureData));
            ClientSoftwareCertificates = (SignedSoftwareCertificateCollection)decoder.ReadEncodeableArray("ClientSoftwareCertificates", typeof(SignedSoftwareCertificate));
            LocaleIds = decoder.ReadStringArray("LocaleIds");
            UserIdentityToken = decoder.ReadExtensionObject("UserIdentityToken");
            UserTokenSignature = (SignatureData)decoder.ReadEncodeable("UserTokenSignature", typeof(SignatureData));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ActivateSessionRequest value = encodeable as ActivateSessionRequest;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_requestHeader, value.m_requestHeader)) return false;
            if (!Utils.IsEqual(m_clientSignature, value.m_clientSignature)) return false;
            if (!Utils.IsEqual(m_clientSoftwareCertificates, value.m_clientSoftwareCertificates)) return false;
            if (!Utils.IsEqual(m_localeIds, value.m_localeIds)) return false;
            if (!Utils.IsEqual(m_userIdentityToken, value.m_userIdentityToken)) return false;
            if (!Utils.IsEqual(m_userTokenSignature, value.m_userTokenSignature)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (ActivateSessionRequest)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ActivateSessionRequest clone = (ActivateSessionRequest)base.MemberwiseClone();

            clone.m_requestHeader = (RequestHeader)Utils.Clone(this.m_requestHeader);
            clone.m_clientSignature = (SignatureData)Utils.Clone(this.m_clientSignature);
            clone.m_clientSoftwareCertificates = (SignedSoftwareCertificateCollection)Utils.Clone(this.m_clientSoftwareCertificates);
            clone.m_localeIds = (StringCollection)Utils.Clone(this.m_localeIds);
            clone.m_userIdentityToken = (ExtensionObject)Utils.Clone(this.m_userIdentityToken);
            clone.m_userTokenSignature = (SignatureData)Utils.Clone(this.m_userTokenSignature);

            return clone;
        }
        #endregion

        #region Private Fields
        private RequestHeader m_requestHeader;
        private SignatureData m_clientSignature;
        private SignedSoftwareCertificateCollection m_clientSoftwareCertificates;
        private StringCollection m_localeIds;
        private ExtensionObject m_userIdentityToken;
        private SignatureData m_userTokenSignature;
        #endregion
    }
    #endif
    #endregion

    #region ActivateSessionResponse Class
    #if (!OPCUA_EXCLUDE_ActivateSessionResponse)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ActivateSessionResponse : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ActivateSessionResponse()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_responseHeader = new ResponseHeader();
            m_serverNonce = null;
            m_results = new StatusCodeCollection();
            m_diagnosticInfos = new DiagnosticInfoCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ResponseHeader", IsRequired = false, Order = 1)]
        public ResponseHeader ResponseHeader
        {
            get
            {
                return m_responseHeader;
            }

            set
            {
                m_responseHeader = value;

                if (value == null)
                {
                    m_responseHeader = new ResponseHeader();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "ServerNonce", IsRequired = false, Order = 2)]
        public byte[] ServerNonce
        {
            get { return m_serverNonce;  }
            set { m_serverNonce = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "Results", IsRequired = false, Order = 3)]
        public StatusCodeCollection Results
        {
            get
            {
                return m_results;
            }

            set
            {
                m_results = value;

                if (value == null)
                {
                    m_results = new StatusCodeCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "DiagnosticInfos", IsRequired = false, Order = 4)]
        public DiagnosticInfoCollection DiagnosticInfos
        {
            get
            {
                return m_diagnosticInfos;
            }

            set
            {
                m_diagnosticInfos = value;

                if (value == null)
                {
                    m_diagnosticInfos = new DiagnosticInfoCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ActivateSessionResponse; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ActivateSessionResponse_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ActivateSessionResponse_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("ResponseHeader", ResponseHeader, typeof(ResponseHeader));
            encoder.WriteByteString("ServerNonce", ServerNonce);
            encoder.WriteStatusCodeArray("Results", Results);
            encoder.WriteDiagnosticInfoArray("DiagnosticInfos", DiagnosticInfos);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ResponseHeader = (ResponseHeader)decoder.ReadEncodeable("ResponseHeader", typeof(ResponseHeader));
            ServerNonce = decoder.ReadByteString("ServerNonce");
            Results = decoder.ReadStatusCodeArray("Results");
            DiagnosticInfos = decoder.ReadDiagnosticInfoArray("DiagnosticInfos");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ActivateSessionResponse value = encodeable as ActivateSessionResponse;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_responseHeader, value.m_responseHeader)) return false;
            if (!Utils.IsEqual(m_serverNonce, value.m_serverNonce)) return false;
            if (!Utils.IsEqual(m_results, value.m_results)) return false;
            if (!Utils.IsEqual(m_diagnosticInfos, value.m_diagnosticInfos)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (ActivateSessionResponse)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ActivateSessionResponse clone = (ActivateSessionResponse)base.MemberwiseClone();

            clone.m_responseHeader = (ResponseHeader)Utils.Clone(this.m_responseHeader);
            clone.m_serverNonce = (byte[])Utils.Clone(this.m_serverNonce);
            clone.m_results = (StatusCodeCollection)Utils.Clone(this.m_results);
            clone.m_diagnosticInfos = (DiagnosticInfoCollection)Utils.Clone(this.m_diagnosticInfos);

            return clone;
        }
        #endregion

        #region Private Fields
        private ResponseHeader m_responseHeader;
        private byte[] m_serverNonce;
        private StatusCodeCollection m_results;
        private DiagnosticInfoCollection m_diagnosticInfos;
        #endregion
    }
    #endif
    #endregion

    #region CloseSessionRequest Class
    #if (!OPCUA_EXCLUDE_CloseSessionRequest)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class CloseSessionRequest : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public CloseSessionRequest()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_requestHeader = new RequestHeader();
            m_deleteSubscriptions = true;
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RequestHeader", IsRequired = false, Order = 1)]
        public RequestHeader RequestHeader
        {
            get
            {
                return m_requestHeader;
            }

            set
            {
                m_requestHeader = value;

                if (value == null)
                {
                    m_requestHeader = new RequestHeader();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "DeleteSubscriptions", IsRequired = false, Order = 2)]
        public bool DeleteSubscriptions
        {
            get { return m_deleteSubscriptions;  }
            set { m_deleteSubscriptions = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.CloseSessionRequest; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.CloseSessionRequest_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.CloseSessionRequest_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("RequestHeader", RequestHeader, typeof(RequestHeader));
            encoder.WriteBoolean("DeleteSubscriptions", DeleteSubscriptions);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            RequestHeader = (RequestHeader)decoder.ReadEncodeable("RequestHeader", typeof(RequestHeader));
            DeleteSubscriptions = decoder.ReadBoolean("DeleteSubscriptions");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            CloseSessionRequest value = encodeable as CloseSessionRequest;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_requestHeader, value.m_requestHeader)) return false;
            if (!Utils.IsEqual(m_deleteSubscriptions, value.m_deleteSubscriptions)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (CloseSessionRequest)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            CloseSessionRequest clone = (CloseSessionRequest)base.MemberwiseClone();

            clone.m_requestHeader = (RequestHeader)Utils.Clone(this.m_requestHeader);
            clone.m_deleteSubscriptions = (bool)Utils.Clone(this.m_deleteSubscriptions);

            return clone;
        }
        #endregion

        #region Private Fields
        private RequestHeader m_requestHeader;
        private bool m_deleteSubscriptions;
        #endregion
    }
    #endif
    #endregion

    #region CloseSessionResponse Class
    #if (!OPCUA_EXCLUDE_CloseSessionResponse)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class CloseSessionResponse : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public CloseSessionResponse()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_responseHeader = new ResponseHeader();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ResponseHeader", IsRequired = false, Order = 1)]
        public ResponseHeader ResponseHeader
        {
            get
            {
                return m_responseHeader;
            }

            set
            {
                m_responseHeader = value;

                if (value == null)
                {
                    m_responseHeader = new ResponseHeader();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.CloseSessionResponse; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.CloseSessionResponse_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.CloseSessionResponse_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("ResponseHeader", ResponseHeader, typeof(ResponseHeader));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ResponseHeader = (ResponseHeader)decoder.ReadEncodeable("ResponseHeader", typeof(ResponseHeader));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            CloseSessionResponse value = encodeable as CloseSessionResponse;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_responseHeader, value.m_responseHeader)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (CloseSessionResponse)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            CloseSessionResponse clone = (CloseSessionResponse)base.MemberwiseClone();

            clone.m_responseHeader = (ResponseHeader)Utils.Clone(this.m_responseHeader);

            return clone;
        }
        #endregion

        #region Private Fields
        private ResponseHeader m_responseHeader;
        #endregion
    }
    #endif
    #endregion

    #region CancelRequest Class
    #if (!OPCUA_EXCLUDE_CancelRequest)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class CancelRequest : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public CancelRequest()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_requestHeader = new RequestHeader();
            m_requestHandle = (uint)0;
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RequestHeader", IsRequired = false, Order = 1)]
        public RequestHeader RequestHeader
        {
            get
            {
                return m_requestHeader;
            }

            set
            {
                m_requestHeader = value;

                if (value == null)
                {
                    m_requestHeader = new RequestHeader();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "RequestHandle", IsRequired = false, Order = 2)]
        public uint RequestHandle
        {
            get { return m_requestHandle;  }
            set { m_requestHandle = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.CancelRequest; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.CancelRequest_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.CancelRequest_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("RequestHeader", RequestHeader, typeof(RequestHeader));
            encoder.WriteUInt32("RequestHandle", RequestHandle);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            RequestHeader = (RequestHeader)decoder.ReadEncodeable("RequestHeader", typeof(RequestHeader));
            RequestHandle = decoder.ReadUInt32("RequestHandle");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            CancelRequest value = encodeable as CancelRequest;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_requestHeader, value.m_requestHeader)) return false;
            if (!Utils.IsEqual(m_requestHandle, value.m_requestHandle)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (CancelRequest)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            CancelRequest clone = (CancelRequest)base.MemberwiseClone();

            clone.m_requestHeader = (RequestHeader)Utils.Clone(this.m_requestHeader);
            clone.m_requestHandle = (uint)Utils.Clone(this.m_requestHandle);

            return clone;
        }
        #endregion

        #region Private Fields
        private RequestHeader m_requestHeader;
        private uint m_requestHandle;
        #endregion
    }
    #endif
    #endregion

    #region CancelResponse Class
    #if (!OPCUA_EXCLUDE_CancelResponse)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class CancelResponse : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public CancelResponse()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_responseHeader = new ResponseHeader();
            m_cancelCount = (uint)0;
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ResponseHeader", IsRequired = false, Order = 1)]
        public ResponseHeader ResponseHeader
        {
            get
            {
                return m_responseHeader;
            }

            set
            {
                m_responseHeader = value;

                if (value == null)
                {
                    m_responseHeader = new ResponseHeader();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "CancelCount", IsRequired = false, Order = 2)]
        public uint CancelCount
        {
            get { return m_cancelCount;  }
            set { m_cancelCount = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.CancelResponse; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.CancelResponse_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.CancelResponse_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("ResponseHeader", ResponseHeader, typeof(ResponseHeader));
            encoder.WriteUInt32("CancelCount", CancelCount);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ResponseHeader = (ResponseHeader)decoder.ReadEncodeable("ResponseHeader", typeof(ResponseHeader));
            CancelCount = decoder.ReadUInt32("CancelCount");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            CancelResponse value = encodeable as CancelResponse;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_responseHeader, value.m_responseHeader)) return false;
            if (!Utils.IsEqual(m_cancelCount, value.m_cancelCount)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (CancelResponse)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            CancelResponse clone = (CancelResponse)base.MemberwiseClone();

            clone.m_responseHeader = (ResponseHeader)Utils.Clone(this.m_responseHeader);
            clone.m_cancelCount = (uint)Utils.Clone(this.m_cancelCount);

            return clone;
        }
        #endregion

        #region Private Fields
        private ResponseHeader m_responseHeader;
        private uint m_cancelCount;
        #endregion
    }
    #endif
    #endregion

    #region NodeAttributesMask Enumeration
    #if (!OPCUA_EXCLUDE_NodeAttributesMask)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public enum NodeAttributesMask
    {
        /// <remarks />
        [EnumMember(Value = "None_0")]
        None = 0,

        /// <remarks />
        [EnumMember(Value = "AccessLevel_1")]
        AccessLevel = 1,

        /// <remarks />
        [EnumMember(Value = "ArrayDimensions_2")]
        ArrayDimensions = 2,

        /// <remarks />
        [EnumMember(Value = "BrowseName_4")]
        BrowseName = 4,

        /// <remarks />
        [EnumMember(Value = "ContainsNoLoops_8")]
        ContainsNoLoops = 8,

        /// <remarks />
        [EnumMember(Value = "DataType_16")]
        DataType = 16,

        /// <remarks />
        [EnumMember(Value = "Description_32")]
        Description = 32,

        /// <remarks />
        [EnumMember(Value = "DisplayName_64")]
        DisplayName = 64,

        /// <remarks />
        [EnumMember(Value = "EventNotifier_128")]
        EventNotifier = 128,

        /// <remarks />
        [EnumMember(Value = "Executable_256")]
        Executable = 256,

        /// <remarks />
        [EnumMember(Value = "Historizing_512")]
        Historizing = 512,

        /// <remarks />
        [EnumMember(Value = "InverseName_1024")]
        InverseName = 1024,

        /// <remarks />
        [EnumMember(Value = "IsAbstract_2048")]
        IsAbstract = 2048,

        /// <remarks />
        [EnumMember(Value = "MinimumSamplingInterval_4096")]
        MinimumSamplingInterval = 4096,

        /// <remarks />
        [EnumMember(Value = "NodeClass_8192")]
        NodeClass = 8192,

        /// <remarks />
        [EnumMember(Value = "NodeId_16384")]
        NodeId = 16384,

        /// <remarks />
        [EnumMember(Value = "Symmetric_32768")]
        Symmetric = 32768,

        /// <remarks />
        [EnumMember(Value = "UserAccessLevel_65536")]
        UserAccessLevel = 65536,

        /// <remarks />
        [EnumMember(Value = "UserExecutable_131072")]
        UserExecutable = 131072,

        /// <remarks />
        [EnumMember(Value = "UserWriteMask_262144")]
        UserWriteMask = 262144,

        /// <remarks />
        [EnumMember(Value = "ValueRank_524288")]
        ValueRank = 524288,

        /// <remarks />
        [EnumMember(Value = "WriteMask_1048576")]
        WriteMask = 1048576,

        /// <remarks />
        [EnumMember(Value = "Value_2097152")]
        Value = 2097152,

        /// <remarks />
        [EnumMember(Value = "DataTypeDefinition_4194304")]
        DataTypeDefinition = 4194304,

        /// <remarks />
        [EnumMember(Value = "RolePermissions_8388608")]
        RolePermissions = 8388608,

        /// <remarks />
        [EnumMember(Value = "AccessRestrictions_16777216")]
        AccessRestrictions = 16777216,

        /// <remarks />
        [EnumMember(Value = "All_33554431")]
        All = 33554431,

        /// <remarks />
        [EnumMember(Value = "BaseNode_26501220")]
        BaseNode = 26501220,

        /// <remarks />
        [EnumMember(Value = "Object_26501348")]
        Object = 26501348,

        /// <remarks />
        [EnumMember(Value = "ObjectType_26503268")]
        ObjectType = 26503268,

        /// <remarks />
        [EnumMember(Value = "Variable_26571383")]
        Variable = 26571383,

        /// <remarks />
        [EnumMember(Value = "VariableType_28600438")]
        VariableType = 28600438,

        /// <remarks />
        [EnumMember(Value = "Method_26632548")]
        Method = 26632548,

        /// <remarks />
        [EnumMember(Value = "ReferenceType_26537060")]
        ReferenceType = 26537060,

        /// <remarks />
        [EnumMember(Value = "View_26501356")]
        View = 26501356,
    }
    #endif
    #endregion

    #region NodeAttributes Class
    #if (!OPCUA_EXCLUDE_NodeAttributes)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class NodeAttributes : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public NodeAttributes()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_specifiedAttributes = (uint)0;
            m_displayName = null;
            m_description = null;
            m_writeMask = (uint)0;
            m_userWriteMask = (uint)0;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "SpecifiedAttributes", IsRequired = false, Order = 1)]
        public uint SpecifiedAttributes
        {
            get { return m_specifiedAttributes;  }
            set { m_specifiedAttributes = value; }
        }

        /// <remarks />
        [DataMember(Name = "DisplayName", IsRequired = false, Order = 2)]
        public LocalizedText DisplayName
        {
            get { return m_displayName;  }
            set { m_displayName = value; }
        }

        /// <remarks />
        [DataMember(Name = "Description", IsRequired = false, Order = 3)]
        public LocalizedText Description
        {
            get { return m_description;  }
            set { m_description = value; }
        }

        /// <remarks />
        [DataMember(Name = "WriteMask", IsRequired = false, Order = 4)]
        public uint WriteMask
        {
            get { return m_writeMask;  }
            set { m_writeMask = value; }
        }

        /// <remarks />
        [DataMember(Name = "UserWriteMask", IsRequired = false, Order = 5)]
        public uint UserWriteMask
        {
            get { return m_userWriteMask;  }
            set { m_userWriteMask = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.NodeAttributes; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.NodeAttributes_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.NodeAttributes_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteUInt32("SpecifiedAttributes", SpecifiedAttributes);
            encoder.WriteLocalizedText("DisplayName", DisplayName);
            encoder.WriteLocalizedText("Description", Description);
            encoder.WriteUInt32("WriteMask", WriteMask);
            encoder.WriteUInt32("UserWriteMask", UserWriteMask);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            SpecifiedAttributes = decoder.ReadUInt32("SpecifiedAttributes");
            DisplayName = decoder.ReadLocalizedText("DisplayName");
            Description = decoder.ReadLocalizedText("Description");
            WriteMask = decoder.ReadUInt32("WriteMask");
            UserWriteMask = decoder.ReadUInt32("UserWriteMask");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            NodeAttributes value = encodeable as NodeAttributes;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_specifiedAttributes, value.m_specifiedAttributes)) return false;
            if (!Utils.IsEqual(m_displayName, value.m_displayName)) return false;
            if (!Utils.IsEqual(m_description, value.m_description)) return false;
            if (!Utils.IsEqual(m_writeMask, value.m_writeMask)) return false;
            if (!Utils.IsEqual(m_userWriteMask, value.m_userWriteMask)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (NodeAttributes)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            NodeAttributes clone = (NodeAttributes)base.MemberwiseClone();

            clone.m_specifiedAttributes = (uint)Utils.Clone(this.m_specifiedAttributes);
            clone.m_displayName = (LocalizedText)Utils.Clone(this.m_displayName);
            clone.m_description = (LocalizedText)Utils.Clone(this.m_description);
            clone.m_writeMask = (uint)Utils.Clone(this.m_writeMask);
            clone.m_userWriteMask = (uint)Utils.Clone(this.m_userWriteMask);

            return clone;
        }
        #endregion

        #region Private Fields
        private uint m_specifiedAttributes;
        private LocalizedText m_displayName;
        private LocalizedText m_description;
        private uint m_writeMask;
        private uint m_userWriteMask;
        #endregion
    }
    #endif
    #endregion

    #region ObjectAttributes Class
    #if (!OPCUA_EXCLUDE_ObjectAttributes)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ObjectAttributes : NodeAttributes
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ObjectAttributes()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_eventNotifier = (byte)0;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "EventNotifier", IsRequired = false, Order = 1)]
        public byte EventNotifier
        {
            get { return m_eventNotifier;  }
            set { m_eventNotifier = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ObjectAttributes; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ObjectAttributes_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ObjectAttributes_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteByte("EventNotifier", EventNotifier);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            EventNotifier = decoder.ReadByte("EventNotifier");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ObjectAttributes value = encodeable as ObjectAttributes;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_eventNotifier, value.m_eventNotifier)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (ObjectAttributes)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ObjectAttributes clone = (ObjectAttributes)base.MemberwiseClone();

            clone.m_eventNotifier = (byte)Utils.Clone(this.m_eventNotifier);

            return clone;
        }
        #endregion

        #region Private Fields
        private byte m_eventNotifier;
        #endregion
    }
    #endif
    #endregion

    #region VariableAttributes Class
    #if (!OPCUA_EXCLUDE_VariableAttributes)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class VariableAttributes : NodeAttributes
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public VariableAttributes()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_value = Variant.Null;
            m_dataType = null;
            m_valueRank = (int)0;
            m_arrayDimensions = new UInt32Collection();
            m_accessLevel = (byte)0;
            m_userAccessLevel = (byte)0;
            m_minimumSamplingInterval = (double)0;
            m_historizing = true;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "Value", IsRequired = false, Order = 1)]
        public Variant Value
        {
            get { return m_value;  }
            set { m_value = value; }
        }

        /// <remarks />
        [DataMember(Name = "DataType", IsRequired = false, Order = 2)]
        public NodeId DataType
        {
            get { return m_dataType;  }
            set { m_dataType = value; }
        }

        /// <remarks />
        [DataMember(Name = "ValueRank", IsRequired = false, Order = 3)]
        public int ValueRank
        {
            get { return m_valueRank;  }
            set { m_valueRank = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ArrayDimensions", IsRequired = false, Order = 4)]
        public UInt32Collection ArrayDimensions
        {
            get
            {
                return m_arrayDimensions;
            }

            set
            {
                m_arrayDimensions = value;

                if (value == null)
                {
                    m_arrayDimensions = new UInt32Collection();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "AccessLevel", IsRequired = false, Order = 5)]
        public byte AccessLevel
        {
            get { return m_accessLevel;  }
            set { m_accessLevel = value; }
        }

        /// <remarks />
        [DataMember(Name = "UserAccessLevel", IsRequired = false, Order = 6)]
        public byte UserAccessLevel
        {
            get { return m_userAccessLevel;  }
            set { m_userAccessLevel = value; }
        }

        /// <remarks />
        [DataMember(Name = "MinimumSamplingInterval", IsRequired = false, Order = 7)]
        public double MinimumSamplingInterval
        {
            get { return m_minimumSamplingInterval;  }
            set { m_minimumSamplingInterval = value; }
        }

        /// <remarks />
        [DataMember(Name = "Historizing", IsRequired = false, Order = 8)]
        public bool Historizing
        {
            get { return m_historizing;  }
            set { m_historizing = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.VariableAttributes; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.VariableAttributes_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.VariableAttributes_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteVariant("Value", Value);
            encoder.WriteNodeId("DataType", DataType);
            encoder.WriteInt32("ValueRank", ValueRank);
            encoder.WriteUInt32Array("ArrayDimensions", ArrayDimensions);
            encoder.WriteByte("AccessLevel", AccessLevel);
            encoder.WriteByte("UserAccessLevel", UserAccessLevel);
            encoder.WriteDouble("MinimumSamplingInterval", MinimumSamplingInterval);
            encoder.WriteBoolean("Historizing", Historizing);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            Value = decoder.ReadVariant("Value");
            DataType = decoder.ReadNodeId("DataType");
            ValueRank = decoder.ReadInt32("ValueRank");
            ArrayDimensions = decoder.ReadUInt32Array("ArrayDimensions");
            AccessLevel = decoder.ReadByte("AccessLevel");
            UserAccessLevel = decoder.ReadByte("UserAccessLevel");
            MinimumSamplingInterval = decoder.ReadDouble("MinimumSamplingInterval");
            Historizing = decoder.ReadBoolean("Historizing");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            VariableAttributes value = encodeable as VariableAttributes;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_value, value.m_value)) return false;
            if (!Utils.IsEqual(m_dataType, value.m_dataType)) return false;
            if (!Utils.IsEqual(m_valueRank, value.m_valueRank)) return false;
            if (!Utils.IsEqual(m_arrayDimensions, value.m_arrayDimensions)) return false;
            if (!Utils.IsEqual(m_accessLevel, value.m_accessLevel)) return false;
            if (!Utils.IsEqual(m_userAccessLevel, value.m_userAccessLevel)) return false;
            if (!Utils.IsEqual(m_minimumSamplingInterval, value.m_minimumSamplingInterval)) return false;
            if (!Utils.IsEqual(m_historizing, value.m_historizing)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (VariableAttributes)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            VariableAttributes clone = (VariableAttributes)base.MemberwiseClone();

            clone.m_value = (Variant)Utils.Clone(this.m_value);
            clone.m_dataType = (NodeId)Utils.Clone(this.m_dataType);
            clone.m_valueRank = (int)Utils.Clone(this.m_valueRank);
            clone.m_arrayDimensions = (UInt32Collection)Utils.Clone(this.m_arrayDimensions);
            clone.m_accessLevel = (byte)Utils.Clone(this.m_accessLevel);
            clone.m_userAccessLevel = (byte)Utils.Clone(this.m_userAccessLevel);
            clone.m_minimumSamplingInterval = (double)Utils.Clone(this.m_minimumSamplingInterval);
            clone.m_historizing = (bool)Utils.Clone(this.m_historizing);

            return clone;
        }
        #endregion

        #region Private Fields
        private Variant m_value;
        private NodeId m_dataType;
        private int m_valueRank;
        private UInt32Collection m_arrayDimensions;
        private byte m_accessLevel;
        private byte m_userAccessLevel;
        private double m_minimumSamplingInterval;
        private bool m_historizing;
        #endregion
    }
    #endif
    #endregion

    #region MethodAttributes Class
    #if (!OPCUA_EXCLUDE_MethodAttributes)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class MethodAttributes : NodeAttributes
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public MethodAttributes()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_executable = true;
            m_userExecutable = true;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "Executable", IsRequired = false, Order = 1)]
        public bool Executable
        {
            get { return m_executable;  }
            set { m_executable = value; }
        }

        /// <remarks />
        [DataMember(Name = "UserExecutable", IsRequired = false, Order = 2)]
        public bool UserExecutable
        {
            get { return m_userExecutable;  }
            set { m_userExecutable = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.MethodAttributes; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.MethodAttributes_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.MethodAttributes_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteBoolean("Executable", Executable);
            encoder.WriteBoolean("UserExecutable", UserExecutable);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            Executable = decoder.ReadBoolean("Executable");
            UserExecutable = decoder.ReadBoolean("UserExecutable");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            MethodAttributes value = encodeable as MethodAttributes;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_executable, value.m_executable)) return false;
            if (!Utils.IsEqual(m_userExecutable, value.m_userExecutable)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (MethodAttributes)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            MethodAttributes clone = (MethodAttributes)base.MemberwiseClone();

            clone.m_executable = (bool)Utils.Clone(this.m_executable);
            clone.m_userExecutable = (bool)Utils.Clone(this.m_userExecutable);

            return clone;
        }
        #endregion

        #region Private Fields
        private bool m_executable;
        private bool m_userExecutable;
        #endregion
    }
    #endif
    #endregion

    #region ObjectTypeAttributes Class
    #if (!OPCUA_EXCLUDE_ObjectTypeAttributes)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ObjectTypeAttributes : NodeAttributes
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ObjectTypeAttributes()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_isAbstract = true;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "IsAbstract", IsRequired = false, Order = 1)]
        public bool IsAbstract
        {
            get { return m_isAbstract;  }
            set { m_isAbstract = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ObjectTypeAttributes; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ObjectTypeAttributes_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ObjectTypeAttributes_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteBoolean("IsAbstract", IsAbstract);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            IsAbstract = decoder.ReadBoolean("IsAbstract");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ObjectTypeAttributes value = encodeable as ObjectTypeAttributes;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_isAbstract, value.m_isAbstract)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (ObjectTypeAttributes)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ObjectTypeAttributes clone = (ObjectTypeAttributes)base.MemberwiseClone();

            clone.m_isAbstract = (bool)Utils.Clone(this.m_isAbstract);

            return clone;
        }
        #endregion

        #region Private Fields
        private bool m_isAbstract;
        #endregion
    }
    #endif
    #endregion

    #region VariableTypeAttributes Class
    #if (!OPCUA_EXCLUDE_VariableTypeAttributes)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class VariableTypeAttributes : NodeAttributes
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public VariableTypeAttributes()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_value = Variant.Null;
            m_dataType = null;
            m_valueRank = (int)0;
            m_arrayDimensions = new UInt32Collection();
            m_isAbstract = true;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "Value", IsRequired = false, Order = 1)]
        public Variant Value
        {
            get { return m_value;  }
            set { m_value = value; }
        }

        /// <remarks />
        [DataMember(Name = "DataType", IsRequired = false, Order = 2)]
        public NodeId DataType
        {
            get { return m_dataType;  }
            set { m_dataType = value; }
        }

        /// <remarks />
        [DataMember(Name = "ValueRank", IsRequired = false, Order = 3)]
        public int ValueRank
        {
            get { return m_valueRank;  }
            set { m_valueRank = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ArrayDimensions", IsRequired = false, Order = 4)]
        public UInt32Collection ArrayDimensions
        {
            get
            {
                return m_arrayDimensions;
            }

            set
            {
                m_arrayDimensions = value;

                if (value == null)
                {
                    m_arrayDimensions = new UInt32Collection();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "IsAbstract", IsRequired = false, Order = 5)]
        public bool IsAbstract
        {
            get { return m_isAbstract;  }
            set { m_isAbstract = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.VariableTypeAttributes; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.VariableTypeAttributes_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.VariableTypeAttributes_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteVariant("Value", Value);
            encoder.WriteNodeId("DataType", DataType);
            encoder.WriteInt32("ValueRank", ValueRank);
            encoder.WriteUInt32Array("ArrayDimensions", ArrayDimensions);
            encoder.WriteBoolean("IsAbstract", IsAbstract);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            Value = decoder.ReadVariant("Value");
            DataType = decoder.ReadNodeId("DataType");
            ValueRank = decoder.ReadInt32("ValueRank");
            ArrayDimensions = decoder.ReadUInt32Array("ArrayDimensions");
            IsAbstract = decoder.ReadBoolean("IsAbstract");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            VariableTypeAttributes value = encodeable as VariableTypeAttributes;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_value, value.m_value)) return false;
            if (!Utils.IsEqual(m_dataType, value.m_dataType)) return false;
            if (!Utils.IsEqual(m_valueRank, value.m_valueRank)) return false;
            if (!Utils.IsEqual(m_arrayDimensions, value.m_arrayDimensions)) return false;
            if (!Utils.IsEqual(m_isAbstract, value.m_isAbstract)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (VariableTypeAttributes)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            VariableTypeAttributes clone = (VariableTypeAttributes)base.MemberwiseClone();

            clone.m_value = (Variant)Utils.Clone(this.m_value);
            clone.m_dataType = (NodeId)Utils.Clone(this.m_dataType);
            clone.m_valueRank = (int)Utils.Clone(this.m_valueRank);
            clone.m_arrayDimensions = (UInt32Collection)Utils.Clone(this.m_arrayDimensions);
            clone.m_isAbstract = (bool)Utils.Clone(this.m_isAbstract);

            return clone;
        }
        #endregion

        #region Private Fields
        private Variant m_value;
        private NodeId m_dataType;
        private int m_valueRank;
        private UInt32Collection m_arrayDimensions;
        private bool m_isAbstract;
        #endregion
    }
    #endif
    #endregion

    #region ReferenceTypeAttributes Class
    #if (!OPCUA_EXCLUDE_ReferenceTypeAttributes)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ReferenceTypeAttributes : NodeAttributes
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ReferenceTypeAttributes()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_isAbstract = true;
            m_symmetric = true;
            m_inverseName = null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "IsAbstract", IsRequired = false, Order = 1)]
        public bool IsAbstract
        {
            get { return m_isAbstract;  }
            set { m_isAbstract = value; }
        }

        /// <remarks />
        [DataMember(Name = "Symmetric", IsRequired = false, Order = 2)]
        public bool Symmetric
        {
            get { return m_symmetric;  }
            set { m_symmetric = value; }
        }

        /// <remarks />
        [DataMember(Name = "InverseName", IsRequired = false, Order = 3)]
        public LocalizedText InverseName
        {
            get { return m_inverseName;  }
            set { m_inverseName = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ReferenceTypeAttributes; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ReferenceTypeAttributes_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ReferenceTypeAttributes_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteBoolean("IsAbstract", IsAbstract);
            encoder.WriteBoolean("Symmetric", Symmetric);
            encoder.WriteLocalizedText("InverseName", InverseName);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            IsAbstract = decoder.ReadBoolean("IsAbstract");
            Symmetric = decoder.ReadBoolean("Symmetric");
            InverseName = decoder.ReadLocalizedText("InverseName");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ReferenceTypeAttributes value = encodeable as ReferenceTypeAttributes;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_isAbstract, value.m_isAbstract)) return false;
            if (!Utils.IsEqual(m_symmetric, value.m_symmetric)) return false;
            if (!Utils.IsEqual(m_inverseName, value.m_inverseName)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (ReferenceTypeAttributes)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ReferenceTypeAttributes clone = (ReferenceTypeAttributes)base.MemberwiseClone();

            clone.m_isAbstract = (bool)Utils.Clone(this.m_isAbstract);
            clone.m_symmetric = (bool)Utils.Clone(this.m_symmetric);
            clone.m_inverseName = (LocalizedText)Utils.Clone(this.m_inverseName);

            return clone;
        }
        #endregion

        #region Private Fields
        private bool m_isAbstract;
        private bool m_symmetric;
        private LocalizedText m_inverseName;
        #endregion
    }
    #endif
    #endregion

    #region DataTypeAttributes Class
    #if (!OPCUA_EXCLUDE_DataTypeAttributes)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class DataTypeAttributes : NodeAttributes
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public DataTypeAttributes()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_isAbstract = true;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "IsAbstract", IsRequired = false, Order = 1)]
        public bool IsAbstract
        {
            get { return m_isAbstract;  }
            set { m_isAbstract = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.DataTypeAttributes; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.DataTypeAttributes_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.DataTypeAttributes_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteBoolean("IsAbstract", IsAbstract);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            IsAbstract = decoder.ReadBoolean("IsAbstract");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            DataTypeAttributes value = encodeable as DataTypeAttributes;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_isAbstract, value.m_isAbstract)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (DataTypeAttributes)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            DataTypeAttributes clone = (DataTypeAttributes)base.MemberwiseClone();

            clone.m_isAbstract = (bool)Utils.Clone(this.m_isAbstract);

            return clone;
        }
        #endregion

        #region Private Fields
        private bool m_isAbstract;
        #endregion
    }
    #endif
    #endregion

    #region ViewAttributes Class
    #if (!OPCUA_EXCLUDE_ViewAttributes)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ViewAttributes : NodeAttributes
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ViewAttributes()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_containsNoLoops = true;
            m_eventNotifier = (byte)0;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "ContainsNoLoops", IsRequired = false, Order = 1)]
        public bool ContainsNoLoops
        {
            get { return m_containsNoLoops;  }
            set { m_containsNoLoops = value; }
        }

        /// <remarks />
        [DataMember(Name = "EventNotifier", IsRequired = false, Order = 2)]
        public byte EventNotifier
        {
            get { return m_eventNotifier;  }
            set { m_eventNotifier = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ViewAttributes; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ViewAttributes_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ViewAttributes_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteBoolean("ContainsNoLoops", ContainsNoLoops);
            encoder.WriteByte("EventNotifier", EventNotifier);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ContainsNoLoops = decoder.ReadBoolean("ContainsNoLoops");
            EventNotifier = decoder.ReadByte("EventNotifier");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ViewAttributes value = encodeable as ViewAttributes;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_containsNoLoops, value.m_containsNoLoops)) return false;
            if (!Utils.IsEqual(m_eventNotifier, value.m_eventNotifier)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (ViewAttributes)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ViewAttributes clone = (ViewAttributes)base.MemberwiseClone();

            clone.m_containsNoLoops = (bool)Utils.Clone(this.m_containsNoLoops);
            clone.m_eventNotifier = (byte)Utils.Clone(this.m_eventNotifier);

            return clone;
        }
        #endregion

        #region Private Fields
        private bool m_containsNoLoops;
        private byte m_eventNotifier;
        #endregion
    }
    #endif
    #endregion

    #region GenericAttributeValue Class
    #if (!OPCUA_EXCLUDE_GenericAttributeValue)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class GenericAttributeValue : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public GenericAttributeValue()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_attributeId = (uint)0;
            m_value = Variant.Null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "AttributeId", IsRequired = false, Order = 1)]
        public uint AttributeId
        {
            get { return m_attributeId;  }
            set { m_attributeId = value; }
        }

        /// <remarks />
        [DataMember(Name = "Value", IsRequired = false, Order = 2)]
        public Variant Value
        {
            get { return m_value;  }
            set { m_value = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.GenericAttributeValue; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.GenericAttributeValue_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.GenericAttributeValue_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteUInt32("AttributeId", AttributeId);
            encoder.WriteVariant("Value", Value);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            AttributeId = decoder.ReadUInt32("AttributeId");
            Value = decoder.ReadVariant("Value");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            GenericAttributeValue value = encodeable as GenericAttributeValue;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_attributeId, value.m_attributeId)) return false;
            if (!Utils.IsEqual(m_value, value.m_value)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (GenericAttributeValue)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            GenericAttributeValue clone = (GenericAttributeValue)base.MemberwiseClone();

            clone.m_attributeId = (uint)Utils.Clone(this.m_attributeId);
            clone.m_value = (Variant)Utils.Clone(this.m_value);

            return clone;
        }
        #endregion

        #region Private Fields
        private uint m_attributeId;
        private Variant m_value;
        #endregion
    }

    #region GenericAttributeValueCollection Class
    /// <summary>
    /// A collection of GenericAttributeValue objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfGenericAttributeValue", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "GenericAttributeValue")]
    #if !NET_STANDARD
    public partial class GenericAttributeValueCollection : List<GenericAttributeValue>, ICloneable
    #else
    public partial class GenericAttributeValueCollection : List<GenericAttributeValue>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public GenericAttributeValueCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public GenericAttributeValueCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public GenericAttributeValueCollection(IEnumerable<GenericAttributeValue> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator GenericAttributeValueCollection(GenericAttributeValue[] values)
        {
            if (values != null)
            {
                return new GenericAttributeValueCollection(values);
            }

            return new GenericAttributeValueCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator GenericAttributeValue[](GenericAttributeValueCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (GenericAttributeValueCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            GenericAttributeValueCollection clone = new GenericAttributeValueCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((GenericAttributeValue)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region GenericAttributes Class
    #if (!OPCUA_EXCLUDE_GenericAttributes)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class GenericAttributes : NodeAttributes
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public GenericAttributes()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_attributeValues = new GenericAttributeValueCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "AttributeValues", IsRequired = false, Order = 1)]
        public GenericAttributeValueCollection AttributeValues
        {
            get
            {
                return m_attributeValues;
            }

            set
            {
                m_attributeValues = value;

                if (value == null)
                {
                    m_attributeValues = new GenericAttributeValueCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.GenericAttributes; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.GenericAttributes_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.GenericAttributes_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeableArray("AttributeValues", AttributeValues.ToArray(), typeof(GenericAttributeValue));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            AttributeValues = (GenericAttributeValueCollection)decoder.ReadEncodeableArray("AttributeValues", typeof(GenericAttributeValue));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            GenericAttributes value = encodeable as GenericAttributes;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_attributeValues, value.m_attributeValues)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (GenericAttributes)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            GenericAttributes clone = (GenericAttributes)base.MemberwiseClone();

            clone.m_attributeValues = (GenericAttributeValueCollection)Utils.Clone(this.m_attributeValues);

            return clone;
        }
        #endregion

        #region Private Fields
        private GenericAttributeValueCollection m_attributeValues;
        #endregion
    }
    #endif
    #endregion

    #region AddNodesItem Class
    #if (!OPCUA_EXCLUDE_AddNodesItem)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class AddNodesItem : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public AddNodesItem()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_parentNodeId = null;
            m_referenceTypeId = null;
            m_requestedNewNodeId = null;
            m_browseName = null;
            m_nodeClass = NodeClass.Unspecified;
            m_nodeAttributes = null;
            m_typeDefinition = null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "ParentNodeId", IsRequired = false, Order = 1)]
        public ExpandedNodeId ParentNodeId
        {
            get { return m_parentNodeId;  }
            set { m_parentNodeId = value; }
        }

        /// <remarks />
        [DataMember(Name = "ReferenceTypeId", IsRequired = false, Order = 2)]
        public NodeId ReferenceTypeId
        {
            get { return m_referenceTypeId;  }
            set { m_referenceTypeId = value; }
        }

        /// <remarks />
        [DataMember(Name = "RequestedNewNodeId", IsRequired = false, Order = 3)]
        public ExpandedNodeId RequestedNewNodeId
        {
            get { return m_requestedNewNodeId;  }
            set { m_requestedNewNodeId = value; }
        }

        /// <remarks />
        [DataMember(Name = "BrowseName", IsRequired = false, Order = 4)]
        public QualifiedName BrowseName
        {
            get { return m_browseName;  }
            set { m_browseName = value; }
        }

        /// <remarks />
        [DataMember(Name = "NodeClass", IsRequired = false, Order = 5)]
        public NodeClass NodeClass
        {
            get { return m_nodeClass;  }
            set { m_nodeClass = value; }
        }

        /// <remarks />
        [DataMember(Name = "NodeAttributes", IsRequired = false, Order = 6)]
        public ExtensionObject NodeAttributes
        {
            get { return m_nodeAttributes;  }
            set { m_nodeAttributes = value; }
        }

        /// <remarks />
        [DataMember(Name = "TypeDefinition", IsRequired = false, Order = 7)]
        public ExpandedNodeId TypeDefinition
        {
            get { return m_typeDefinition;  }
            set { m_typeDefinition = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.AddNodesItem; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.AddNodesItem_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.AddNodesItem_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteExpandedNodeId("ParentNodeId", ParentNodeId);
            encoder.WriteNodeId("ReferenceTypeId", ReferenceTypeId);
            encoder.WriteExpandedNodeId("RequestedNewNodeId", RequestedNewNodeId);
            encoder.WriteQualifiedName("BrowseName", BrowseName);
            encoder.WriteEnumerated("NodeClass", NodeClass);
            encoder.WriteExtensionObject("NodeAttributes", NodeAttributes);
            encoder.WriteExpandedNodeId("TypeDefinition", TypeDefinition);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ParentNodeId = decoder.ReadExpandedNodeId("ParentNodeId");
            ReferenceTypeId = decoder.ReadNodeId("ReferenceTypeId");
            RequestedNewNodeId = decoder.ReadExpandedNodeId("RequestedNewNodeId");
            BrowseName = decoder.ReadQualifiedName("BrowseName");
            NodeClass = (NodeClass)decoder.ReadEnumerated("NodeClass", typeof(NodeClass));
            NodeAttributes = decoder.ReadExtensionObject("NodeAttributes");
            TypeDefinition = decoder.ReadExpandedNodeId("TypeDefinition");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            AddNodesItem value = encodeable as AddNodesItem;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_parentNodeId, value.m_parentNodeId)) return false;
            if (!Utils.IsEqual(m_referenceTypeId, value.m_referenceTypeId)) return false;
            if (!Utils.IsEqual(m_requestedNewNodeId, value.m_requestedNewNodeId)) return false;
            if (!Utils.IsEqual(m_browseName, value.m_browseName)) return false;
            if (!Utils.IsEqual(m_nodeClass, value.m_nodeClass)) return false;
            if (!Utils.IsEqual(m_nodeAttributes, value.m_nodeAttributes)) return false;
            if (!Utils.IsEqual(m_typeDefinition, value.m_typeDefinition)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (AddNodesItem)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            AddNodesItem clone = (AddNodesItem)base.MemberwiseClone();

            clone.m_parentNodeId = (ExpandedNodeId)Utils.Clone(this.m_parentNodeId);
            clone.m_referenceTypeId = (NodeId)Utils.Clone(this.m_referenceTypeId);
            clone.m_requestedNewNodeId = (ExpandedNodeId)Utils.Clone(this.m_requestedNewNodeId);
            clone.m_browseName = (QualifiedName)Utils.Clone(this.m_browseName);
            clone.m_nodeClass = (NodeClass)Utils.Clone(this.m_nodeClass);
            clone.m_nodeAttributes = (ExtensionObject)Utils.Clone(this.m_nodeAttributes);
            clone.m_typeDefinition = (ExpandedNodeId)Utils.Clone(this.m_typeDefinition);

            return clone;
        }
        #endregion

        #region Private Fields
        private ExpandedNodeId m_parentNodeId;
        private NodeId m_referenceTypeId;
        private ExpandedNodeId m_requestedNewNodeId;
        private QualifiedName m_browseName;
        private NodeClass m_nodeClass;
        private ExtensionObject m_nodeAttributes;
        private ExpandedNodeId m_typeDefinition;
        #endregion
    }

    #region AddNodesItemCollection Class
    /// <summary>
    /// A collection of AddNodesItem objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfAddNodesItem", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "AddNodesItem")]
    #if !NET_STANDARD
    public partial class AddNodesItemCollection : List<AddNodesItem>, ICloneable
    #else
    public partial class AddNodesItemCollection : List<AddNodesItem>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public AddNodesItemCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public AddNodesItemCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public AddNodesItemCollection(IEnumerable<AddNodesItem> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator AddNodesItemCollection(AddNodesItem[] values)
        {
            if (values != null)
            {
                return new AddNodesItemCollection(values);
            }

            return new AddNodesItemCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator AddNodesItem[](AddNodesItemCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (AddNodesItemCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            AddNodesItemCollection clone = new AddNodesItemCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((AddNodesItem)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region AddNodesResult Class
    #if (!OPCUA_EXCLUDE_AddNodesResult)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class AddNodesResult : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public AddNodesResult()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_statusCode = StatusCodes.Good;
            m_addedNodeId = null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "StatusCode", IsRequired = false, Order = 1)]
        public StatusCode StatusCode
        {
            get { return m_statusCode;  }
            set { m_statusCode = value; }
        }

        /// <remarks />
        [DataMember(Name = "AddedNodeId", IsRequired = false, Order = 2)]
        public NodeId AddedNodeId
        {
            get { return m_addedNodeId;  }
            set { m_addedNodeId = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.AddNodesResult; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.AddNodesResult_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.AddNodesResult_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteStatusCode("StatusCode", StatusCode);
            encoder.WriteNodeId("AddedNodeId", AddedNodeId);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            StatusCode = decoder.ReadStatusCode("StatusCode");
            AddedNodeId = decoder.ReadNodeId("AddedNodeId");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            AddNodesResult value = encodeable as AddNodesResult;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_statusCode, value.m_statusCode)) return false;
            if (!Utils.IsEqual(m_addedNodeId, value.m_addedNodeId)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (AddNodesResult)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            AddNodesResult clone = (AddNodesResult)base.MemberwiseClone();

            clone.m_statusCode = (StatusCode)Utils.Clone(this.m_statusCode);
            clone.m_addedNodeId = (NodeId)Utils.Clone(this.m_addedNodeId);

            return clone;
        }
        #endregion

        #region Private Fields
        private StatusCode m_statusCode;
        private NodeId m_addedNodeId;
        #endregion
    }

    #region AddNodesResultCollection Class
    /// <summary>
    /// A collection of AddNodesResult objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfAddNodesResult", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "AddNodesResult")]
    #if !NET_STANDARD
    public partial class AddNodesResultCollection : List<AddNodesResult>, ICloneable
    #else
    public partial class AddNodesResultCollection : List<AddNodesResult>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public AddNodesResultCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public AddNodesResultCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public AddNodesResultCollection(IEnumerable<AddNodesResult> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator AddNodesResultCollection(AddNodesResult[] values)
        {
            if (values != null)
            {
                return new AddNodesResultCollection(values);
            }

            return new AddNodesResultCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator AddNodesResult[](AddNodesResultCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (AddNodesResultCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            AddNodesResultCollection clone = new AddNodesResultCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((AddNodesResult)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region AddNodesRequest Class
    #if (!OPCUA_EXCLUDE_AddNodesRequest)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class AddNodesRequest : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public AddNodesRequest()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_requestHeader = new RequestHeader();
            m_nodesToAdd = new AddNodesItemCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RequestHeader", IsRequired = false, Order = 1)]
        public RequestHeader RequestHeader
        {
            get
            {
                return m_requestHeader;
            }

            set
            {
                m_requestHeader = value;

                if (value == null)
                {
                    m_requestHeader = new RequestHeader();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "NodesToAdd", IsRequired = false, Order = 2)]
        public AddNodesItemCollection NodesToAdd
        {
            get
            {
                return m_nodesToAdd;
            }

            set
            {
                m_nodesToAdd = value;

                if (value == null)
                {
                    m_nodesToAdd = new AddNodesItemCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.AddNodesRequest; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.AddNodesRequest_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.AddNodesRequest_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("RequestHeader", RequestHeader, typeof(RequestHeader));
            encoder.WriteEncodeableArray("NodesToAdd", NodesToAdd.ToArray(), typeof(AddNodesItem));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            RequestHeader = (RequestHeader)decoder.ReadEncodeable("RequestHeader", typeof(RequestHeader));
            NodesToAdd = (AddNodesItemCollection)decoder.ReadEncodeableArray("NodesToAdd", typeof(AddNodesItem));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            AddNodesRequest value = encodeable as AddNodesRequest;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_requestHeader, value.m_requestHeader)) return false;
            if (!Utils.IsEqual(m_nodesToAdd, value.m_nodesToAdd)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (AddNodesRequest)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            AddNodesRequest clone = (AddNodesRequest)base.MemberwiseClone();

            clone.m_requestHeader = (RequestHeader)Utils.Clone(this.m_requestHeader);
            clone.m_nodesToAdd = (AddNodesItemCollection)Utils.Clone(this.m_nodesToAdd);

            return clone;
        }
        #endregion

        #region Private Fields
        private RequestHeader m_requestHeader;
        private AddNodesItemCollection m_nodesToAdd;
        #endregion
    }
    #endif
    #endregion

    #region AddNodesResponse Class
    #if (!OPCUA_EXCLUDE_AddNodesResponse)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class AddNodesResponse : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public AddNodesResponse()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_responseHeader = new ResponseHeader();
            m_results = new AddNodesResultCollection();
            m_diagnosticInfos = new DiagnosticInfoCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ResponseHeader", IsRequired = false, Order = 1)]
        public ResponseHeader ResponseHeader
        {
            get
            {
                return m_responseHeader;
            }

            set
            {
                m_responseHeader = value;

                if (value == null)
                {
                    m_responseHeader = new ResponseHeader();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "Results", IsRequired = false, Order = 2)]
        public AddNodesResultCollection Results
        {
            get
            {
                return m_results;
            }

            set
            {
                m_results = value;

                if (value == null)
                {
                    m_results = new AddNodesResultCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "DiagnosticInfos", IsRequired = false, Order = 3)]
        public DiagnosticInfoCollection DiagnosticInfos
        {
            get
            {
                return m_diagnosticInfos;
            }

            set
            {
                m_diagnosticInfos = value;

                if (value == null)
                {
                    m_diagnosticInfos = new DiagnosticInfoCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.AddNodesResponse; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.AddNodesResponse_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.AddNodesResponse_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("ResponseHeader", ResponseHeader, typeof(ResponseHeader));
            encoder.WriteEncodeableArray("Results", Results.ToArray(), typeof(AddNodesResult));
            encoder.WriteDiagnosticInfoArray("DiagnosticInfos", DiagnosticInfos);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ResponseHeader = (ResponseHeader)decoder.ReadEncodeable("ResponseHeader", typeof(ResponseHeader));
            Results = (AddNodesResultCollection)decoder.ReadEncodeableArray("Results", typeof(AddNodesResult));
            DiagnosticInfos = decoder.ReadDiagnosticInfoArray("DiagnosticInfos");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            AddNodesResponse value = encodeable as AddNodesResponse;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_responseHeader, value.m_responseHeader)) return false;
            if (!Utils.IsEqual(m_results, value.m_results)) return false;
            if (!Utils.IsEqual(m_diagnosticInfos, value.m_diagnosticInfos)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (AddNodesResponse)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            AddNodesResponse clone = (AddNodesResponse)base.MemberwiseClone();

            clone.m_responseHeader = (ResponseHeader)Utils.Clone(this.m_responseHeader);
            clone.m_results = (AddNodesResultCollection)Utils.Clone(this.m_results);
            clone.m_diagnosticInfos = (DiagnosticInfoCollection)Utils.Clone(this.m_diagnosticInfos);

            return clone;
        }
        #endregion

        #region Private Fields
        private ResponseHeader m_responseHeader;
        private AddNodesResultCollection m_results;
        private DiagnosticInfoCollection m_diagnosticInfos;
        #endregion
    }
    #endif
    #endregion

    #region AddReferencesItem Class
    #if (!OPCUA_EXCLUDE_AddReferencesItem)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class AddReferencesItem : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public AddReferencesItem()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_sourceNodeId = null;
            m_referenceTypeId = null;
            m_isForward = true;
            m_targetServerUri = null;
            m_targetNodeId = null;
            m_targetNodeClass = NodeClass.Unspecified;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "SourceNodeId", IsRequired = false, Order = 1)]
        public NodeId SourceNodeId
        {
            get { return m_sourceNodeId;  }
            set { m_sourceNodeId = value; }
        }

        /// <remarks />
        [DataMember(Name = "ReferenceTypeId", IsRequired = false, Order = 2)]
        public NodeId ReferenceTypeId
        {
            get { return m_referenceTypeId;  }
            set { m_referenceTypeId = value; }
        }

        /// <remarks />
        [DataMember(Name = "IsForward", IsRequired = false, Order = 3)]
        public bool IsForward
        {
            get { return m_isForward;  }
            set { m_isForward = value; }
        }

        /// <remarks />
        [DataMember(Name = "TargetServerUri", IsRequired = false, Order = 4)]
        public string TargetServerUri
        {
            get { return m_targetServerUri;  }
            set { m_targetServerUri = value; }
        }

        /// <remarks />
        [DataMember(Name = "TargetNodeId", IsRequired = false, Order = 5)]
        public ExpandedNodeId TargetNodeId
        {
            get { return m_targetNodeId;  }
            set { m_targetNodeId = value; }
        }

        /// <remarks />
        [DataMember(Name = "TargetNodeClass", IsRequired = false, Order = 6)]
        public NodeClass TargetNodeClass
        {
            get { return m_targetNodeClass;  }
            set { m_targetNodeClass = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.AddReferencesItem; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.AddReferencesItem_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.AddReferencesItem_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteNodeId("SourceNodeId", SourceNodeId);
            encoder.WriteNodeId("ReferenceTypeId", ReferenceTypeId);
            encoder.WriteBoolean("IsForward", IsForward);
            encoder.WriteString("TargetServerUri", TargetServerUri);
            encoder.WriteExpandedNodeId("TargetNodeId", TargetNodeId);
            encoder.WriteEnumerated("TargetNodeClass", TargetNodeClass);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            SourceNodeId = decoder.ReadNodeId("SourceNodeId");
            ReferenceTypeId = decoder.ReadNodeId("ReferenceTypeId");
            IsForward = decoder.ReadBoolean("IsForward");
            TargetServerUri = decoder.ReadString("TargetServerUri");
            TargetNodeId = decoder.ReadExpandedNodeId("TargetNodeId");
            TargetNodeClass = (NodeClass)decoder.ReadEnumerated("TargetNodeClass", typeof(NodeClass));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            AddReferencesItem value = encodeable as AddReferencesItem;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_sourceNodeId, value.m_sourceNodeId)) return false;
            if (!Utils.IsEqual(m_referenceTypeId, value.m_referenceTypeId)) return false;
            if (!Utils.IsEqual(m_isForward, value.m_isForward)) return false;
            if (!Utils.IsEqual(m_targetServerUri, value.m_targetServerUri)) return false;
            if (!Utils.IsEqual(m_targetNodeId, value.m_targetNodeId)) return false;
            if (!Utils.IsEqual(m_targetNodeClass, value.m_targetNodeClass)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (AddReferencesItem)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            AddReferencesItem clone = (AddReferencesItem)base.MemberwiseClone();

            clone.m_sourceNodeId = (NodeId)Utils.Clone(this.m_sourceNodeId);
            clone.m_referenceTypeId = (NodeId)Utils.Clone(this.m_referenceTypeId);
            clone.m_isForward = (bool)Utils.Clone(this.m_isForward);
            clone.m_targetServerUri = (string)Utils.Clone(this.m_targetServerUri);
            clone.m_targetNodeId = (ExpandedNodeId)Utils.Clone(this.m_targetNodeId);
            clone.m_targetNodeClass = (NodeClass)Utils.Clone(this.m_targetNodeClass);

            return clone;
        }
        #endregion

        #region Private Fields
        private NodeId m_sourceNodeId;
        private NodeId m_referenceTypeId;
        private bool m_isForward;
        private string m_targetServerUri;
        private ExpandedNodeId m_targetNodeId;
        private NodeClass m_targetNodeClass;
        #endregion
    }

    #region AddReferencesItemCollection Class
    /// <summary>
    /// A collection of AddReferencesItem objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfAddReferencesItem", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "AddReferencesItem")]
    #if !NET_STANDARD
    public partial class AddReferencesItemCollection : List<AddReferencesItem>, ICloneable
    #else
    public partial class AddReferencesItemCollection : List<AddReferencesItem>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public AddReferencesItemCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public AddReferencesItemCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public AddReferencesItemCollection(IEnumerable<AddReferencesItem> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator AddReferencesItemCollection(AddReferencesItem[] values)
        {
            if (values != null)
            {
                return new AddReferencesItemCollection(values);
            }

            return new AddReferencesItemCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator AddReferencesItem[](AddReferencesItemCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (AddReferencesItemCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            AddReferencesItemCollection clone = new AddReferencesItemCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((AddReferencesItem)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region AddReferencesRequest Class
    #if (!OPCUA_EXCLUDE_AddReferencesRequest)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class AddReferencesRequest : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public AddReferencesRequest()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_requestHeader = new RequestHeader();
            m_referencesToAdd = new AddReferencesItemCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RequestHeader", IsRequired = false, Order = 1)]
        public RequestHeader RequestHeader
        {
            get
            {
                return m_requestHeader;
            }

            set
            {
                m_requestHeader = value;

                if (value == null)
                {
                    m_requestHeader = new RequestHeader();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ReferencesToAdd", IsRequired = false, Order = 2)]
        public AddReferencesItemCollection ReferencesToAdd
        {
            get
            {
                return m_referencesToAdd;
            }

            set
            {
                m_referencesToAdd = value;

                if (value == null)
                {
                    m_referencesToAdd = new AddReferencesItemCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.AddReferencesRequest; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.AddReferencesRequest_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.AddReferencesRequest_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("RequestHeader", RequestHeader, typeof(RequestHeader));
            encoder.WriteEncodeableArray("ReferencesToAdd", ReferencesToAdd.ToArray(), typeof(AddReferencesItem));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            RequestHeader = (RequestHeader)decoder.ReadEncodeable("RequestHeader", typeof(RequestHeader));
            ReferencesToAdd = (AddReferencesItemCollection)decoder.ReadEncodeableArray("ReferencesToAdd", typeof(AddReferencesItem));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            AddReferencesRequest value = encodeable as AddReferencesRequest;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_requestHeader, value.m_requestHeader)) return false;
            if (!Utils.IsEqual(m_referencesToAdd, value.m_referencesToAdd)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (AddReferencesRequest)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            AddReferencesRequest clone = (AddReferencesRequest)base.MemberwiseClone();

            clone.m_requestHeader = (RequestHeader)Utils.Clone(this.m_requestHeader);
            clone.m_referencesToAdd = (AddReferencesItemCollection)Utils.Clone(this.m_referencesToAdd);

            return clone;
        }
        #endregion

        #region Private Fields
        private RequestHeader m_requestHeader;
        private AddReferencesItemCollection m_referencesToAdd;
        #endregion
    }
    #endif
    #endregion

    #region AddReferencesResponse Class
    #if (!OPCUA_EXCLUDE_AddReferencesResponse)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class AddReferencesResponse : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public AddReferencesResponse()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_responseHeader = new ResponseHeader();
            m_results = new StatusCodeCollection();
            m_diagnosticInfos = new DiagnosticInfoCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ResponseHeader", IsRequired = false, Order = 1)]
        public ResponseHeader ResponseHeader
        {
            get
            {
                return m_responseHeader;
            }

            set
            {
                m_responseHeader = value;

                if (value == null)
                {
                    m_responseHeader = new ResponseHeader();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "Results", IsRequired = false, Order = 2)]
        public StatusCodeCollection Results
        {
            get
            {
                return m_results;
            }

            set
            {
                m_results = value;

                if (value == null)
                {
                    m_results = new StatusCodeCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "DiagnosticInfos", IsRequired = false, Order = 3)]
        public DiagnosticInfoCollection DiagnosticInfos
        {
            get
            {
                return m_diagnosticInfos;
            }

            set
            {
                m_diagnosticInfos = value;

                if (value == null)
                {
                    m_diagnosticInfos = new DiagnosticInfoCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.AddReferencesResponse; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.AddReferencesResponse_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.AddReferencesResponse_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("ResponseHeader", ResponseHeader, typeof(ResponseHeader));
            encoder.WriteStatusCodeArray("Results", Results);
            encoder.WriteDiagnosticInfoArray("DiagnosticInfos", DiagnosticInfos);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ResponseHeader = (ResponseHeader)decoder.ReadEncodeable("ResponseHeader", typeof(ResponseHeader));
            Results = decoder.ReadStatusCodeArray("Results");
            DiagnosticInfos = decoder.ReadDiagnosticInfoArray("DiagnosticInfos");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            AddReferencesResponse value = encodeable as AddReferencesResponse;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_responseHeader, value.m_responseHeader)) return false;
            if (!Utils.IsEqual(m_results, value.m_results)) return false;
            if (!Utils.IsEqual(m_diagnosticInfos, value.m_diagnosticInfos)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (AddReferencesResponse)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            AddReferencesResponse clone = (AddReferencesResponse)base.MemberwiseClone();

            clone.m_responseHeader = (ResponseHeader)Utils.Clone(this.m_responseHeader);
            clone.m_results = (StatusCodeCollection)Utils.Clone(this.m_results);
            clone.m_diagnosticInfos = (DiagnosticInfoCollection)Utils.Clone(this.m_diagnosticInfos);

            return clone;
        }
        #endregion

        #region Private Fields
        private ResponseHeader m_responseHeader;
        private StatusCodeCollection m_results;
        private DiagnosticInfoCollection m_diagnosticInfos;
        #endregion
    }
    #endif
    #endregion

    #region DeleteNodesItem Class
    #if (!OPCUA_EXCLUDE_DeleteNodesItem)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class DeleteNodesItem : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public DeleteNodesItem()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_nodeId = null;
            m_deleteTargetReferences = true;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "NodeId", IsRequired = false, Order = 1)]
        public NodeId NodeId
        {
            get { return m_nodeId;  }
            set { m_nodeId = value; }
        }

        /// <remarks />
        [DataMember(Name = "DeleteTargetReferences", IsRequired = false, Order = 2)]
        public bool DeleteTargetReferences
        {
            get { return m_deleteTargetReferences;  }
            set { m_deleteTargetReferences = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.DeleteNodesItem; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.DeleteNodesItem_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.DeleteNodesItem_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteNodeId("NodeId", NodeId);
            encoder.WriteBoolean("DeleteTargetReferences", DeleteTargetReferences);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            NodeId = decoder.ReadNodeId("NodeId");
            DeleteTargetReferences = decoder.ReadBoolean("DeleteTargetReferences");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            DeleteNodesItem value = encodeable as DeleteNodesItem;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_nodeId, value.m_nodeId)) return false;
            if (!Utils.IsEqual(m_deleteTargetReferences, value.m_deleteTargetReferences)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (DeleteNodesItem)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            DeleteNodesItem clone = (DeleteNodesItem)base.MemberwiseClone();

            clone.m_nodeId = (NodeId)Utils.Clone(this.m_nodeId);
            clone.m_deleteTargetReferences = (bool)Utils.Clone(this.m_deleteTargetReferences);

            return clone;
        }
        #endregion

        #region Private Fields
        private NodeId m_nodeId;
        private bool m_deleteTargetReferences;
        #endregion
    }

    #region DeleteNodesItemCollection Class
    /// <summary>
    /// A collection of DeleteNodesItem objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfDeleteNodesItem", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "DeleteNodesItem")]
    #if !NET_STANDARD
    public partial class DeleteNodesItemCollection : List<DeleteNodesItem>, ICloneable
    #else
    public partial class DeleteNodesItemCollection : List<DeleteNodesItem>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public DeleteNodesItemCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public DeleteNodesItemCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public DeleteNodesItemCollection(IEnumerable<DeleteNodesItem> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator DeleteNodesItemCollection(DeleteNodesItem[] values)
        {
            if (values != null)
            {
                return new DeleteNodesItemCollection(values);
            }

            return new DeleteNodesItemCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator DeleteNodesItem[](DeleteNodesItemCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (DeleteNodesItemCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            DeleteNodesItemCollection clone = new DeleteNodesItemCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((DeleteNodesItem)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region DeleteNodesRequest Class
    #if (!OPCUA_EXCLUDE_DeleteNodesRequest)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class DeleteNodesRequest : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public DeleteNodesRequest()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_requestHeader = new RequestHeader();
            m_nodesToDelete = new DeleteNodesItemCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RequestHeader", IsRequired = false, Order = 1)]
        public RequestHeader RequestHeader
        {
            get
            {
                return m_requestHeader;
            }

            set
            {
                m_requestHeader = value;

                if (value == null)
                {
                    m_requestHeader = new RequestHeader();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "NodesToDelete", IsRequired = false, Order = 2)]
        public DeleteNodesItemCollection NodesToDelete
        {
            get
            {
                return m_nodesToDelete;
            }

            set
            {
                m_nodesToDelete = value;

                if (value == null)
                {
                    m_nodesToDelete = new DeleteNodesItemCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.DeleteNodesRequest; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.DeleteNodesRequest_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.DeleteNodesRequest_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("RequestHeader", RequestHeader, typeof(RequestHeader));
            encoder.WriteEncodeableArray("NodesToDelete", NodesToDelete.ToArray(), typeof(DeleteNodesItem));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            RequestHeader = (RequestHeader)decoder.ReadEncodeable("RequestHeader", typeof(RequestHeader));
            NodesToDelete = (DeleteNodesItemCollection)decoder.ReadEncodeableArray("NodesToDelete", typeof(DeleteNodesItem));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            DeleteNodesRequest value = encodeable as DeleteNodesRequest;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_requestHeader, value.m_requestHeader)) return false;
            if (!Utils.IsEqual(m_nodesToDelete, value.m_nodesToDelete)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (DeleteNodesRequest)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            DeleteNodesRequest clone = (DeleteNodesRequest)base.MemberwiseClone();

            clone.m_requestHeader = (RequestHeader)Utils.Clone(this.m_requestHeader);
            clone.m_nodesToDelete = (DeleteNodesItemCollection)Utils.Clone(this.m_nodesToDelete);

            return clone;
        }
        #endregion

        #region Private Fields
        private RequestHeader m_requestHeader;
        private DeleteNodesItemCollection m_nodesToDelete;
        #endregion
    }
    #endif
    #endregion

    #region DeleteNodesResponse Class
    #if (!OPCUA_EXCLUDE_DeleteNodesResponse)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class DeleteNodesResponse : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public DeleteNodesResponse()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_responseHeader = new ResponseHeader();
            m_results = new StatusCodeCollection();
            m_diagnosticInfos = new DiagnosticInfoCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ResponseHeader", IsRequired = false, Order = 1)]
        public ResponseHeader ResponseHeader
        {
            get
            {
                return m_responseHeader;
            }

            set
            {
                m_responseHeader = value;

                if (value == null)
                {
                    m_responseHeader = new ResponseHeader();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "Results", IsRequired = false, Order = 2)]
        public StatusCodeCollection Results
        {
            get
            {
                return m_results;
            }

            set
            {
                m_results = value;

                if (value == null)
                {
                    m_results = new StatusCodeCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "DiagnosticInfos", IsRequired = false, Order = 3)]
        public DiagnosticInfoCollection DiagnosticInfos
        {
            get
            {
                return m_diagnosticInfos;
            }

            set
            {
                m_diagnosticInfos = value;

                if (value == null)
                {
                    m_diagnosticInfos = new DiagnosticInfoCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.DeleteNodesResponse; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.DeleteNodesResponse_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.DeleteNodesResponse_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("ResponseHeader", ResponseHeader, typeof(ResponseHeader));
            encoder.WriteStatusCodeArray("Results", Results);
            encoder.WriteDiagnosticInfoArray("DiagnosticInfos", DiagnosticInfos);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ResponseHeader = (ResponseHeader)decoder.ReadEncodeable("ResponseHeader", typeof(ResponseHeader));
            Results = decoder.ReadStatusCodeArray("Results");
            DiagnosticInfos = decoder.ReadDiagnosticInfoArray("DiagnosticInfos");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            DeleteNodesResponse value = encodeable as DeleteNodesResponse;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_responseHeader, value.m_responseHeader)) return false;
            if (!Utils.IsEqual(m_results, value.m_results)) return false;
            if (!Utils.IsEqual(m_diagnosticInfos, value.m_diagnosticInfos)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (DeleteNodesResponse)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            DeleteNodesResponse clone = (DeleteNodesResponse)base.MemberwiseClone();

            clone.m_responseHeader = (ResponseHeader)Utils.Clone(this.m_responseHeader);
            clone.m_results = (StatusCodeCollection)Utils.Clone(this.m_results);
            clone.m_diagnosticInfos = (DiagnosticInfoCollection)Utils.Clone(this.m_diagnosticInfos);

            return clone;
        }
        #endregion

        #region Private Fields
        private ResponseHeader m_responseHeader;
        private StatusCodeCollection m_results;
        private DiagnosticInfoCollection m_diagnosticInfos;
        #endregion
    }
    #endif
    #endregion

    #region DeleteReferencesItem Class
    #if (!OPCUA_EXCLUDE_DeleteReferencesItem)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class DeleteReferencesItem : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public DeleteReferencesItem()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_sourceNodeId = null;
            m_referenceTypeId = null;
            m_isForward = true;
            m_targetNodeId = null;
            m_deleteBidirectional = true;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "SourceNodeId", IsRequired = false, Order = 1)]
        public NodeId SourceNodeId
        {
            get { return m_sourceNodeId;  }
            set { m_sourceNodeId = value; }
        }

        /// <remarks />
        [DataMember(Name = "ReferenceTypeId", IsRequired = false, Order = 2)]
        public NodeId ReferenceTypeId
        {
            get { return m_referenceTypeId;  }
            set { m_referenceTypeId = value; }
        }

        /// <remarks />
        [DataMember(Name = "IsForward", IsRequired = false, Order = 3)]
        public bool IsForward
        {
            get { return m_isForward;  }
            set { m_isForward = value; }
        }

        /// <remarks />
        [DataMember(Name = "TargetNodeId", IsRequired = false, Order = 4)]
        public ExpandedNodeId TargetNodeId
        {
            get { return m_targetNodeId;  }
            set { m_targetNodeId = value; }
        }

        /// <remarks />
        [DataMember(Name = "DeleteBidirectional", IsRequired = false, Order = 5)]
        public bool DeleteBidirectional
        {
            get { return m_deleteBidirectional;  }
            set { m_deleteBidirectional = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.DeleteReferencesItem; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.DeleteReferencesItem_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.DeleteReferencesItem_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteNodeId("SourceNodeId", SourceNodeId);
            encoder.WriteNodeId("ReferenceTypeId", ReferenceTypeId);
            encoder.WriteBoolean("IsForward", IsForward);
            encoder.WriteExpandedNodeId("TargetNodeId", TargetNodeId);
            encoder.WriteBoolean("DeleteBidirectional", DeleteBidirectional);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            SourceNodeId = decoder.ReadNodeId("SourceNodeId");
            ReferenceTypeId = decoder.ReadNodeId("ReferenceTypeId");
            IsForward = decoder.ReadBoolean("IsForward");
            TargetNodeId = decoder.ReadExpandedNodeId("TargetNodeId");
            DeleteBidirectional = decoder.ReadBoolean("DeleteBidirectional");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            DeleteReferencesItem value = encodeable as DeleteReferencesItem;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_sourceNodeId, value.m_sourceNodeId)) return false;
            if (!Utils.IsEqual(m_referenceTypeId, value.m_referenceTypeId)) return false;
            if (!Utils.IsEqual(m_isForward, value.m_isForward)) return false;
            if (!Utils.IsEqual(m_targetNodeId, value.m_targetNodeId)) return false;
            if (!Utils.IsEqual(m_deleteBidirectional, value.m_deleteBidirectional)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (DeleteReferencesItem)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            DeleteReferencesItem clone = (DeleteReferencesItem)base.MemberwiseClone();

            clone.m_sourceNodeId = (NodeId)Utils.Clone(this.m_sourceNodeId);
            clone.m_referenceTypeId = (NodeId)Utils.Clone(this.m_referenceTypeId);
            clone.m_isForward = (bool)Utils.Clone(this.m_isForward);
            clone.m_targetNodeId = (ExpandedNodeId)Utils.Clone(this.m_targetNodeId);
            clone.m_deleteBidirectional = (bool)Utils.Clone(this.m_deleteBidirectional);

            return clone;
        }
        #endregion

        #region Private Fields
        private NodeId m_sourceNodeId;
        private NodeId m_referenceTypeId;
        private bool m_isForward;
        private ExpandedNodeId m_targetNodeId;
        private bool m_deleteBidirectional;
        #endregion
    }

    #region DeleteReferencesItemCollection Class
    /// <summary>
    /// A collection of DeleteReferencesItem objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfDeleteReferencesItem", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "DeleteReferencesItem")]
    #if !NET_STANDARD
    public partial class DeleteReferencesItemCollection : List<DeleteReferencesItem>, ICloneable
    #else
    public partial class DeleteReferencesItemCollection : List<DeleteReferencesItem>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public DeleteReferencesItemCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public DeleteReferencesItemCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public DeleteReferencesItemCollection(IEnumerable<DeleteReferencesItem> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator DeleteReferencesItemCollection(DeleteReferencesItem[] values)
        {
            if (values != null)
            {
                return new DeleteReferencesItemCollection(values);
            }

            return new DeleteReferencesItemCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator DeleteReferencesItem[](DeleteReferencesItemCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (DeleteReferencesItemCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            DeleteReferencesItemCollection clone = new DeleteReferencesItemCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((DeleteReferencesItem)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region DeleteReferencesRequest Class
    #if (!OPCUA_EXCLUDE_DeleteReferencesRequest)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class DeleteReferencesRequest : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public DeleteReferencesRequest()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_requestHeader = new RequestHeader();
            m_referencesToDelete = new DeleteReferencesItemCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RequestHeader", IsRequired = false, Order = 1)]
        public RequestHeader RequestHeader
        {
            get
            {
                return m_requestHeader;
            }

            set
            {
                m_requestHeader = value;

                if (value == null)
                {
                    m_requestHeader = new RequestHeader();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ReferencesToDelete", IsRequired = false, Order = 2)]
        public DeleteReferencesItemCollection ReferencesToDelete
        {
            get
            {
                return m_referencesToDelete;
            }

            set
            {
                m_referencesToDelete = value;

                if (value == null)
                {
                    m_referencesToDelete = new DeleteReferencesItemCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.DeleteReferencesRequest; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.DeleteReferencesRequest_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.DeleteReferencesRequest_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("RequestHeader", RequestHeader, typeof(RequestHeader));
            encoder.WriteEncodeableArray("ReferencesToDelete", ReferencesToDelete.ToArray(), typeof(DeleteReferencesItem));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            RequestHeader = (RequestHeader)decoder.ReadEncodeable("RequestHeader", typeof(RequestHeader));
            ReferencesToDelete = (DeleteReferencesItemCollection)decoder.ReadEncodeableArray("ReferencesToDelete", typeof(DeleteReferencesItem));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            DeleteReferencesRequest value = encodeable as DeleteReferencesRequest;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_requestHeader, value.m_requestHeader)) return false;
            if (!Utils.IsEqual(m_referencesToDelete, value.m_referencesToDelete)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (DeleteReferencesRequest)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            DeleteReferencesRequest clone = (DeleteReferencesRequest)base.MemberwiseClone();

            clone.m_requestHeader = (RequestHeader)Utils.Clone(this.m_requestHeader);
            clone.m_referencesToDelete = (DeleteReferencesItemCollection)Utils.Clone(this.m_referencesToDelete);

            return clone;
        }
        #endregion

        #region Private Fields
        private RequestHeader m_requestHeader;
        private DeleteReferencesItemCollection m_referencesToDelete;
        #endregion
    }
    #endif
    #endregion

    #region DeleteReferencesResponse Class
    #if (!OPCUA_EXCLUDE_DeleteReferencesResponse)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class DeleteReferencesResponse : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public DeleteReferencesResponse()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_responseHeader = new ResponseHeader();
            m_results = new StatusCodeCollection();
            m_diagnosticInfos = new DiagnosticInfoCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ResponseHeader", IsRequired = false, Order = 1)]
        public ResponseHeader ResponseHeader
        {
            get
            {
                return m_responseHeader;
            }

            set
            {
                m_responseHeader = value;

                if (value == null)
                {
                    m_responseHeader = new ResponseHeader();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "Results", IsRequired = false, Order = 2)]
        public StatusCodeCollection Results
        {
            get
            {
                return m_results;
            }

            set
            {
                m_results = value;

                if (value == null)
                {
                    m_results = new StatusCodeCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "DiagnosticInfos", IsRequired = false, Order = 3)]
        public DiagnosticInfoCollection DiagnosticInfos
        {
            get
            {
                return m_diagnosticInfos;
            }

            set
            {
                m_diagnosticInfos = value;

                if (value == null)
                {
                    m_diagnosticInfos = new DiagnosticInfoCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.DeleteReferencesResponse; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.DeleteReferencesResponse_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.DeleteReferencesResponse_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("ResponseHeader", ResponseHeader, typeof(ResponseHeader));
            encoder.WriteStatusCodeArray("Results", Results);
            encoder.WriteDiagnosticInfoArray("DiagnosticInfos", DiagnosticInfos);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ResponseHeader = (ResponseHeader)decoder.ReadEncodeable("ResponseHeader", typeof(ResponseHeader));
            Results = decoder.ReadStatusCodeArray("Results");
            DiagnosticInfos = decoder.ReadDiagnosticInfoArray("DiagnosticInfos");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            DeleteReferencesResponse value = encodeable as DeleteReferencesResponse;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_responseHeader, value.m_responseHeader)) return false;
            if (!Utils.IsEqual(m_results, value.m_results)) return false;
            if (!Utils.IsEqual(m_diagnosticInfos, value.m_diagnosticInfos)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (DeleteReferencesResponse)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            DeleteReferencesResponse clone = (DeleteReferencesResponse)base.MemberwiseClone();

            clone.m_responseHeader = (ResponseHeader)Utils.Clone(this.m_responseHeader);
            clone.m_results = (StatusCodeCollection)Utils.Clone(this.m_results);
            clone.m_diagnosticInfos = (DiagnosticInfoCollection)Utils.Clone(this.m_diagnosticInfos);

            return clone;
        }
        #endregion

        #region Private Fields
        private ResponseHeader m_responseHeader;
        private StatusCodeCollection m_results;
        private DiagnosticInfoCollection m_diagnosticInfos;
        #endregion
    }
    #endif
    #endregion

    #region AttributeWriteMask Enumeration
    #if (!OPCUA_EXCLUDE_AttributeWriteMask)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)][Flags]
    public enum AttributeWriteMask : UInt32
    {
        /// <remarks />
        [EnumMember(Value = "None_0")]
        None = 0,

        /// <remarks />
        [EnumMember(Value = "AccessLevel_1")]
        AccessLevel = 1,

        /// <remarks />
        [EnumMember(Value = "ArrayDimensions_2")]
        ArrayDimensions = 2,

        /// <remarks />
        [EnumMember(Value = "BrowseName_4")]
        BrowseName = 4,

        /// <remarks />
        [EnumMember(Value = "ContainsNoLoops_8")]
        ContainsNoLoops = 8,

        /// <remarks />
        [EnumMember(Value = "DataType_16")]
        DataType = 16,

        /// <remarks />
        [EnumMember(Value = "Description_32")]
        Description = 32,

        /// <remarks />
        [EnumMember(Value = "DisplayName_64")]
        DisplayName = 64,

        /// <remarks />
        [EnumMember(Value = "EventNotifier_128")]
        EventNotifier = 128,

        /// <remarks />
        [EnumMember(Value = "Executable_256")]
        Executable = 256,

        /// <remarks />
        [EnumMember(Value = "Historizing_512")]
        Historizing = 512,

        /// <remarks />
        [EnumMember(Value = "InverseName_1024")]
        InverseName = 1024,

        /// <remarks />
        [EnumMember(Value = "IsAbstract_2048")]
        IsAbstract = 2048,

        /// <remarks />
        [EnumMember(Value = "MinimumSamplingInterval_4096")]
        MinimumSamplingInterval = 4096,

        /// <remarks />
        [EnumMember(Value = "NodeClass_8192")]
        NodeClass = 8192,

        /// <remarks />
        [EnumMember(Value = "NodeId_16384")]
        NodeId = 16384,

        /// <remarks />
        [EnumMember(Value = "Symmetric_32768")]
        Symmetric = 32768,

        /// <remarks />
        [EnumMember(Value = "UserAccessLevel_65536")]
        UserAccessLevel = 65536,

        /// <remarks />
        [EnumMember(Value = "UserExecutable_131072")]
        UserExecutable = 131072,

        /// <remarks />
        [EnumMember(Value = "UserWriteMask_262144")]
        UserWriteMask = 262144,

        /// <remarks />
        [EnumMember(Value = "ValueRank_524288")]
        ValueRank = 524288,

        /// <remarks />
        [EnumMember(Value = "WriteMask_1048576")]
        WriteMask = 1048576,

        /// <remarks />
        [EnumMember(Value = "ValueForVariableType_2097152")]
        ValueForVariableType = 2097152,

        /// <remarks />
        [EnumMember(Value = "DataTypeDefinition_4194304")]
        DataTypeDefinition = 4194304,

        /// <remarks />
        [EnumMember(Value = "RolePermissions_8388608")]
        RolePermissions = 8388608,

        /// <remarks />
        [EnumMember(Value = "AccessRestrictions_16777216")]
        AccessRestrictions = 16777216,

        /// <remarks />
        [EnumMember(Value = "AccessLevelEx_33554432")]
        AccessLevelEx = 33554432,
    }
    #endif
    #endregion

    #region BrowseDirection Enumeration
    #if (!OPCUA_EXCLUDE_BrowseDirection)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public enum BrowseDirection
    {
        /// <remarks />
        [EnumMember(Value = "Forward_0")]
        Forward = 0,

        /// <remarks />
        [EnumMember(Value = "Inverse_1")]
        Inverse = 1,

        /// <remarks />
        [EnumMember(Value = "Both_2")]
        Both = 2,

        /// <remarks />
        [EnumMember(Value = "Invalid_3")]
        Invalid = 3,
    }
    #endif
    #endregion

    #region ViewDescription Class
    #if (!OPCUA_EXCLUDE_ViewDescription)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ViewDescription : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ViewDescription()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_viewId = null;
            m_timestamp = DateTime.MinValue;
            m_viewVersion = (uint)0;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "ViewId", IsRequired = false, Order = 1)]
        public NodeId ViewId
        {
            get { return m_viewId;  }
            set { m_viewId = value; }
        }

        /// <remarks />
        [DataMember(Name = "Timestamp", IsRequired = false, Order = 2)]
        public DateTime Timestamp
        {
            get { return m_timestamp;  }
            set { m_timestamp = value; }
        }

        /// <remarks />
        [DataMember(Name = "ViewVersion", IsRequired = false, Order = 3)]
        public uint ViewVersion
        {
            get { return m_viewVersion;  }
            set { m_viewVersion = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ViewDescription; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ViewDescription_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ViewDescription_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteNodeId("ViewId", ViewId);
            encoder.WriteDateTime("Timestamp", Timestamp);
            encoder.WriteUInt32("ViewVersion", ViewVersion);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ViewId = decoder.ReadNodeId("ViewId");
            Timestamp = decoder.ReadDateTime("Timestamp");
            ViewVersion = decoder.ReadUInt32("ViewVersion");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ViewDescription value = encodeable as ViewDescription;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_viewId, value.m_viewId)) return false;
            if (!Utils.IsEqual(m_timestamp, value.m_timestamp)) return false;
            if (!Utils.IsEqual(m_viewVersion, value.m_viewVersion)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (ViewDescription)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ViewDescription clone = (ViewDescription)base.MemberwiseClone();

            clone.m_viewId = (NodeId)Utils.Clone(this.m_viewId);
            clone.m_timestamp = (DateTime)Utils.Clone(this.m_timestamp);
            clone.m_viewVersion = (uint)Utils.Clone(this.m_viewVersion);

            return clone;
        }
        #endregion

        #region Private Fields
        private NodeId m_viewId;
        private DateTime m_timestamp;
        private uint m_viewVersion;
        #endregion
    }
    #endif
    #endregion

    #region BrowseDescription Class
    #if (!OPCUA_EXCLUDE_BrowseDescription)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class BrowseDescription : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public BrowseDescription()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_nodeId = null;
            m_browseDirection = BrowseDirection.Forward;
            m_referenceTypeId = null;
            m_includeSubtypes = true;
            m_nodeClassMask = (uint)0;
            m_resultMask = (uint)0;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "NodeId", IsRequired = false, Order = 1)]
        public NodeId NodeId
        {
            get { return m_nodeId;  }
            set { m_nodeId = value; }
        }

        /// <remarks />
        [DataMember(Name = "BrowseDirection", IsRequired = false, Order = 2)]
        public BrowseDirection BrowseDirection
        {
            get { return m_browseDirection;  }
            set { m_browseDirection = value; }
        }

        /// <remarks />
        [DataMember(Name = "ReferenceTypeId", IsRequired = false, Order = 3)]
        public NodeId ReferenceTypeId
        {
            get { return m_referenceTypeId;  }
            set { m_referenceTypeId = value; }
        }

        /// <remarks />
        [DataMember(Name = "IncludeSubtypes", IsRequired = false, Order = 4)]
        public bool IncludeSubtypes
        {
            get { return m_includeSubtypes;  }
            set { m_includeSubtypes = value; }
        }

        /// <remarks />
        [DataMember(Name = "NodeClassMask", IsRequired = false, Order = 5)]
        public uint NodeClassMask
        {
            get { return m_nodeClassMask;  }
            set { m_nodeClassMask = value; }
        }

        /// <remarks />
        [DataMember(Name = "ResultMask", IsRequired = false, Order = 6)]
        public uint ResultMask
        {
            get { return m_resultMask;  }
            set { m_resultMask = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.BrowseDescription; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.BrowseDescription_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.BrowseDescription_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteNodeId("NodeId", NodeId);
            encoder.WriteEnumerated("BrowseDirection", BrowseDirection);
            encoder.WriteNodeId("ReferenceTypeId", ReferenceTypeId);
            encoder.WriteBoolean("IncludeSubtypes", IncludeSubtypes);
            encoder.WriteUInt32("NodeClassMask", NodeClassMask);
            encoder.WriteUInt32("ResultMask", ResultMask);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            NodeId = decoder.ReadNodeId("NodeId");
            BrowseDirection = (BrowseDirection)decoder.ReadEnumerated("BrowseDirection", typeof(BrowseDirection));
            ReferenceTypeId = decoder.ReadNodeId("ReferenceTypeId");
            IncludeSubtypes = decoder.ReadBoolean("IncludeSubtypes");
            NodeClassMask = decoder.ReadUInt32("NodeClassMask");
            ResultMask = decoder.ReadUInt32("ResultMask");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            BrowseDescription value = encodeable as BrowseDescription;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_nodeId, value.m_nodeId)) return false;
            if (!Utils.IsEqual(m_browseDirection, value.m_browseDirection)) return false;
            if (!Utils.IsEqual(m_referenceTypeId, value.m_referenceTypeId)) return false;
            if (!Utils.IsEqual(m_includeSubtypes, value.m_includeSubtypes)) return false;
            if (!Utils.IsEqual(m_nodeClassMask, value.m_nodeClassMask)) return false;
            if (!Utils.IsEqual(m_resultMask, value.m_resultMask)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (BrowseDescription)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            BrowseDescription clone = (BrowseDescription)base.MemberwiseClone();

            clone.m_nodeId = (NodeId)Utils.Clone(this.m_nodeId);
            clone.m_browseDirection = (BrowseDirection)Utils.Clone(this.m_browseDirection);
            clone.m_referenceTypeId = (NodeId)Utils.Clone(this.m_referenceTypeId);
            clone.m_includeSubtypes = (bool)Utils.Clone(this.m_includeSubtypes);
            clone.m_nodeClassMask = (uint)Utils.Clone(this.m_nodeClassMask);
            clone.m_resultMask = (uint)Utils.Clone(this.m_resultMask);

            return clone;
        }
        #endregion

        #region Private Fields
        private NodeId m_nodeId;
        private BrowseDirection m_browseDirection;
        private NodeId m_referenceTypeId;
        private bool m_includeSubtypes;
        private uint m_nodeClassMask;
        private uint m_resultMask;
        #endregion
    }

    #region BrowseDescriptionCollection Class
    /// <summary>
    /// A collection of BrowseDescription objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfBrowseDescription", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "BrowseDescription")]
    #if !NET_STANDARD
    public partial class BrowseDescriptionCollection : List<BrowseDescription>, ICloneable
    #else
    public partial class BrowseDescriptionCollection : List<BrowseDescription>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public BrowseDescriptionCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public BrowseDescriptionCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public BrowseDescriptionCollection(IEnumerable<BrowseDescription> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator BrowseDescriptionCollection(BrowseDescription[] values)
        {
            if (values != null)
            {
                return new BrowseDescriptionCollection(values);
            }

            return new BrowseDescriptionCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator BrowseDescription[](BrowseDescriptionCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (BrowseDescriptionCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            BrowseDescriptionCollection clone = new BrowseDescriptionCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((BrowseDescription)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region BrowseResultMask Enumeration
    #if (!OPCUA_EXCLUDE_BrowseResultMask)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public enum BrowseResultMask
    {
        /// <remarks />
        [EnumMember(Value = "None_0")]
        None = 0,

        /// <remarks />
        [EnumMember(Value = "ReferenceTypeId_1")]
        ReferenceTypeId = 1,

        /// <remarks />
        [EnumMember(Value = "IsForward_2")]
        IsForward = 2,

        /// <remarks />
        [EnumMember(Value = "NodeClass_4")]
        NodeClass = 4,

        /// <remarks />
        [EnumMember(Value = "BrowseName_8")]
        BrowseName = 8,

        /// <remarks />
        [EnumMember(Value = "DisplayName_16")]
        DisplayName = 16,

        /// <remarks />
        [EnumMember(Value = "TypeDefinition_32")]
        TypeDefinition = 32,

        /// <remarks />
        [EnumMember(Value = "All_63")]
        All = 63,

        /// <remarks />
        [EnumMember(Value = "ReferenceTypeInfo_3")]
        ReferenceTypeInfo = 3,

        /// <remarks />
        [EnumMember(Value = "TargetInfo_60")]
        TargetInfo = 60,
    }
    #endif
    #endregion

    #region ReferenceDescription Class
    #if (!OPCUA_EXCLUDE_ReferenceDescription)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ReferenceDescription : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ReferenceDescription()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_referenceTypeId = null;
            m_isForward = true;
            m_nodeId = null;
            m_browseName = null;
            m_displayName = null;
            m_nodeClass = NodeClass.Unspecified;
            m_typeDefinition = null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "ReferenceTypeId", IsRequired = false, Order = 1)]
        public NodeId ReferenceTypeId
        {
            get { return m_referenceTypeId;  }
            set { m_referenceTypeId = value; }
        }

        /// <remarks />
        [DataMember(Name = "IsForward", IsRequired = false, Order = 2)]
        public bool IsForward
        {
            get { return m_isForward;  }
            set { m_isForward = value; }
        }

        /// <remarks />
        [DataMember(Name = "NodeId", IsRequired = false, Order = 3)]
        public ExpandedNodeId NodeId
        {
            get { return m_nodeId;  }
            set { m_nodeId = value; }
        }

        /// <remarks />
        [DataMember(Name = "BrowseName", IsRequired = false, Order = 4)]
        public QualifiedName BrowseName
        {
            get { return m_browseName;  }
            set { m_browseName = value; }
        }

        /// <remarks />
        [DataMember(Name = "DisplayName", IsRequired = false, Order = 5)]
        public LocalizedText DisplayName
        {
            get { return m_displayName;  }
            set { m_displayName = value; }
        }

        /// <remarks />
        [DataMember(Name = "NodeClass", IsRequired = false, Order = 6)]
        public NodeClass NodeClass
        {
            get { return m_nodeClass;  }
            set { m_nodeClass = value; }
        }

        /// <remarks />
        [DataMember(Name = "TypeDefinition", IsRequired = false, Order = 7)]
        public ExpandedNodeId TypeDefinition
        {
            get { return m_typeDefinition;  }
            set { m_typeDefinition = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ReferenceDescription; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ReferenceDescription_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ReferenceDescription_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteNodeId("ReferenceTypeId", ReferenceTypeId);
            encoder.WriteBoolean("IsForward", IsForward);
            encoder.WriteExpandedNodeId("NodeId", NodeId);
            encoder.WriteQualifiedName("BrowseName", BrowseName);
            encoder.WriteLocalizedText("DisplayName", DisplayName);
            encoder.WriteEnumerated("NodeClass", NodeClass);
            encoder.WriteExpandedNodeId("TypeDefinition", TypeDefinition);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ReferenceTypeId = decoder.ReadNodeId("ReferenceTypeId");
            IsForward = decoder.ReadBoolean("IsForward");
            NodeId = decoder.ReadExpandedNodeId("NodeId");
            BrowseName = decoder.ReadQualifiedName("BrowseName");
            DisplayName = decoder.ReadLocalizedText("DisplayName");
            NodeClass = (NodeClass)decoder.ReadEnumerated("NodeClass", typeof(NodeClass));
            TypeDefinition = decoder.ReadExpandedNodeId("TypeDefinition");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ReferenceDescription value = encodeable as ReferenceDescription;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_referenceTypeId, value.m_referenceTypeId)) return false;
            if (!Utils.IsEqual(m_isForward, value.m_isForward)) return false;
            if (!Utils.IsEqual(m_nodeId, value.m_nodeId)) return false;
            if (!Utils.IsEqual(m_browseName, value.m_browseName)) return false;
            if (!Utils.IsEqual(m_displayName, value.m_displayName)) return false;
            if (!Utils.IsEqual(m_nodeClass, value.m_nodeClass)) return false;
            if (!Utils.IsEqual(m_typeDefinition, value.m_typeDefinition)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (ReferenceDescription)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ReferenceDescription clone = (ReferenceDescription)base.MemberwiseClone();

            clone.m_referenceTypeId = (NodeId)Utils.Clone(this.m_referenceTypeId);
            clone.m_isForward = (bool)Utils.Clone(this.m_isForward);
            clone.m_nodeId = (ExpandedNodeId)Utils.Clone(this.m_nodeId);
            clone.m_browseName = (QualifiedName)Utils.Clone(this.m_browseName);
            clone.m_displayName = (LocalizedText)Utils.Clone(this.m_displayName);
            clone.m_nodeClass = (NodeClass)Utils.Clone(this.m_nodeClass);
            clone.m_typeDefinition = (ExpandedNodeId)Utils.Clone(this.m_typeDefinition);

            return clone;
        }
        #endregion

        #region Private Fields
        private NodeId m_referenceTypeId;
        private bool m_isForward;
        private ExpandedNodeId m_nodeId;
        private QualifiedName m_browseName;
        private LocalizedText m_displayName;
        private NodeClass m_nodeClass;
        private ExpandedNodeId m_typeDefinition;
        #endregion
    }

    #region ReferenceDescriptionCollection Class
    /// <summary>
    /// A collection of ReferenceDescription objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfReferenceDescription", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "ReferenceDescription")]
    #if !NET_STANDARD
    public partial class ReferenceDescriptionCollection : List<ReferenceDescription>, ICloneable
    #else
    public partial class ReferenceDescriptionCollection : List<ReferenceDescription>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public ReferenceDescriptionCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public ReferenceDescriptionCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public ReferenceDescriptionCollection(IEnumerable<ReferenceDescription> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator ReferenceDescriptionCollection(ReferenceDescription[] values)
        {
            if (values != null)
            {
                return new ReferenceDescriptionCollection(values);
            }

            return new ReferenceDescriptionCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator ReferenceDescription[](ReferenceDescriptionCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (ReferenceDescriptionCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ReferenceDescriptionCollection clone = new ReferenceDescriptionCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((ReferenceDescription)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region BrowseResult Class
    #if (!OPCUA_EXCLUDE_BrowseResult)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class BrowseResult : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public BrowseResult()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_statusCode = StatusCodes.Good;
            m_continuationPoint = null;
            m_references = new ReferenceDescriptionCollection();
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "StatusCode", IsRequired = false, Order = 1)]
        public StatusCode StatusCode
        {
            get { return m_statusCode;  }
            set { m_statusCode = value; }
        }

        /// <remarks />
        [DataMember(Name = "ContinuationPoint", IsRequired = false, Order = 2)]
        public byte[] ContinuationPoint
        {
            get { return m_continuationPoint;  }
            set { m_continuationPoint = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "References", IsRequired = false, Order = 3)]
        public ReferenceDescriptionCollection References
        {
            get
            {
                return m_references;
            }

            set
            {
                m_references = value;

                if (value == null)
                {
                    m_references = new ReferenceDescriptionCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.BrowseResult; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.BrowseResult_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.BrowseResult_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteStatusCode("StatusCode", StatusCode);
            encoder.WriteByteString("ContinuationPoint", ContinuationPoint);
            encoder.WriteEncodeableArray("References", References.ToArray(), typeof(ReferenceDescription));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            StatusCode = decoder.ReadStatusCode("StatusCode");
            ContinuationPoint = decoder.ReadByteString("ContinuationPoint");
            References = (ReferenceDescriptionCollection)decoder.ReadEncodeableArray("References", typeof(ReferenceDescription));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            BrowseResult value = encodeable as BrowseResult;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_statusCode, value.m_statusCode)) return false;
            if (!Utils.IsEqual(m_continuationPoint, value.m_continuationPoint)) return false;
            if (!Utils.IsEqual(m_references, value.m_references)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (BrowseResult)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            BrowseResult clone = (BrowseResult)base.MemberwiseClone();

            clone.m_statusCode = (StatusCode)Utils.Clone(this.m_statusCode);
            clone.m_continuationPoint = (byte[])Utils.Clone(this.m_continuationPoint);
            clone.m_references = (ReferenceDescriptionCollection)Utils.Clone(this.m_references);

            return clone;
        }
        #endregion

        #region Private Fields
        private StatusCode m_statusCode;
        private byte[] m_continuationPoint;
        private ReferenceDescriptionCollection m_references;
        #endregion
    }

    #region BrowseResultCollection Class
    /// <summary>
    /// A collection of BrowseResult objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfBrowseResult", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "BrowseResult")]
    #if !NET_STANDARD
    public partial class BrowseResultCollection : List<BrowseResult>, ICloneable
    #else
    public partial class BrowseResultCollection : List<BrowseResult>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public BrowseResultCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public BrowseResultCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public BrowseResultCollection(IEnumerable<BrowseResult> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator BrowseResultCollection(BrowseResult[] values)
        {
            if (values != null)
            {
                return new BrowseResultCollection(values);
            }

            return new BrowseResultCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator BrowseResult[](BrowseResultCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (BrowseResultCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            BrowseResultCollection clone = new BrowseResultCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((BrowseResult)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region BrowseRequest Class
    #if (!OPCUA_EXCLUDE_BrowseRequest)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class BrowseRequest : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public BrowseRequest()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_requestHeader = new RequestHeader();
            m_view = new ViewDescription();
            m_requestedMaxReferencesPerNode = (uint)0;
            m_nodesToBrowse = new BrowseDescriptionCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RequestHeader", IsRequired = false, Order = 1)]
        public RequestHeader RequestHeader
        {
            get
            {
                return m_requestHeader;
            }

            set
            {
                m_requestHeader = value;

                if (value == null)
                {
                    m_requestHeader = new RequestHeader();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "View", IsRequired = false, Order = 2)]
        public ViewDescription View
        {
            get
            {
                return m_view;
            }

            set
            {
                m_view = value;

                if (value == null)
                {
                    m_view = new ViewDescription();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "RequestedMaxReferencesPerNode", IsRequired = false, Order = 3)]
        public uint RequestedMaxReferencesPerNode
        {
            get { return m_requestedMaxReferencesPerNode;  }
            set { m_requestedMaxReferencesPerNode = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "NodesToBrowse", IsRequired = false, Order = 4)]
        public BrowseDescriptionCollection NodesToBrowse
        {
            get
            {
                return m_nodesToBrowse;
            }

            set
            {
                m_nodesToBrowse = value;

                if (value == null)
                {
                    m_nodesToBrowse = new BrowseDescriptionCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.BrowseRequest; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.BrowseRequest_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.BrowseRequest_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("RequestHeader", RequestHeader, typeof(RequestHeader));
            encoder.WriteEncodeable("View", View, typeof(ViewDescription));
            encoder.WriteUInt32("RequestedMaxReferencesPerNode", RequestedMaxReferencesPerNode);
            encoder.WriteEncodeableArray("NodesToBrowse", NodesToBrowse.ToArray(), typeof(BrowseDescription));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            RequestHeader = (RequestHeader)decoder.ReadEncodeable("RequestHeader", typeof(RequestHeader));
            View = (ViewDescription)decoder.ReadEncodeable("View", typeof(ViewDescription));
            RequestedMaxReferencesPerNode = decoder.ReadUInt32("RequestedMaxReferencesPerNode");
            NodesToBrowse = (BrowseDescriptionCollection)decoder.ReadEncodeableArray("NodesToBrowse", typeof(BrowseDescription));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            BrowseRequest value = encodeable as BrowseRequest;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_requestHeader, value.m_requestHeader)) return false;
            if (!Utils.IsEqual(m_view, value.m_view)) return false;
            if (!Utils.IsEqual(m_requestedMaxReferencesPerNode, value.m_requestedMaxReferencesPerNode)) return false;
            if (!Utils.IsEqual(m_nodesToBrowse, value.m_nodesToBrowse)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (BrowseRequest)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            BrowseRequest clone = (BrowseRequest)base.MemberwiseClone();

            clone.m_requestHeader = (RequestHeader)Utils.Clone(this.m_requestHeader);
            clone.m_view = (ViewDescription)Utils.Clone(this.m_view);
            clone.m_requestedMaxReferencesPerNode = (uint)Utils.Clone(this.m_requestedMaxReferencesPerNode);
            clone.m_nodesToBrowse = (BrowseDescriptionCollection)Utils.Clone(this.m_nodesToBrowse);

            return clone;
        }
        #endregion

        #region Private Fields
        private RequestHeader m_requestHeader;
        private ViewDescription m_view;
        private uint m_requestedMaxReferencesPerNode;
        private BrowseDescriptionCollection m_nodesToBrowse;
        #endregion
    }
    #endif
    #endregion

    #region BrowseResponse Class
    #if (!OPCUA_EXCLUDE_BrowseResponse)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class BrowseResponse : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public BrowseResponse()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_responseHeader = new ResponseHeader();
            m_results = new BrowseResultCollection();
            m_diagnosticInfos = new DiagnosticInfoCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ResponseHeader", IsRequired = false, Order = 1)]
        public ResponseHeader ResponseHeader
        {
            get
            {
                return m_responseHeader;
            }

            set
            {
                m_responseHeader = value;

                if (value == null)
                {
                    m_responseHeader = new ResponseHeader();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "Results", IsRequired = false, Order = 2)]
        public BrowseResultCollection Results
        {
            get
            {
                return m_results;
            }

            set
            {
                m_results = value;

                if (value == null)
                {
                    m_results = new BrowseResultCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "DiagnosticInfos", IsRequired = false, Order = 3)]
        public DiagnosticInfoCollection DiagnosticInfos
        {
            get
            {
                return m_diagnosticInfos;
            }

            set
            {
                m_diagnosticInfos = value;

                if (value == null)
                {
                    m_diagnosticInfos = new DiagnosticInfoCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.BrowseResponse; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.BrowseResponse_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.BrowseResponse_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("ResponseHeader", ResponseHeader, typeof(ResponseHeader));
            encoder.WriteEncodeableArray("Results", Results.ToArray(), typeof(BrowseResult));
            encoder.WriteDiagnosticInfoArray("DiagnosticInfos", DiagnosticInfos);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ResponseHeader = (ResponseHeader)decoder.ReadEncodeable("ResponseHeader", typeof(ResponseHeader));
            Results = (BrowseResultCollection)decoder.ReadEncodeableArray("Results", typeof(BrowseResult));
            DiagnosticInfos = decoder.ReadDiagnosticInfoArray("DiagnosticInfos");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            BrowseResponse value = encodeable as BrowseResponse;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_responseHeader, value.m_responseHeader)) return false;
            if (!Utils.IsEqual(m_results, value.m_results)) return false;
            if (!Utils.IsEqual(m_diagnosticInfos, value.m_diagnosticInfos)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (BrowseResponse)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            BrowseResponse clone = (BrowseResponse)base.MemberwiseClone();

            clone.m_responseHeader = (ResponseHeader)Utils.Clone(this.m_responseHeader);
            clone.m_results = (BrowseResultCollection)Utils.Clone(this.m_results);
            clone.m_diagnosticInfos = (DiagnosticInfoCollection)Utils.Clone(this.m_diagnosticInfos);

            return clone;
        }
        #endregion

        #region Private Fields
        private ResponseHeader m_responseHeader;
        private BrowseResultCollection m_results;
        private DiagnosticInfoCollection m_diagnosticInfos;
        #endregion
    }
    #endif
    #endregion

    #region BrowseNextRequest Class
    #if (!OPCUA_EXCLUDE_BrowseNextRequest)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class BrowseNextRequest : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public BrowseNextRequest()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_requestHeader = new RequestHeader();
            m_releaseContinuationPoints = true;
            m_continuationPoints = new ByteStringCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RequestHeader", IsRequired = false, Order = 1)]
        public RequestHeader RequestHeader
        {
            get
            {
                return m_requestHeader;
            }

            set
            {
                m_requestHeader = value;

                if (value == null)
                {
                    m_requestHeader = new RequestHeader();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "ReleaseContinuationPoints", IsRequired = false, Order = 2)]
        public bool ReleaseContinuationPoints
        {
            get { return m_releaseContinuationPoints;  }
            set { m_releaseContinuationPoints = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ContinuationPoints", IsRequired = false, Order = 3)]
        public ByteStringCollection ContinuationPoints
        {
            get
            {
                return m_continuationPoints;
            }

            set
            {
                m_continuationPoints = value;

                if (value == null)
                {
                    m_continuationPoints = new ByteStringCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.BrowseNextRequest; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.BrowseNextRequest_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.BrowseNextRequest_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("RequestHeader", RequestHeader, typeof(RequestHeader));
            encoder.WriteBoolean("ReleaseContinuationPoints", ReleaseContinuationPoints);
            encoder.WriteByteStringArray("ContinuationPoints", ContinuationPoints);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            RequestHeader = (RequestHeader)decoder.ReadEncodeable("RequestHeader", typeof(RequestHeader));
            ReleaseContinuationPoints = decoder.ReadBoolean("ReleaseContinuationPoints");
            ContinuationPoints = decoder.ReadByteStringArray("ContinuationPoints");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            BrowseNextRequest value = encodeable as BrowseNextRequest;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_requestHeader, value.m_requestHeader)) return false;
            if (!Utils.IsEqual(m_releaseContinuationPoints, value.m_releaseContinuationPoints)) return false;
            if (!Utils.IsEqual(m_continuationPoints, value.m_continuationPoints)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (BrowseNextRequest)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            BrowseNextRequest clone = (BrowseNextRequest)base.MemberwiseClone();

            clone.m_requestHeader = (RequestHeader)Utils.Clone(this.m_requestHeader);
            clone.m_releaseContinuationPoints = (bool)Utils.Clone(this.m_releaseContinuationPoints);
            clone.m_continuationPoints = (ByteStringCollection)Utils.Clone(this.m_continuationPoints);

            return clone;
        }
        #endregion

        #region Private Fields
        private RequestHeader m_requestHeader;
        private bool m_releaseContinuationPoints;
        private ByteStringCollection m_continuationPoints;
        #endregion
    }
    #endif
    #endregion

    #region BrowseNextResponse Class
    #if (!OPCUA_EXCLUDE_BrowseNextResponse)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class BrowseNextResponse : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public BrowseNextResponse()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_responseHeader = new ResponseHeader();
            m_results = new BrowseResultCollection();
            m_diagnosticInfos = new DiagnosticInfoCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ResponseHeader", IsRequired = false, Order = 1)]
        public ResponseHeader ResponseHeader
        {
            get
            {
                return m_responseHeader;
            }

            set
            {
                m_responseHeader = value;

                if (value == null)
                {
                    m_responseHeader = new ResponseHeader();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "Results", IsRequired = false, Order = 2)]
        public BrowseResultCollection Results
        {
            get
            {
                return m_results;
            }

            set
            {
                m_results = value;

                if (value == null)
                {
                    m_results = new BrowseResultCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "DiagnosticInfos", IsRequired = false, Order = 3)]
        public DiagnosticInfoCollection DiagnosticInfos
        {
            get
            {
                return m_diagnosticInfos;
            }

            set
            {
                m_diagnosticInfos = value;

                if (value == null)
                {
                    m_diagnosticInfos = new DiagnosticInfoCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.BrowseNextResponse; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.BrowseNextResponse_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.BrowseNextResponse_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("ResponseHeader", ResponseHeader, typeof(ResponseHeader));
            encoder.WriteEncodeableArray("Results", Results.ToArray(), typeof(BrowseResult));
            encoder.WriteDiagnosticInfoArray("DiagnosticInfos", DiagnosticInfos);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ResponseHeader = (ResponseHeader)decoder.ReadEncodeable("ResponseHeader", typeof(ResponseHeader));
            Results = (BrowseResultCollection)decoder.ReadEncodeableArray("Results", typeof(BrowseResult));
            DiagnosticInfos = decoder.ReadDiagnosticInfoArray("DiagnosticInfos");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            BrowseNextResponse value = encodeable as BrowseNextResponse;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_responseHeader, value.m_responseHeader)) return false;
            if (!Utils.IsEqual(m_results, value.m_results)) return false;
            if (!Utils.IsEqual(m_diagnosticInfos, value.m_diagnosticInfos)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (BrowseNextResponse)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            BrowseNextResponse clone = (BrowseNextResponse)base.MemberwiseClone();

            clone.m_responseHeader = (ResponseHeader)Utils.Clone(this.m_responseHeader);
            clone.m_results = (BrowseResultCollection)Utils.Clone(this.m_results);
            clone.m_diagnosticInfos = (DiagnosticInfoCollection)Utils.Clone(this.m_diagnosticInfos);

            return clone;
        }
        #endregion

        #region Private Fields
        private ResponseHeader m_responseHeader;
        private BrowseResultCollection m_results;
        private DiagnosticInfoCollection m_diagnosticInfos;
        #endregion
    }
    #endif
    #endregion

    #region RelativePathElement Class
    #if (!OPCUA_EXCLUDE_RelativePathElement)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class RelativePathElement : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public RelativePathElement()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_referenceTypeId = null;
            m_isInverse = true;
            m_includeSubtypes = true;
            m_targetName = null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "ReferenceTypeId", IsRequired = false, Order = 1)]
        public NodeId ReferenceTypeId
        {
            get { return m_referenceTypeId;  }
            set { m_referenceTypeId = value; }
        }

        /// <remarks />
        [DataMember(Name = "IsInverse", IsRequired = false, Order = 2)]
        public bool IsInverse
        {
            get { return m_isInverse;  }
            set { m_isInverse = value; }
        }

        /// <remarks />
        [DataMember(Name = "IncludeSubtypes", IsRequired = false, Order = 3)]
        public bool IncludeSubtypes
        {
            get { return m_includeSubtypes;  }
            set { m_includeSubtypes = value; }
        }

        /// <remarks />
        [DataMember(Name = "TargetName", IsRequired = false, Order = 4)]
        public QualifiedName TargetName
        {
            get { return m_targetName;  }
            set { m_targetName = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.RelativePathElement; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.RelativePathElement_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.RelativePathElement_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteNodeId("ReferenceTypeId", ReferenceTypeId);
            encoder.WriteBoolean("IsInverse", IsInverse);
            encoder.WriteBoolean("IncludeSubtypes", IncludeSubtypes);
            encoder.WriteQualifiedName("TargetName", TargetName);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ReferenceTypeId = decoder.ReadNodeId("ReferenceTypeId");
            IsInverse = decoder.ReadBoolean("IsInverse");
            IncludeSubtypes = decoder.ReadBoolean("IncludeSubtypes");
            TargetName = decoder.ReadQualifiedName("TargetName");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            RelativePathElement value = encodeable as RelativePathElement;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_referenceTypeId, value.m_referenceTypeId)) return false;
            if (!Utils.IsEqual(m_isInverse, value.m_isInverse)) return false;
            if (!Utils.IsEqual(m_includeSubtypes, value.m_includeSubtypes)) return false;
            if (!Utils.IsEqual(m_targetName, value.m_targetName)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (RelativePathElement)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            RelativePathElement clone = (RelativePathElement)base.MemberwiseClone();

            clone.m_referenceTypeId = (NodeId)Utils.Clone(this.m_referenceTypeId);
            clone.m_isInverse = (bool)Utils.Clone(this.m_isInverse);
            clone.m_includeSubtypes = (bool)Utils.Clone(this.m_includeSubtypes);
            clone.m_targetName = (QualifiedName)Utils.Clone(this.m_targetName);

            return clone;
        }
        #endregion

        #region Private Fields
        private NodeId m_referenceTypeId;
        private bool m_isInverse;
        private bool m_includeSubtypes;
        private QualifiedName m_targetName;
        #endregion
    }

    #region RelativePathElementCollection Class
    /// <summary>
    /// A collection of RelativePathElement objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfRelativePathElement", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "RelativePathElement")]
    #if !NET_STANDARD
    public partial class RelativePathElementCollection : List<RelativePathElement>, ICloneable
    #else
    public partial class RelativePathElementCollection : List<RelativePathElement>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public RelativePathElementCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public RelativePathElementCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public RelativePathElementCollection(IEnumerable<RelativePathElement> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator RelativePathElementCollection(RelativePathElement[] values)
        {
            if (values != null)
            {
                return new RelativePathElementCollection(values);
            }

            return new RelativePathElementCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator RelativePathElement[](RelativePathElementCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (RelativePathElementCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            RelativePathElementCollection clone = new RelativePathElementCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((RelativePathElement)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region RelativePath Class
    #if (!OPCUA_EXCLUDE_RelativePath)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class RelativePath : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public RelativePath()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_elements = new RelativePathElementCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "Elements", IsRequired = false, Order = 1)]
        public RelativePathElementCollection Elements
        {
            get
            {
                return m_elements;
            }

            set
            {
                m_elements = value;

                if (value == null)
                {
                    m_elements = new RelativePathElementCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.RelativePath; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.RelativePath_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.RelativePath_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeableArray("Elements", Elements.ToArray(), typeof(RelativePathElement));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            Elements = (RelativePathElementCollection)decoder.ReadEncodeableArray("Elements", typeof(RelativePathElement));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            RelativePath value = encodeable as RelativePath;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_elements, value.m_elements)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (RelativePath)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            RelativePath clone = (RelativePath)base.MemberwiseClone();

            clone.m_elements = (RelativePathElementCollection)Utils.Clone(this.m_elements);

            return clone;
        }
        #endregion

        #region Private Fields
        private RelativePathElementCollection m_elements;
        #endregion
    }
    #endif
    #endregion

    #region BrowsePath Class
    #if (!OPCUA_EXCLUDE_BrowsePath)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class BrowsePath : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public BrowsePath()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_startingNode = null;
            m_relativePath = new RelativePath();
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "StartingNode", IsRequired = false, Order = 1)]
        public NodeId StartingNode
        {
            get { return m_startingNode;  }
            set { m_startingNode = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RelativePath", IsRequired = false, Order = 2)]
        public RelativePath RelativePath
        {
            get
            {
                return m_relativePath;
            }

            set
            {
                m_relativePath = value;

                if (value == null)
                {
                    m_relativePath = new RelativePath();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.BrowsePath; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.BrowsePath_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.BrowsePath_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteNodeId("StartingNode", StartingNode);
            encoder.WriteEncodeable("RelativePath", RelativePath, typeof(RelativePath));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            StartingNode = decoder.ReadNodeId("StartingNode");
            RelativePath = (RelativePath)decoder.ReadEncodeable("RelativePath", typeof(RelativePath));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            BrowsePath value = encodeable as BrowsePath;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_startingNode, value.m_startingNode)) return false;
            if (!Utils.IsEqual(m_relativePath, value.m_relativePath)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (BrowsePath)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            BrowsePath clone = (BrowsePath)base.MemberwiseClone();

            clone.m_startingNode = (NodeId)Utils.Clone(this.m_startingNode);
            clone.m_relativePath = (RelativePath)Utils.Clone(this.m_relativePath);

            return clone;
        }
        #endregion

        #region Private Fields
        private NodeId m_startingNode;
        private RelativePath m_relativePath;
        #endregion
    }

    #region BrowsePathCollection Class
    /// <summary>
    /// A collection of BrowsePath objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfBrowsePath", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "BrowsePath")]
    #if !NET_STANDARD
    public partial class BrowsePathCollection : List<BrowsePath>, ICloneable
    #else
    public partial class BrowsePathCollection : List<BrowsePath>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public BrowsePathCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public BrowsePathCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public BrowsePathCollection(IEnumerable<BrowsePath> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator BrowsePathCollection(BrowsePath[] values)
        {
            if (values != null)
            {
                return new BrowsePathCollection(values);
            }

            return new BrowsePathCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator BrowsePath[](BrowsePathCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (BrowsePathCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            BrowsePathCollection clone = new BrowsePathCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((BrowsePath)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region BrowsePathTarget Class
    #if (!OPCUA_EXCLUDE_BrowsePathTarget)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class BrowsePathTarget : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public BrowsePathTarget()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_targetId = null;
            m_remainingPathIndex = (uint)0;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "TargetId", IsRequired = false, Order = 1)]
        public ExpandedNodeId TargetId
        {
            get { return m_targetId;  }
            set { m_targetId = value; }
        }

        /// <remarks />
        [DataMember(Name = "RemainingPathIndex", IsRequired = false, Order = 2)]
        public uint RemainingPathIndex
        {
            get { return m_remainingPathIndex;  }
            set { m_remainingPathIndex = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.BrowsePathTarget; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.BrowsePathTarget_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.BrowsePathTarget_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteExpandedNodeId("TargetId", TargetId);
            encoder.WriteUInt32("RemainingPathIndex", RemainingPathIndex);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            TargetId = decoder.ReadExpandedNodeId("TargetId");
            RemainingPathIndex = decoder.ReadUInt32("RemainingPathIndex");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            BrowsePathTarget value = encodeable as BrowsePathTarget;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_targetId, value.m_targetId)) return false;
            if (!Utils.IsEqual(m_remainingPathIndex, value.m_remainingPathIndex)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (BrowsePathTarget)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            BrowsePathTarget clone = (BrowsePathTarget)base.MemberwiseClone();

            clone.m_targetId = (ExpandedNodeId)Utils.Clone(this.m_targetId);
            clone.m_remainingPathIndex = (uint)Utils.Clone(this.m_remainingPathIndex);

            return clone;
        }
        #endregion

        #region Private Fields
        private ExpandedNodeId m_targetId;
        private uint m_remainingPathIndex;
        #endregion
    }

    #region BrowsePathTargetCollection Class
    /// <summary>
    /// A collection of BrowsePathTarget objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfBrowsePathTarget", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "BrowsePathTarget")]
    #if !NET_STANDARD
    public partial class BrowsePathTargetCollection : List<BrowsePathTarget>, ICloneable
    #else
    public partial class BrowsePathTargetCollection : List<BrowsePathTarget>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public BrowsePathTargetCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public BrowsePathTargetCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public BrowsePathTargetCollection(IEnumerable<BrowsePathTarget> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator BrowsePathTargetCollection(BrowsePathTarget[] values)
        {
            if (values != null)
            {
                return new BrowsePathTargetCollection(values);
            }

            return new BrowsePathTargetCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator BrowsePathTarget[](BrowsePathTargetCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (BrowsePathTargetCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            BrowsePathTargetCollection clone = new BrowsePathTargetCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((BrowsePathTarget)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region BrowsePathResult Class
    #if (!OPCUA_EXCLUDE_BrowsePathResult)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class BrowsePathResult : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public BrowsePathResult()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_statusCode = StatusCodes.Good;
            m_targets = new BrowsePathTargetCollection();
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "StatusCode", IsRequired = false, Order = 1)]
        public StatusCode StatusCode
        {
            get { return m_statusCode;  }
            set { m_statusCode = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "Targets", IsRequired = false, Order = 2)]
        public BrowsePathTargetCollection Targets
        {
            get
            {
                return m_targets;
            }

            set
            {
                m_targets = value;

                if (value == null)
                {
                    m_targets = new BrowsePathTargetCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.BrowsePathResult; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.BrowsePathResult_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.BrowsePathResult_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteStatusCode("StatusCode", StatusCode);
            encoder.WriteEncodeableArray("Targets", Targets.ToArray(), typeof(BrowsePathTarget));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            StatusCode = decoder.ReadStatusCode("StatusCode");
            Targets = (BrowsePathTargetCollection)decoder.ReadEncodeableArray("Targets", typeof(BrowsePathTarget));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            BrowsePathResult value = encodeable as BrowsePathResult;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_statusCode, value.m_statusCode)) return false;
            if (!Utils.IsEqual(m_targets, value.m_targets)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (BrowsePathResult)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            BrowsePathResult clone = (BrowsePathResult)base.MemberwiseClone();

            clone.m_statusCode = (StatusCode)Utils.Clone(this.m_statusCode);
            clone.m_targets = (BrowsePathTargetCollection)Utils.Clone(this.m_targets);

            return clone;
        }
        #endregion

        #region Private Fields
        private StatusCode m_statusCode;
        private BrowsePathTargetCollection m_targets;
        #endregion
    }

    #region BrowsePathResultCollection Class
    /// <summary>
    /// A collection of BrowsePathResult objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfBrowsePathResult", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "BrowsePathResult")]
    #if !NET_STANDARD
    public partial class BrowsePathResultCollection : List<BrowsePathResult>, ICloneable
    #else
    public partial class BrowsePathResultCollection : List<BrowsePathResult>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public BrowsePathResultCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public BrowsePathResultCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public BrowsePathResultCollection(IEnumerable<BrowsePathResult> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator BrowsePathResultCollection(BrowsePathResult[] values)
        {
            if (values != null)
            {
                return new BrowsePathResultCollection(values);
            }

            return new BrowsePathResultCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator BrowsePathResult[](BrowsePathResultCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (BrowsePathResultCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            BrowsePathResultCollection clone = new BrowsePathResultCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((BrowsePathResult)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region TranslateBrowsePathsToNodeIdsRequest Class
    #if (!OPCUA_EXCLUDE_TranslateBrowsePathsToNodeIdsRequest)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class TranslateBrowsePathsToNodeIdsRequest : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public TranslateBrowsePathsToNodeIdsRequest()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_requestHeader = new RequestHeader();
            m_browsePaths = new BrowsePathCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RequestHeader", IsRequired = false, Order = 1)]
        public RequestHeader RequestHeader
        {
            get
            {
                return m_requestHeader;
            }

            set
            {
                m_requestHeader = value;

                if (value == null)
                {
                    m_requestHeader = new RequestHeader();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "BrowsePaths", IsRequired = false, Order = 2)]
        public BrowsePathCollection BrowsePaths
        {
            get
            {
                return m_browsePaths;
            }

            set
            {
                m_browsePaths = value;

                if (value == null)
                {
                    m_browsePaths = new BrowsePathCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.TranslateBrowsePathsToNodeIdsRequest; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.TranslateBrowsePathsToNodeIdsRequest_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.TranslateBrowsePathsToNodeIdsRequest_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("RequestHeader", RequestHeader, typeof(RequestHeader));
            encoder.WriteEncodeableArray("BrowsePaths", BrowsePaths.ToArray(), typeof(BrowsePath));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            RequestHeader = (RequestHeader)decoder.ReadEncodeable("RequestHeader", typeof(RequestHeader));
            BrowsePaths = (BrowsePathCollection)decoder.ReadEncodeableArray("BrowsePaths", typeof(BrowsePath));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            TranslateBrowsePathsToNodeIdsRequest value = encodeable as TranslateBrowsePathsToNodeIdsRequest;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_requestHeader, value.m_requestHeader)) return false;
            if (!Utils.IsEqual(m_browsePaths, value.m_browsePaths)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (TranslateBrowsePathsToNodeIdsRequest)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            TranslateBrowsePathsToNodeIdsRequest clone = (TranslateBrowsePathsToNodeIdsRequest)base.MemberwiseClone();

            clone.m_requestHeader = (RequestHeader)Utils.Clone(this.m_requestHeader);
            clone.m_browsePaths = (BrowsePathCollection)Utils.Clone(this.m_browsePaths);

            return clone;
        }
        #endregion

        #region Private Fields
        private RequestHeader m_requestHeader;
        private BrowsePathCollection m_browsePaths;
        #endregion
    }
    #endif
    #endregion

    #region TranslateBrowsePathsToNodeIdsResponse Class
    #if (!OPCUA_EXCLUDE_TranslateBrowsePathsToNodeIdsResponse)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class TranslateBrowsePathsToNodeIdsResponse : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public TranslateBrowsePathsToNodeIdsResponse()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_responseHeader = new ResponseHeader();
            m_results = new BrowsePathResultCollection();
            m_diagnosticInfos = new DiagnosticInfoCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ResponseHeader", IsRequired = false, Order = 1)]
        public ResponseHeader ResponseHeader
        {
            get
            {
                return m_responseHeader;
            }

            set
            {
                m_responseHeader = value;

                if (value == null)
                {
                    m_responseHeader = new ResponseHeader();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "Results", IsRequired = false, Order = 2)]
        public BrowsePathResultCollection Results
        {
            get
            {
                return m_results;
            }

            set
            {
                m_results = value;

                if (value == null)
                {
                    m_results = new BrowsePathResultCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "DiagnosticInfos", IsRequired = false, Order = 3)]
        public DiagnosticInfoCollection DiagnosticInfos
        {
            get
            {
                return m_diagnosticInfos;
            }

            set
            {
                m_diagnosticInfos = value;

                if (value == null)
                {
                    m_diagnosticInfos = new DiagnosticInfoCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.TranslateBrowsePathsToNodeIdsResponse; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.TranslateBrowsePathsToNodeIdsResponse_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.TranslateBrowsePathsToNodeIdsResponse_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("ResponseHeader", ResponseHeader, typeof(ResponseHeader));
            encoder.WriteEncodeableArray("Results", Results.ToArray(), typeof(BrowsePathResult));
            encoder.WriteDiagnosticInfoArray("DiagnosticInfos", DiagnosticInfos);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ResponseHeader = (ResponseHeader)decoder.ReadEncodeable("ResponseHeader", typeof(ResponseHeader));
            Results = (BrowsePathResultCollection)decoder.ReadEncodeableArray("Results", typeof(BrowsePathResult));
            DiagnosticInfos = decoder.ReadDiagnosticInfoArray("DiagnosticInfos");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            TranslateBrowsePathsToNodeIdsResponse value = encodeable as TranslateBrowsePathsToNodeIdsResponse;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_responseHeader, value.m_responseHeader)) return false;
            if (!Utils.IsEqual(m_results, value.m_results)) return false;
            if (!Utils.IsEqual(m_diagnosticInfos, value.m_diagnosticInfos)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (TranslateBrowsePathsToNodeIdsResponse)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            TranslateBrowsePathsToNodeIdsResponse clone = (TranslateBrowsePathsToNodeIdsResponse)base.MemberwiseClone();

            clone.m_responseHeader = (ResponseHeader)Utils.Clone(this.m_responseHeader);
            clone.m_results = (BrowsePathResultCollection)Utils.Clone(this.m_results);
            clone.m_diagnosticInfos = (DiagnosticInfoCollection)Utils.Clone(this.m_diagnosticInfos);

            return clone;
        }
        #endregion

        #region Private Fields
        private ResponseHeader m_responseHeader;
        private BrowsePathResultCollection m_results;
        private DiagnosticInfoCollection m_diagnosticInfos;
        #endregion
    }
    #endif
    #endregion

    #region RegisterNodesRequest Class
    #if (!OPCUA_EXCLUDE_RegisterNodesRequest)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class RegisterNodesRequest : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public RegisterNodesRequest()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_requestHeader = new RequestHeader();
            m_nodesToRegister = new NodeIdCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RequestHeader", IsRequired = false, Order = 1)]
        public RequestHeader RequestHeader
        {
            get
            {
                return m_requestHeader;
            }

            set
            {
                m_requestHeader = value;

                if (value == null)
                {
                    m_requestHeader = new RequestHeader();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "NodesToRegister", IsRequired = false, Order = 2)]
        public NodeIdCollection NodesToRegister
        {
            get
            {
                return m_nodesToRegister;
            }

            set
            {
                m_nodesToRegister = value;

                if (value == null)
                {
                    m_nodesToRegister = new NodeIdCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.RegisterNodesRequest; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.RegisterNodesRequest_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.RegisterNodesRequest_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("RequestHeader", RequestHeader, typeof(RequestHeader));
            encoder.WriteNodeIdArray("NodesToRegister", NodesToRegister);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            RequestHeader = (RequestHeader)decoder.ReadEncodeable("RequestHeader", typeof(RequestHeader));
            NodesToRegister = decoder.ReadNodeIdArray("NodesToRegister");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            RegisterNodesRequest value = encodeable as RegisterNodesRequest;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_requestHeader, value.m_requestHeader)) return false;
            if (!Utils.IsEqual(m_nodesToRegister, value.m_nodesToRegister)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (RegisterNodesRequest)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            RegisterNodesRequest clone = (RegisterNodesRequest)base.MemberwiseClone();

            clone.m_requestHeader = (RequestHeader)Utils.Clone(this.m_requestHeader);
            clone.m_nodesToRegister = (NodeIdCollection)Utils.Clone(this.m_nodesToRegister);

            return clone;
        }
        #endregion

        #region Private Fields
        private RequestHeader m_requestHeader;
        private NodeIdCollection m_nodesToRegister;
        #endregion
    }
    #endif
    #endregion

    #region RegisterNodesResponse Class
    #if (!OPCUA_EXCLUDE_RegisterNodesResponse)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class RegisterNodesResponse : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public RegisterNodesResponse()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_responseHeader = new ResponseHeader();
            m_registeredNodeIds = new NodeIdCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ResponseHeader", IsRequired = false, Order = 1)]
        public ResponseHeader ResponseHeader
        {
            get
            {
                return m_responseHeader;
            }

            set
            {
                m_responseHeader = value;

                if (value == null)
                {
                    m_responseHeader = new ResponseHeader();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RegisteredNodeIds", IsRequired = false, Order = 2)]
        public NodeIdCollection RegisteredNodeIds
        {
            get
            {
                return m_registeredNodeIds;
            }

            set
            {
                m_registeredNodeIds = value;

                if (value == null)
                {
                    m_registeredNodeIds = new NodeIdCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.RegisterNodesResponse; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.RegisterNodesResponse_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.RegisterNodesResponse_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("ResponseHeader", ResponseHeader, typeof(ResponseHeader));
            encoder.WriteNodeIdArray("RegisteredNodeIds", RegisteredNodeIds);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ResponseHeader = (ResponseHeader)decoder.ReadEncodeable("ResponseHeader", typeof(ResponseHeader));
            RegisteredNodeIds = decoder.ReadNodeIdArray("RegisteredNodeIds");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            RegisterNodesResponse value = encodeable as RegisterNodesResponse;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_responseHeader, value.m_responseHeader)) return false;
            if (!Utils.IsEqual(m_registeredNodeIds, value.m_registeredNodeIds)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (RegisterNodesResponse)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            RegisterNodesResponse clone = (RegisterNodesResponse)base.MemberwiseClone();

            clone.m_responseHeader = (ResponseHeader)Utils.Clone(this.m_responseHeader);
            clone.m_registeredNodeIds = (NodeIdCollection)Utils.Clone(this.m_registeredNodeIds);

            return clone;
        }
        #endregion

        #region Private Fields
        private ResponseHeader m_responseHeader;
        private NodeIdCollection m_registeredNodeIds;
        #endregion
    }
    #endif
    #endregion

    #region UnregisterNodesRequest Class
    #if (!OPCUA_EXCLUDE_UnregisterNodesRequest)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class UnregisterNodesRequest : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public UnregisterNodesRequest()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_requestHeader = new RequestHeader();
            m_nodesToUnregister = new NodeIdCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RequestHeader", IsRequired = false, Order = 1)]
        public RequestHeader RequestHeader
        {
            get
            {
                return m_requestHeader;
            }

            set
            {
                m_requestHeader = value;

                if (value == null)
                {
                    m_requestHeader = new RequestHeader();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "NodesToUnregister", IsRequired = false, Order = 2)]
        public NodeIdCollection NodesToUnregister
        {
            get
            {
                return m_nodesToUnregister;
            }

            set
            {
                m_nodesToUnregister = value;

                if (value == null)
                {
                    m_nodesToUnregister = new NodeIdCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.UnregisterNodesRequest; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.UnregisterNodesRequest_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.UnregisterNodesRequest_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("RequestHeader", RequestHeader, typeof(RequestHeader));
            encoder.WriteNodeIdArray("NodesToUnregister", NodesToUnregister);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            RequestHeader = (RequestHeader)decoder.ReadEncodeable("RequestHeader", typeof(RequestHeader));
            NodesToUnregister = decoder.ReadNodeIdArray("NodesToUnregister");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            UnregisterNodesRequest value = encodeable as UnregisterNodesRequest;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_requestHeader, value.m_requestHeader)) return false;
            if (!Utils.IsEqual(m_nodesToUnregister, value.m_nodesToUnregister)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (UnregisterNodesRequest)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            UnregisterNodesRequest clone = (UnregisterNodesRequest)base.MemberwiseClone();

            clone.m_requestHeader = (RequestHeader)Utils.Clone(this.m_requestHeader);
            clone.m_nodesToUnregister = (NodeIdCollection)Utils.Clone(this.m_nodesToUnregister);

            return clone;
        }
        #endregion

        #region Private Fields
        private RequestHeader m_requestHeader;
        private NodeIdCollection m_nodesToUnregister;
        #endregion
    }
    #endif
    #endregion

    #region UnregisterNodesResponse Class
    #if (!OPCUA_EXCLUDE_UnregisterNodesResponse)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class UnregisterNodesResponse : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public UnregisterNodesResponse()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_responseHeader = new ResponseHeader();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ResponseHeader", IsRequired = false, Order = 1)]
        public ResponseHeader ResponseHeader
        {
            get
            {
                return m_responseHeader;
            }

            set
            {
                m_responseHeader = value;

                if (value == null)
                {
                    m_responseHeader = new ResponseHeader();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.UnregisterNodesResponse; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.UnregisterNodesResponse_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.UnregisterNodesResponse_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("ResponseHeader", ResponseHeader, typeof(ResponseHeader));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ResponseHeader = (ResponseHeader)decoder.ReadEncodeable("ResponseHeader", typeof(ResponseHeader));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            UnregisterNodesResponse value = encodeable as UnregisterNodesResponse;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_responseHeader, value.m_responseHeader)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (UnregisterNodesResponse)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            UnregisterNodesResponse clone = (UnregisterNodesResponse)base.MemberwiseClone();

            clone.m_responseHeader = (ResponseHeader)Utils.Clone(this.m_responseHeader);

            return clone;
        }
        #endregion

        #region Private Fields
        private ResponseHeader m_responseHeader;
        #endregion
    }
    #endif
    #endregion

    #region EndpointConfiguration Class
    #if (!OPCUA_EXCLUDE_EndpointConfiguration)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class EndpointConfiguration : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public EndpointConfiguration()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_operationTimeout = (int)0;
            m_useBinaryEncoding = true;
            m_maxStringLength = (int)0;
            m_maxByteStringLength = (int)0;
            m_maxArrayLength = (int)0;
            m_maxMessageSize = (int)0;
            m_maxBufferSize = (int)0;
            m_channelLifetime = (int)0;
            m_securityTokenLifetime = (int)0;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "OperationTimeout", IsRequired = false, Order = 1)]
        public int OperationTimeout
        {
            get { return m_operationTimeout;  }
            set { m_operationTimeout = value; }
        }

        /// <remarks />
        [DataMember(Name = "UseBinaryEncoding", IsRequired = false, Order = 2)]
        public bool UseBinaryEncoding
        {
            get { return m_useBinaryEncoding;  }
            set { m_useBinaryEncoding = value; }
        }

        /// <remarks />
        [DataMember(Name = "MaxStringLength", IsRequired = false, Order = 3)]
        public int MaxStringLength
        {
            get { return m_maxStringLength;  }
            set { m_maxStringLength = value; }
        }

        /// <remarks />
        [DataMember(Name = "MaxByteStringLength", IsRequired = false, Order = 4)]
        public int MaxByteStringLength
        {
            get { return m_maxByteStringLength;  }
            set { m_maxByteStringLength = value; }
        }

        /// <remarks />
        [DataMember(Name = "MaxArrayLength", IsRequired = false, Order = 5)]
        public int MaxArrayLength
        {
            get { return m_maxArrayLength;  }
            set { m_maxArrayLength = value; }
        }

        /// <remarks />
        [DataMember(Name = "MaxMessageSize", IsRequired = false, Order = 6)]
        public int MaxMessageSize
        {
            get { return m_maxMessageSize;  }
            set { m_maxMessageSize = value; }
        }

        /// <remarks />
        [DataMember(Name = "MaxBufferSize", IsRequired = false, Order = 7)]
        public int MaxBufferSize
        {
            get { return m_maxBufferSize;  }
            set { m_maxBufferSize = value; }
        }

        /// <remarks />
        [DataMember(Name = "ChannelLifetime", IsRequired = false, Order = 8)]
        public int ChannelLifetime
        {
            get { return m_channelLifetime;  }
            set { m_channelLifetime = value; }
        }

        /// <remarks />
        [DataMember(Name = "SecurityTokenLifetime", IsRequired = false, Order = 9)]
        public int SecurityTokenLifetime
        {
            get { return m_securityTokenLifetime;  }
            set { m_securityTokenLifetime = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.EndpointConfiguration; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.EndpointConfiguration_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.EndpointConfiguration_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteInt32("OperationTimeout", OperationTimeout);
            encoder.WriteBoolean("UseBinaryEncoding", UseBinaryEncoding);
            encoder.WriteInt32("MaxStringLength", MaxStringLength);
            encoder.WriteInt32("MaxByteStringLength", MaxByteStringLength);
            encoder.WriteInt32("MaxArrayLength", MaxArrayLength);
            encoder.WriteInt32("MaxMessageSize", MaxMessageSize);
            encoder.WriteInt32("MaxBufferSize", MaxBufferSize);
            encoder.WriteInt32("ChannelLifetime", ChannelLifetime);
            encoder.WriteInt32("SecurityTokenLifetime", SecurityTokenLifetime);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            OperationTimeout = decoder.ReadInt32("OperationTimeout");
            UseBinaryEncoding = decoder.ReadBoolean("UseBinaryEncoding");
            MaxStringLength = decoder.ReadInt32("MaxStringLength");
            MaxByteStringLength = decoder.ReadInt32("MaxByteStringLength");
            MaxArrayLength = decoder.ReadInt32("MaxArrayLength");
            MaxMessageSize = decoder.ReadInt32("MaxMessageSize");
            MaxBufferSize = decoder.ReadInt32("MaxBufferSize");
            ChannelLifetime = decoder.ReadInt32("ChannelLifetime");
            SecurityTokenLifetime = decoder.ReadInt32("SecurityTokenLifetime");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            EndpointConfiguration value = encodeable as EndpointConfiguration;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_operationTimeout, value.m_operationTimeout)) return false;
            if (!Utils.IsEqual(m_useBinaryEncoding, value.m_useBinaryEncoding)) return false;
            if (!Utils.IsEqual(m_maxStringLength, value.m_maxStringLength)) return false;
            if (!Utils.IsEqual(m_maxByteStringLength, value.m_maxByteStringLength)) return false;
            if (!Utils.IsEqual(m_maxArrayLength, value.m_maxArrayLength)) return false;
            if (!Utils.IsEqual(m_maxMessageSize, value.m_maxMessageSize)) return false;
            if (!Utils.IsEqual(m_maxBufferSize, value.m_maxBufferSize)) return false;
            if (!Utils.IsEqual(m_channelLifetime, value.m_channelLifetime)) return false;
            if (!Utils.IsEqual(m_securityTokenLifetime, value.m_securityTokenLifetime)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (EndpointConfiguration)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            EndpointConfiguration clone = (EndpointConfiguration)base.MemberwiseClone();

            clone.m_operationTimeout = (int)Utils.Clone(this.m_operationTimeout);
            clone.m_useBinaryEncoding = (bool)Utils.Clone(this.m_useBinaryEncoding);
            clone.m_maxStringLength = (int)Utils.Clone(this.m_maxStringLength);
            clone.m_maxByteStringLength = (int)Utils.Clone(this.m_maxByteStringLength);
            clone.m_maxArrayLength = (int)Utils.Clone(this.m_maxArrayLength);
            clone.m_maxMessageSize = (int)Utils.Clone(this.m_maxMessageSize);
            clone.m_maxBufferSize = (int)Utils.Clone(this.m_maxBufferSize);
            clone.m_channelLifetime = (int)Utils.Clone(this.m_channelLifetime);
            clone.m_securityTokenLifetime = (int)Utils.Clone(this.m_securityTokenLifetime);

            return clone;
        }
        #endregion

        #region Private Fields
        private int m_operationTimeout;
        private bool m_useBinaryEncoding;
        private int m_maxStringLength;
        private int m_maxByteStringLength;
        private int m_maxArrayLength;
        private int m_maxMessageSize;
        private int m_maxBufferSize;
        private int m_channelLifetime;
        private int m_securityTokenLifetime;
        #endregion
    }

    #region EndpointConfigurationCollection Class
    /// <summary>
    /// A collection of EndpointConfiguration objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfEndpointConfiguration", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "EndpointConfiguration")]
    #if !NET_STANDARD
    public partial class EndpointConfigurationCollection : List<EndpointConfiguration>, ICloneable
    #else
    public partial class EndpointConfigurationCollection : List<EndpointConfiguration>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public EndpointConfigurationCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public EndpointConfigurationCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public EndpointConfigurationCollection(IEnumerable<EndpointConfiguration> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator EndpointConfigurationCollection(EndpointConfiguration[] values)
        {
            if (values != null)
            {
                return new EndpointConfigurationCollection(values);
            }

            return new EndpointConfigurationCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator EndpointConfiguration[](EndpointConfigurationCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (EndpointConfigurationCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            EndpointConfigurationCollection clone = new EndpointConfigurationCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((EndpointConfiguration)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region QueryDataDescription Class
    #if (!OPCUA_EXCLUDE_QueryDataDescription)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class QueryDataDescription : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public QueryDataDescription()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_relativePath = new RelativePath();
            m_attributeId = (uint)0;
            m_indexRange = null;
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RelativePath", IsRequired = false, Order = 1)]
        public RelativePath RelativePath
        {
            get
            {
                return m_relativePath;
            }

            set
            {
                m_relativePath = value;

                if (value == null)
                {
                    m_relativePath = new RelativePath();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "AttributeId", IsRequired = false, Order = 2)]
        public uint AttributeId
        {
            get { return m_attributeId;  }
            set { m_attributeId = value; }
        }

        /// <remarks />
        [DataMember(Name = "IndexRange", IsRequired = false, Order = 3)]
        public string IndexRange
        {
            get { return m_indexRange;  }
            set { m_indexRange = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.QueryDataDescription; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.QueryDataDescription_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.QueryDataDescription_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("RelativePath", RelativePath, typeof(RelativePath));
            encoder.WriteUInt32("AttributeId", AttributeId);
            encoder.WriteString("IndexRange", IndexRange);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            RelativePath = (RelativePath)decoder.ReadEncodeable("RelativePath", typeof(RelativePath));
            AttributeId = decoder.ReadUInt32("AttributeId");
            IndexRange = decoder.ReadString("IndexRange");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            QueryDataDescription value = encodeable as QueryDataDescription;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_relativePath, value.m_relativePath)) return false;
            if (!Utils.IsEqual(m_attributeId, value.m_attributeId)) return false;
            if (!Utils.IsEqual(m_indexRange, value.m_indexRange)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (QueryDataDescription)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            QueryDataDescription clone = (QueryDataDescription)base.MemberwiseClone();

            clone.m_relativePath = (RelativePath)Utils.Clone(this.m_relativePath);
            clone.m_attributeId = (uint)Utils.Clone(this.m_attributeId);
            clone.m_indexRange = (string)Utils.Clone(this.m_indexRange);

            return clone;
        }
        #endregion

        #region Private Fields
        private RelativePath m_relativePath;
        private uint m_attributeId;
        private string m_indexRange;
        #endregion
    }

    #region QueryDataDescriptionCollection Class
    /// <summary>
    /// A collection of QueryDataDescription objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfQueryDataDescription", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "QueryDataDescription")]
    #if !NET_STANDARD
    public partial class QueryDataDescriptionCollection : List<QueryDataDescription>, ICloneable
    #else
    public partial class QueryDataDescriptionCollection : List<QueryDataDescription>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public QueryDataDescriptionCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public QueryDataDescriptionCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public QueryDataDescriptionCollection(IEnumerable<QueryDataDescription> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator QueryDataDescriptionCollection(QueryDataDescription[] values)
        {
            if (values != null)
            {
                return new QueryDataDescriptionCollection(values);
            }

            return new QueryDataDescriptionCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator QueryDataDescription[](QueryDataDescriptionCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (QueryDataDescriptionCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            QueryDataDescriptionCollection clone = new QueryDataDescriptionCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((QueryDataDescription)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region NodeTypeDescription Class
    #if (!OPCUA_EXCLUDE_NodeTypeDescription)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class NodeTypeDescription : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public NodeTypeDescription()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_typeDefinitionNode = null;
            m_includeSubTypes = true;
            m_dataToReturn = new QueryDataDescriptionCollection();
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "TypeDefinitionNode", IsRequired = false, Order = 1)]
        public ExpandedNodeId TypeDefinitionNode
        {
            get { return m_typeDefinitionNode;  }
            set { m_typeDefinitionNode = value; }
        }

        /// <remarks />
        [DataMember(Name = "IncludeSubTypes", IsRequired = false, Order = 2)]
        public bool IncludeSubTypes
        {
            get { return m_includeSubTypes;  }
            set { m_includeSubTypes = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "DataToReturn", IsRequired = false, Order = 3)]
        public QueryDataDescriptionCollection DataToReturn
        {
            get
            {
                return m_dataToReturn;
            }

            set
            {
                m_dataToReturn = value;

                if (value == null)
                {
                    m_dataToReturn = new QueryDataDescriptionCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.NodeTypeDescription; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.NodeTypeDescription_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.NodeTypeDescription_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteExpandedNodeId("TypeDefinitionNode", TypeDefinitionNode);
            encoder.WriteBoolean("IncludeSubTypes", IncludeSubTypes);
            encoder.WriteEncodeableArray("DataToReturn", DataToReturn.ToArray(), typeof(QueryDataDescription));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            TypeDefinitionNode = decoder.ReadExpandedNodeId("TypeDefinitionNode");
            IncludeSubTypes = decoder.ReadBoolean("IncludeSubTypes");
            DataToReturn = (QueryDataDescriptionCollection)decoder.ReadEncodeableArray("DataToReturn", typeof(QueryDataDescription));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            NodeTypeDescription value = encodeable as NodeTypeDescription;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_typeDefinitionNode, value.m_typeDefinitionNode)) return false;
            if (!Utils.IsEqual(m_includeSubTypes, value.m_includeSubTypes)) return false;
            if (!Utils.IsEqual(m_dataToReturn, value.m_dataToReturn)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (NodeTypeDescription)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            NodeTypeDescription clone = (NodeTypeDescription)base.MemberwiseClone();

            clone.m_typeDefinitionNode = (ExpandedNodeId)Utils.Clone(this.m_typeDefinitionNode);
            clone.m_includeSubTypes = (bool)Utils.Clone(this.m_includeSubTypes);
            clone.m_dataToReturn = (QueryDataDescriptionCollection)Utils.Clone(this.m_dataToReturn);

            return clone;
        }
        #endregion

        #region Private Fields
        private ExpandedNodeId m_typeDefinitionNode;
        private bool m_includeSubTypes;
        private QueryDataDescriptionCollection m_dataToReturn;
        #endregion
    }

    #region NodeTypeDescriptionCollection Class
    /// <summary>
    /// A collection of NodeTypeDescription objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfNodeTypeDescription", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "NodeTypeDescription")]
    #if !NET_STANDARD
    public partial class NodeTypeDescriptionCollection : List<NodeTypeDescription>, ICloneable
    #else
    public partial class NodeTypeDescriptionCollection : List<NodeTypeDescription>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public NodeTypeDescriptionCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public NodeTypeDescriptionCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public NodeTypeDescriptionCollection(IEnumerable<NodeTypeDescription> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator NodeTypeDescriptionCollection(NodeTypeDescription[] values)
        {
            if (values != null)
            {
                return new NodeTypeDescriptionCollection(values);
            }

            return new NodeTypeDescriptionCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator NodeTypeDescription[](NodeTypeDescriptionCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (NodeTypeDescriptionCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            NodeTypeDescriptionCollection clone = new NodeTypeDescriptionCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((NodeTypeDescription)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region FilterOperator Enumeration
    #if (!OPCUA_EXCLUDE_FilterOperator)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public enum FilterOperator
    {
        /// <remarks />
        [EnumMember(Value = "Equals_0")]
        Equals = 0,

        /// <remarks />
        [EnumMember(Value = "IsNull_1")]
        IsNull = 1,

        /// <remarks />
        [EnumMember(Value = "GreaterThan_2")]
        GreaterThan = 2,

        /// <remarks />
        [EnumMember(Value = "LessThan_3")]
        LessThan = 3,

        /// <remarks />
        [EnumMember(Value = "GreaterThanOrEqual_4")]
        GreaterThanOrEqual = 4,

        /// <remarks />
        [EnumMember(Value = "LessThanOrEqual_5")]
        LessThanOrEqual = 5,

        /// <remarks />
        [EnumMember(Value = "Like_6")]
        Like = 6,

        /// <remarks />
        [EnumMember(Value = "Not_7")]
        Not = 7,

        /// <remarks />
        [EnumMember(Value = "Between_8")]
        Between = 8,

        /// <remarks />
        [EnumMember(Value = "InList_9")]
        InList = 9,

        /// <remarks />
        [EnumMember(Value = "And_10")]
        And = 10,

        /// <remarks />
        [EnumMember(Value = "Or_11")]
        Or = 11,

        /// <remarks />
        [EnumMember(Value = "Cast_12")]
        Cast = 12,

        /// <remarks />
        [EnumMember(Value = "InView_13")]
        InView = 13,

        /// <remarks />
        [EnumMember(Value = "OfType_14")]
        OfType = 14,

        /// <remarks />
        [EnumMember(Value = "RelatedTo_15")]
        RelatedTo = 15,

        /// <remarks />
        [EnumMember(Value = "BitwiseAnd_16")]
        BitwiseAnd = 16,

        /// <remarks />
        [EnumMember(Value = "BitwiseOr_17")]
        BitwiseOr = 17,
    }
    #endif
    #endregion

    #region QueryDataSet Class
    #if (!OPCUA_EXCLUDE_QueryDataSet)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class QueryDataSet : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public QueryDataSet()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_nodeId = null;
            m_typeDefinitionNode = null;
            m_values = new VariantCollection();
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "NodeId", IsRequired = false, Order = 1)]
        public ExpandedNodeId NodeId
        {
            get { return m_nodeId;  }
            set { m_nodeId = value; }
        }

        /// <remarks />
        [DataMember(Name = "TypeDefinitionNode", IsRequired = false, Order = 2)]
        public ExpandedNodeId TypeDefinitionNode
        {
            get { return m_typeDefinitionNode;  }
            set { m_typeDefinitionNode = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "Values", IsRequired = false, Order = 3)]
        public VariantCollection Values
        {
            get
            {
                return m_values;
            }

            set
            {
                m_values = value;

                if (value == null)
                {
                    m_values = new VariantCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.QueryDataSet; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.QueryDataSet_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.QueryDataSet_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteExpandedNodeId("NodeId", NodeId);
            encoder.WriteExpandedNodeId("TypeDefinitionNode", TypeDefinitionNode);
            encoder.WriteVariantArray("Values", Values);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            NodeId = decoder.ReadExpandedNodeId("NodeId");
            TypeDefinitionNode = decoder.ReadExpandedNodeId("TypeDefinitionNode");
            Values = decoder.ReadVariantArray("Values");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            QueryDataSet value = encodeable as QueryDataSet;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_nodeId, value.m_nodeId)) return false;
            if (!Utils.IsEqual(m_typeDefinitionNode, value.m_typeDefinitionNode)) return false;
            if (!Utils.IsEqual(m_values, value.m_values)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (QueryDataSet)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            QueryDataSet clone = (QueryDataSet)base.MemberwiseClone();

            clone.m_nodeId = (ExpandedNodeId)Utils.Clone(this.m_nodeId);
            clone.m_typeDefinitionNode = (ExpandedNodeId)Utils.Clone(this.m_typeDefinitionNode);
            clone.m_values = (VariantCollection)Utils.Clone(this.m_values);

            return clone;
        }
        #endregion

        #region Private Fields
        private ExpandedNodeId m_nodeId;
        private ExpandedNodeId m_typeDefinitionNode;
        private VariantCollection m_values;
        #endregion
    }

    #region QueryDataSetCollection Class
    /// <summary>
    /// A collection of QueryDataSet objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfQueryDataSet", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "QueryDataSet")]
    #if !NET_STANDARD
    public partial class QueryDataSetCollection : List<QueryDataSet>, ICloneable
    #else
    public partial class QueryDataSetCollection : List<QueryDataSet>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public QueryDataSetCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public QueryDataSetCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public QueryDataSetCollection(IEnumerable<QueryDataSet> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator QueryDataSetCollection(QueryDataSet[] values)
        {
            if (values != null)
            {
                return new QueryDataSetCollection(values);
            }

            return new QueryDataSetCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator QueryDataSet[](QueryDataSetCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (QueryDataSetCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            QueryDataSetCollection clone = new QueryDataSetCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((QueryDataSet)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region NodeReference Class
    #if (!OPCUA_EXCLUDE_NodeReference)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class NodeReference : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public NodeReference()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_nodeId = null;
            m_referenceTypeId = null;
            m_isForward = true;
            m_referencedNodeIds = new NodeIdCollection();
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "NodeId", IsRequired = false, Order = 1)]
        public NodeId NodeId
        {
            get { return m_nodeId;  }
            set { m_nodeId = value; }
        }

        /// <remarks />
        [DataMember(Name = "ReferenceTypeId", IsRequired = false, Order = 2)]
        public NodeId ReferenceTypeId
        {
            get { return m_referenceTypeId;  }
            set { m_referenceTypeId = value; }
        }

        /// <remarks />
        [DataMember(Name = "IsForward", IsRequired = false, Order = 3)]
        public bool IsForward
        {
            get { return m_isForward;  }
            set { m_isForward = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ReferencedNodeIds", IsRequired = false, Order = 4)]
        public NodeIdCollection ReferencedNodeIds
        {
            get
            {
                return m_referencedNodeIds;
            }

            set
            {
                m_referencedNodeIds = value;

                if (value == null)
                {
                    m_referencedNodeIds = new NodeIdCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.NodeReference; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.NodeReference_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.NodeReference_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteNodeId("NodeId", NodeId);
            encoder.WriteNodeId("ReferenceTypeId", ReferenceTypeId);
            encoder.WriteBoolean("IsForward", IsForward);
            encoder.WriteNodeIdArray("ReferencedNodeIds", ReferencedNodeIds);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            NodeId = decoder.ReadNodeId("NodeId");
            ReferenceTypeId = decoder.ReadNodeId("ReferenceTypeId");
            IsForward = decoder.ReadBoolean("IsForward");
            ReferencedNodeIds = decoder.ReadNodeIdArray("ReferencedNodeIds");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            NodeReference value = encodeable as NodeReference;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_nodeId, value.m_nodeId)) return false;
            if (!Utils.IsEqual(m_referenceTypeId, value.m_referenceTypeId)) return false;
            if (!Utils.IsEqual(m_isForward, value.m_isForward)) return false;
            if (!Utils.IsEqual(m_referencedNodeIds, value.m_referencedNodeIds)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (NodeReference)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            NodeReference clone = (NodeReference)base.MemberwiseClone();

            clone.m_nodeId = (NodeId)Utils.Clone(this.m_nodeId);
            clone.m_referenceTypeId = (NodeId)Utils.Clone(this.m_referenceTypeId);
            clone.m_isForward = (bool)Utils.Clone(this.m_isForward);
            clone.m_referencedNodeIds = (NodeIdCollection)Utils.Clone(this.m_referencedNodeIds);

            return clone;
        }
        #endregion

        #region Private Fields
        private NodeId m_nodeId;
        private NodeId m_referenceTypeId;
        private bool m_isForward;
        private NodeIdCollection m_referencedNodeIds;
        #endregion
    }

    #region NodeReferenceCollection Class
    /// <summary>
    /// A collection of NodeReference objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfNodeReference", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "NodeReference")]
    #if !NET_STANDARD
    public partial class NodeReferenceCollection : List<NodeReference>, ICloneable
    #else
    public partial class NodeReferenceCollection : List<NodeReference>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public NodeReferenceCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public NodeReferenceCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public NodeReferenceCollection(IEnumerable<NodeReference> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator NodeReferenceCollection(NodeReference[] values)
        {
            if (values != null)
            {
                return new NodeReferenceCollection(values);
            }

            return new NodeReferenceCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator NodeReference[](NodeReferenceCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (NodeReferenceCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            NodeReferenceCollection clone = new NodeReferenceCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((NodeReference)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region ContentFilterElement Class
    #if (!OPCUA_EXCLUDE_ContentFilterElement)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ContentFilterElement : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ContentFilterElement()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_filterOperator = FilterOperator.Equals;
            m_filterOperands = new ExtensionObjectCollection();
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "FilterOperator", IsRequired = false, Order = 1)]
        public FilterOperator FilterOperator
        {
            get { return m_filterOperator;  }
            set { m_filterOperator = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "FilterOperands", IsRequired = false, Order = 2)]
        public ExtensionObjectCollection FilterOperands
        {
            get
            {
                return m_filterOperands;
            }

            set
            {
                m_filterOperands = value;

                if (value == null)
                {
                    m_filterOperands = new ExtensionObjectCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ContentFilterElement; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ContentFilterElement_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ContentFilterElement_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEnumerated("FilterOperator", FilterOperator);
            encoder.WriteExtensionObjectArray("FilterOperands", FilterOperands);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            FilterOperator = (FilterOperator)decoder.ReadEnumerated("FilterOperator", typeof(FilterOperator));
            FilterOperands = decoder.ReadExtensionObjectArray("FilterOperands");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ContentFilterElement value = encodeable as ContentFilterElement;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_filterOperator, value.m_filterOperator)) return false;
            if (!Utils.IsEqual(m_filterOperands, value.m_filterOperands)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (ContentFilterElement)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ContentFilterElement clone = (ContentFilterElement)base.MemberwiseClone();

            clone.m_filterOperator = (FilterOperator)Utils.Clone(this.m_filterOperator);
            clone.m_filterOperands = (ExtensionObjectCollection)Utils.Clone(this.m_filterOperands);

            return clone;
        }
        #endregion

        #region Private Fields
        private FilterOperator m_filterOperator;
        private ExtensionObjectCollection m_filterOperands;
        #endregion
    }

    #region ContentFilterElementCollection Class
    /// <summary>
    /// A collection of ContentFilterElement objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfContentFilterElement", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "ContentFilterElement")]
    #if !NET_STANDARD
    public partial class ContentFilterElementCollection : List<ContentFilterElement>, ICloneable
    #else
    public partial class ContentFilterElementCollection : List<ContentFilterElement>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public ContentFilterElementCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public ContentFilterElementCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public ContentFilterElementCollection(IEnumerable<ContentFilterElement> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator ContentFilterElementCollection(ContentFilterElement[] values)
        {
            if (values != null)
            {
                return new ContentFilterElementCollection(values);
            }

            return new ContentFilterElementCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator ContentFilterElement[](ContentFilterElementCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (ContentFilterElementCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ContentFilterElementCollection clone = new ContentFilterElementCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((ContentFilterElement)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region ContentFilter Class
    #if (!OPCUA_EXCLUDE_ContentFilter)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ContentFilter : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ContentFilter()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_elements = new ContentFilterElementCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "Elements", IsRequired = false, Order = 1)]
        public ContentFilterElementCollection Elements
        {
            get
            {
                return m_elements;
            }

            set
            {
                m_elements = value;

                if (value == null)
                {
                    m_elements = new ContentFilterElementCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ContentFilter; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ContentFilter_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ContentFilter_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeableArray("Elements", Elements.ToArray(), typeof(ContentFilterElement));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            Elements = (ContentFilterElementCollection)decoder.ReadEncodeableArray("Elements", typeof(ContentFilterElement));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ContentFilter value = encodeable as ContentFilter;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_elements, value.m_elements)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (ContentFilter)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ContentFilter clone = (ContentFilter)base.MemberwiseClone();

            clone.m_elements = (ContentFilterElementCollection)Utils.Clone(this.m_elements);

            return clone;
        }
        #endregion

        #region Private Fields
        private ContentFilterElementCollection m_elements;
        #endregion
    }

    #region ContentFilterCollection Class
    /// <summary>
    /// A collection of ContentFilter objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfContentFilter", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "ContentFilter")]
    #if !NET_STANDARD
    public partial class ContentFilterCollection : List<ContentFilter>, ICloneable
    #else
    public partial class ContentFilterCollection : List<ContentFilter>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public ContentFilterCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public ContentFilterCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public ContentFilterCollection(IEnumerable<ContentFilter> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator ContentFilterCollection(ContentFilter[] values)
        {
            if (values != null)
            {
                return new ContentFilterCollection(values);
            }

            return new ContentFilterCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator ContentFilter[](ContentFilterCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (ContentFilterCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ContentFilterCollection clone = new ContentFilterCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((ContentFilter)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region FilterOperand Class
    #if (!OPCUA_EXCLUDE_FilterOperand)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class FilterOperand : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public FilterOperand()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
        }
        #endregion

        #region Public Properties
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.FilterOperand; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.FilterOperand_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.FilterOperand_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            FilterOperand value = encodeable as FilterOperand;

            if (value == null)
            {
                return false;
            }


            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (FilterOperand)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            FilterOperand clone = (FilterOperand)base.MemberwiseClone();


            return clone;
        }
        #endregion

        #region Private Fields
        #endregion
    }
    #endif
    #endregion

    #region ElementOperand Class
    #if (!OPCUA_EXCLUDE_ElementOperand)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ElementOperand : FilterOperand
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ElementOperand()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_index = (uint)0;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "Index", IsRequired = false, Order = 1)]
        public uint Index
        {
            get { return m_index;  }
            set { m_index = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ElementOperand; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ElementOperand_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ElementOperand_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteUInt32("Index", Index);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            Index = decoder.ReadUInt32("Index");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ElementOperand value = encodeable as ElementOperand;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_index, value.m_index)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (ElementOperand)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ElementOperand clone = (ElementOperand)base.MemberwiseClone();

            clone.m_index = (uint)Utils.Clone(this.m_index);

            return clone;
        }
        #endregion

        #region Private Fields
        private uint m_index;
        #endregion
    }
    #endif
    #endregion

    #region LiteralOperand Class
    #if (!OPCUA_EXCLUDE_LiteralOperand)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class LiteralOperand : FilterOperand
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public LiteralOperand()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_value = Variant.Null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "Value", IsRequired = false, Order = 1)]
        public Variant Value
        {
            get { return m_value;  }
            set { m_value = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.LiteralOperand; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.LiteralOperand_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.LiteralOperand_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteVariant("Value", Value);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            Value = decoder.ReadVariant("Value");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            LiteralOperand value = encodeable as LiteralOperand;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_value, value.m_value)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (LiteralOperand)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            LiteralOperand clone = (LiteralOperand)base.MemberwiseClone();

            clone.m_value = (Variant)Utils.Clone(this.m_value);

            return clone;
        }
        #endregion

        #region Private Fields
        private Variant m_value;
        #endregion
    }
    #endif
    #endregion

    #region AttributeOperand Class
    #if (!OPCUA_EXCLUDE_AttributeOperand)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class AttributeOperand : FilterOperand
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public AttributeOperand()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_nodeId = null;
            m_alias = null;
            m_browsePath = new RelativePath();
            m_attributeId = (uint)0;
            m_indexRange = null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "NodeId", IsRequired = false, Order = 1)]
        public NodeId NodeId
        {
            get { return m_nodeId;  }
            set { m_nodeId = value; }
        }

        /// <remarks />
        [DataMember(Name = "Alias", IsRequired = false, Order = 2)]
        public string Alias
        {
            get { return m_alias;  }
            set { m_alias = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "BrowsePath", IsRequired = false, Order = 3)]
        public RelativePath BrowsePath
        {
            get
            {
                return m_browsePath;
            }

            set
            {
                m_browsePath = value;

                if (value == null)
                {
                    m_browsePath = new RelativePath();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "AttributeId", IsRequired = false, Order = 4)]
        public uint AttributeId
        {
            get { return m_attributeId;  }
            set { m_attributeId = value; }
        }

        /// <remarks />
        [DataMember(Name = "IndexRange", IsRequired = false, Order = 5)]
        public string IndexRange
        {
            get { return m_indexRange;  }
            set { m_indexRange = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.AttributeOperand; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.AttributeOperand_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.AttributeOperand_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteNodeId("NodeId", NodeId);
            encoder.WriteString("Alias", Alias);
            encoder.WriteEncodeable("BrowsePath", BrowsePath, typeof(RelativePath));
            encoder.WriteUInt32("AttributeId", AttributeId);
            encoder.WriteString("IndexRange", IndexRange);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            NodeId = decoder.ReadNodeId("NodeId");
            Alias = decoder.ReadString("Alias");
            BrowsePath = (RelativePath)decoder.ReadEncodeable("BrowsePath", typeof(RelativePath));
            AttributeId = decoder.ReadUInt32("AttributeId");
            IndexRange = decoder.ReadString("IndexRange");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            AttributeOperand value = encodeable as AttributeOperand;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_nodeId, value.m_nodeId)) return false;
            if (!Utils.IsEqual(m_alias, value.m_alias)) return false;
            if (!Utils.IsEqual(m_browsePath, value.m_browsePath)) return false;
            if (!Utils.IsEqual(m_attributeId, value.m_attributeId)) return false;
            if (!Utils.IsEqual(m_indexRange, value.m_indexRange)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (AttributeOperand)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            AttributeOperand clone = (AttributeOperand)base.MemberwiseClone();

            clone.m_nodeId = (NodeId)Utils.Clone(this.m_nodeId);
            clone.m_alias = (string)Utils.Clone(this.m_alias);
            clone.m_browsePath = (RelativePath)Utils.Clone(this.m_browsePath);
            clone.m_attributeId = (uint)Utils.Clone(this.m_attributeId);
            clone.m_indexRange = (string)Utils.Clone(this.m_indexRange);

            return clone;
        }
        #endregion

        #region Private Fields
        private NodeId m_nodeId;
        private string m_alias;
        private RelativePath m_browsePath;
        private uint m_attributeId;
        private string m_indexRange;
        #endregion
    }
    #endif
    #endregion

    #region SimpleAttributeOperand Class
    #if (!OPCUA_EXCLUDE_SimpleAttributeOperand)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class SimpleAttributeOperand : FilterOperand
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public SimpleAttributeOperand()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_typeDefinitionId = null;
            m_browsePath = new QualifiedNameCollection();
            m_attributeId = (uint)0;
            m_indexRange = null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "TypeDefinitionId", IsRequired = false, Order = 1)]
        public NodeId TypeDefinitionId
        {
            get { return m_typeDefinitionId;  }
            set { m_typeDefinitionId = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "BrowsePath", IsRequired = false, Order = 2)]
        public QualifiedNameCollection BrowsePath
        {
            get
            {
                return m_browsePath;
            }

            set
            {
                m_browsePath = value;

                if (value == null)
                {
                    m_browsePath = new QualifiedNameCollection();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "AttributeId", IsRequired = false, Order = 3)]
        public uint AttributeId
        {
            get { return m_attributeId;  }
            set { m_attributeId = value; }
        }

        /// <remarks />
        [DataMember(Name = "IndexRange", IsRequired = false, Order = 4)]
        public string IndexRange
        {
            get { return m_indexRange;  }
            set { m_indexRange = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.SimpleAttributeOperand; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.SimpleAttributeOperand_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.SimpleAttributeOperand_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteNodeId("TypeDefinitionId", TypeDefinitionId);
            encoder.WriteQualifiedNameArray("BrowsePath", BrowsePath);
            encoder.WriteUInt32("AttributeId", AttributeId);
            encoder.WriteString("IndexRange", IndexRange);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            TypeDefinitionId = decoder.ReadNodeId("TypeDefinitionId");
            BrowsePath = decoder.ReadQualifiedNameArray("BrowsePath");
            AttributeId = decoder.ReadUInt32("AttributeId");
            IndexRange = decoder.ReadString("IndexRange");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            SimpleAttributeOperand value = encodeable as SimpleAttributeOperand;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_typeDefinitionId, value.m_typeDefinitionId)) return false;
            if (!Utils.IsEqual(m_browsePath, value.m_browsePath)) return false;
            if (!Utils.IsEqual(m_attributeId, value.m_attributeId)) return false;
            if (!Utils.IsEqual(m_indexRange, value.m_indexRange)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (SimpleAttributeOperand)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            SimpleAttributeOperand clone = (SimpleAttributeOperand)base.MemberwiseClone();

            clone.m_typeDefinitionId = (NodeId)Utils.Clone(this.m_typeDefinitionId);
            clone.m_browsePath = (QualifiedNameCollection)Utils.Clone(this.m_browsePath);
            clone.m_attributeId = (uint)Utils.Clone(this.m_attributeId);
            clone.m_indexRange = (string)Utils.Clone(this.m_indexRange);

            return clone;
        }
        #endregion

        #region Private Fields
        private NodeId m_typeDefinitionId;
        private QualifiedNameCollection m_browsePath;
        private uint m_attributeId;
        private string m_indexRange;
        #endregion
    }

    #region SimpleAttributeOperandCollection Class
    /// <summary>
    /// A collection of SimpleAttributeOperand objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfSimpleAttributeOperand", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "SimpleAttributeOperand")]
    #if !NET_STANDARD
    public partial class SimpleAttributeOperandCollection : List<SimpleAttributeOperand>, ICloneable
    #else
    public partial class SimpleAttributeOperandCollection : List<SimpleAttributeOperand>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public SimpleAttributeOperandCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public SimpleAttributeOperandCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public SimpleAttributeOperandCollection(IEnumerable<SimpleAttributeOperand> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator SimpleAttributeOperandCollection(SimpleAttributeOperand[] values)
        {
            if (values != null)
            {
                return new SimpleAttributeOperandCollection(values);
            }

            return new SimpleAttributeOperandCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator SimpleAttributeOperand[](SimpleAttributeOperandCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (SimpleAttributeOperandCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            SimpleAttributeOperandCollection clone = new SimpleAttributeOperandCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((SimpleAttributeOperand)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region ContentFilterElementResult Class
    #if (!OPCUA_EXCLUDE_ContentFilterElementResult)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ContentFilterElementResult : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ContentFilterElementResult()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_statusCode = StatusCodes.Good;
            m_operandStatusCodes = new StatusCodeCollection();
            m_operandDiagnosticInfos = new DiagnosticInfoCollection();
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "StatusCode", IsRequired = false, Order = 1)]
        public StatusCode StatusCode
        {
            get { return m_statusCode;  }
            set { m_statusCode = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "OperandStatusCodes", IsRequired = false, Order = 2)]
        public StatusCodeCollection OperandStatusCodes
        {
            get
            {
                return m_operandStatusCodes;
            }

            set
            {
                m_operandStatusCodes = value;

                if (value == null)
                {
                    m_operandStatusCodes = new StatusCodeCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "OperandDiagnosticInfos", IsRequired = false, Order = 3)]
        public DiagnosticInfoCollection OperandDiagnosticInfos
        {
            get
            {
                return m_operandDiagnosticInfos;
            }

            set
            {
                m_operandDiagnosticInfos = value;

                if (value == null)
                {
                    m_operandDiagnosticInfos = new DiagnosticInfoCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ContentFilterElementResult; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ContentFilterElementResult_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ContentFilterElementResult_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteStatusCode("StatusCode", StatusCode);
            encoder.WriteStatusCodeArray("OperandStatusCodes", OperandStatusCodes);
            encoder.WriteDiagnosticInfoArray("OperandDiagnosticInfos", OperandDiagnosticInfos);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            StatusCode = decoder.ReadStatusCode("StatusCode");
            OperandStatusCodes = decoder.ReadStatusCodeArray("OperandStatusCodes");
            OperandDiagnosticInfos = decoder.ReadDiagnosticInfoArray("OperandDiagnosticInfos");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ContentFilterElementResult value = encodeable as ContentFilterElementResult;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_statusCode, value.m_statusCode)) return false;
            if (!Utils.IsEqual(m_operandStatusCodes, value.m_operandStatusCodes)) return false;
            if (!Utils.IsEqual(m_operandDiagnosticInfos, value.m_operandDiagnosticInfos)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (ContentFilterElementResult)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ContentFilterElementResult clone = (ContentFilterElementResult)base.MemberwiseClone();

            clone.m_statusCode = (StatusCode)Utils.Clone(this.m_statusCode);
            clone.m_operandStatusCodes = (StatusCodeCollection)Utils.Clone(this.m_operandStatusCodes);
            clone.m_operandDiagnosticInfos = (DiagnosticInfoCollection)Utils.Clone(this.m_operandDiagnosticInfos);

            return clone;
        }
        #endregion

        #region Private Fields
        private StatusCode m_statusCode;
        private StatusCodeCollection m_operandStatusCodes;
        private DiagnosticInfoCollection m_operandDiagnosticInfos;
        #endregion
    }

    #region ContentFilterElementResultCollection Class
    /// <summary>
    /// A collection of ContentFilterElementResult objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfContentFilterElementResult", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "ContentFilterElementResult")]
    #if !NET_STANDARD
    public partial class ContentFilterElementResultCollection : List<ContentFilterElementResult>, ICloneable
    #else
    public partial class ContentFilterElementResultCollection : List<ContentFilterElementResult>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public ContentFilterElementResultCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public ContentFilterElementResultCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public ContentFilterElementResultCollection(IEnumerable<ContentFilterElementResult> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator ContentFilterElementResultCollection(ContentFilterElementResult[] values)
        {
            if (values != null)
            {
                return new ContentFilterElementResultCollection(values);
            }

            return new ContentFilterElementResultCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator ContentFilterElementResult[](ContentFilterElementResultCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (ContentFilterElementResultCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ContentFilterElementResultCollection clone = new ContentFilterElementResultCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((ContentFilterElementResult)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region ContentFilterResult Class
    #if (!OPCUA_EXCLUDE_ContentFilterResult)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ContentFilterResult : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ContentFilterResult()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_elementResults = new ContentFilterElementResultCollection();
            m_elementDiagnosticInfos = new DiagnosticInfoCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ElementResults", IsRequired = false, Order = 1)]
        public ContentFilterElementResultCollection ElementResults
        {
            get
            {
                return m_elementResults;
            }

            set
            {
                m_elementResults = value;

                if (value == null)
                {
                    m_elementResults = new ContentFilterElementResultCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ElementDiagnosticInfos", IsRequired = false, Order = 2)]
        public DiagnosticInfoCollection ElementDiagnosticInfos
        {
            get
            {
                return m_elementDiagnosticInfos;
            }

            set
            {
                m_elementDiagnosticInfos = value;

                if (value == null)
                {
                    m_elementDiagnosticInfos = new DiagnosticInfoCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ContentFilterResult; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ContentFilterResult_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ContentFilterResult_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeableArray("ElementResults", ElementResults.ToArray(), typeof(ContentFilterElementResult));
            encoder.WriteDiagnosticInfoArray("ElementDiagnosticInfos", ElementDiagnosticInfos);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ElementResults = (ContentFilterElementResultCollection)decoder.ReadEncodeableArray("ElementResults", typeof(ContentFilterElementResult));
            ElementDiagnosticInfos = decoder.ReadDiagnosticInfoArray("ElementDiagnosticInfos");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ContentFilterResult value = encodeable as ContentFilterResult;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_elementResults, value.m_elementResults)) return false;
            if (!Utils.IsEqual(m_elementDiagnosticInfos, value.m_elementDiagnosticInfos)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (ContentFilterResult)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ContentFilterResult clone = (ContentFilterResult)base.MemberwiseClone();

            clone.m_elementResults = (ContentFilterElementResultCollection)Utils.Clone(this.m_elementResults);
            clone.m_elementDiagnosticInfos = (DiagnosticInfoCollection)Utils.Clone(this.m_elementDiagnosticInfos);

            return clone;
        }
        #endregion

        #region Private Fields
        private ContentFilterElementResultCollection m_elementResults;
        private DiagnosticInfoCollection m_elementDiagnosticInfos;
        #endregion
    }
    #endif
    #endregion

    #region ParsingResult Class
    #if (!OPCUA_EXCLUDE_ParsingResult)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ParsingResult : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ParsingResult()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_statusCode = StatusCodes.Good;
            m_dataStatusCodes = new StatusCodeCollection();
            m_dataDiagnosticInfos = new DiagnosticInfoCollection();
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "StatusCode", IsRequired = false, Order = 1)]
        public StatusCode StatusCode
        {
            get { return m_statusCode;  }
            set { m_statusCode = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "DataStatusCodes", IsRequired = false, Order = 2)]
        public StatusCodeCollection DataStatusCodes
        {
            get
            {
                return m_dataStatusCodes;
            }

            set
            {
                m_dataStatusCodes = value;

                if (value == null)
                {
                    m_dataStatusCodes = new StatusCodeCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "DataDiagnosticInfos", IsRequired = false, Order = 3)]
        public DiagnosticInfoCollection DataDiagnosticInfos
        {
            get
            {
                return m_dataDiagnosticInfos;
            }

            set
            {
                m_dataDiagnosticInfos = value;

                if (value == null)
                {
                    m_dataDiagnosticInfos = new DiagnosticInfoCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ParsingResult; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ParsingResult_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ParsingResult_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteStatusCode("StatusCode", StatusCode);
            encoder.WriteStatusCodeArray("DataStatusCodes", DataStatusCodes);
            encoder.WriteDiagnosticInfoArray("DataDiagnosticInfos", DataDiagnosticInfos);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            StatusCode = decoder.ReadStatusCode("StatusCode");
            DataStatusCodes = decoder.ReadStatusCodeArray("DataStatusCodes");
            DataDiagnosticInfos = decoder.ReadDiagnosticInfoArray("DataDiagnosticInfos");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ParsingResult value = encodeable as ParsingResult;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_statusCode, value.m_statusCode)) return false;
            if (!Utils.IsEqual(m_dataStatusCodes, value.m_dataStatusCodes)) return false;
            if (!Utils.IsEqual(m_dataDiagnosticInfos, value.m_dataDiagnosticInfos)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (ParsingResult)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ParsingResult clone = (ParsingResult)base.MemberwiseClone();

            clone.m_statusCode = (StatusCode)Utils.Clone(this.m_statusCode);
            clone.m_dataStatusCodes = (StatusCodeCollection)Utils.Clone(this.m_dataStatusCodes);
            clone.m_dataDiagnosticInfos = (DiagnosticInfoCollection)Utils.Clone(this.m_dataDiagnosticInfos);

            return clone;
        }
        #endregion

        #region Private Fields
        private StatusCode m_statusCode;
        private StatusCodeCollection m_dataStatusCodes;
        private DiagnosticInfoCollection m_dataDiagnosticInfos;
        #endregion
    }

    #region ParsingResultCollection Class
    /// <summary>
    /// A collection of ParsingResult objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfParsingResult", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "ParsingResult")]
    #if !NET_STANDARD
    public partial class ParsingResultCollection : List<ParsingResult>, ICloneable
    #else
    public partial class ParsingResultCollection : List<ParsingResult>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public ParsingResultCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public ParsingResultCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public ParsingResultCollection(IEnumerable<ParsingResult> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator ParsingResultCollection(ParsingResult[] values)
        {
            if (values != null)
            {
                return new ParsingResultCollection(values);
            }

            return new ParsingResultCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator ParsingResult[](ParsingResultCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (ParsingResultCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ParsingResultCollection clone = new ParsingResultCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((ParsingResult)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region QueryFirstRequest Class
    #if (!OPCUA_EXCLUDE_QueryFirstRequest)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class QueryFirstRequest : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public QueryFirstRequest()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_requestHeader = new RequestHeader();
            m_view = new ViewDescription();
            m_nodeTypes = new NodeTypeDescriptionCollection();
            m_filter = new ContentFilter();
            m_maxDataSetsToReturn = (uint)0;
            m_maxReferencesToReturn = (uint)0;
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RequestHeader", IsRequired = false, Order = 1)]
        public RequestHeader RequestHeader
        {
            get
            {
                return m_requestHeader;
            }

            set
            {
                m_requestHeader = value;

                if (value == null)
                {
                    m_requestHeader = new RequestHeader();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "View", IsRequired = false, Order = 2)]
        public ViewDescription View
        {
            get
            {
                return m_view;
            }

            set
            {
                m_view = value;

                if (value == null)
                {
                    m_view = new ViewDescription();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "NodeTypes", IsRequired = false, Order = 3)]
        public NodeTypeDescriptionCollection NodeTypes
        {
            get
            {
                return m_nodeTypes;
            }

            set
            {
                m_nodeTypes = value;

                if (value == null)
                {
                    m_nodeTypes = new NodeTypeDescriptionCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "Filter", IsRequired = false, Order = 4)]
        public ContentFilter Filter
        {
            get
            {
                return m_filter;
            }

            set
            {
                m_filter = value;

                if (value == null)
                {
                    m_filter = new ContentFilter();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "MaxDataSetsToReturn", IsRequired = false, Order = 5)]
        public uint MaxDataSetsToReturn
        {
            get { return m_maxDataSetsToReturn;  }
            set { m_maxDataSetsToReturn = value; }
        }

        /// <remarks />
        [DataMember(Name = "MaxReferencesToReturn", IsRequired = false, Order = 6)]
        public uint MaxReferencesToReturn
        {
            get { return m_maxReferencesToReturn;  }
            set { m_maxReferencesToReturn = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.QueryFirstRequest; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.QueryFirstRequest_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.QueryFirstRequest_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("RequestHeader", RequestHeader, typeof(RequestHeader));
            encoder.WriteEncodeable("View", View, typeof(ViewDescription));
            encoder.WriteEncodeableArray("NodeTypes", NodeTypes.ToArray(), typeof(NodeTypeDescription));
            encoder.WriteEncodeable("Filter", Filter, typeof(ContentFilter));
            encoder.WriteUInt32("MaxDataSetsToReturn", MaxDataSetsToReturn);
            encoder.WriteUInt32("MaxReferencesToReturn", MaxReferencesToReturn);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            RequestHeader = (RequestHeader)decoder.ReadEncodeable("RequestHeader", typeof(RequestHeader));
            View = (ViewDescription)decoder.ReadEncodeable("View", typeof(ViewDescription));
            NodeTypes = (NodeTypeDescriptionCollection)decoder.ReadEncodeableArray("NodeTypes", typeof(NodeTypeDescription));
            Filter = (ContentFilter)decoder.ReadEncodeable("Filter", typeof(ContentFilter));
            MaxDataSetsToReturn = decoder.ReadUInt32("MaxDataSetsToReturn");
            MaxReferencesToReturn = decoder.ReadUInt32("MaxReferencesToReturn");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            QueryFirstRequest value = encodeable as QueryFirstRequest;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_requestHeader, value.m_requestHeader)) return false;
            if (!Utils.IsEqual(m_view, value.m_view)) return false;
            if (!Utils.IsEqual(m_nodeTypes, value.m_nodeTypes)) return false;
            if (!Utils.IsEqual(m_filter, value.m_filter)) return false;
            if (!Utils.IsEqual(m_maxDataSetsToReturn, value.m_maxDataSetsToReturn)) return false;
            if (!Utils.IsEqual(m_maxReferencesToReturn, value.m_maxReferencesToReturn)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (QueryFirstRequest)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            QueryFirstRequest clone = (QueryFirstRequest)base.MemberwiseClone();

            clone.m_requestHeader = (RequestHeader)Utils.Clone(this.m_requestHeader);
            clone.m_view = (ViewDescription)Utils.Clone(this.m_view);
            clone.m_nodeTypes = (NodeTypeDescriptionCollection)Utils.Clone(this.m_nodeTypes);
            clone.m_filter = (ContentFilter)Utils.Clone(this.m_filter);
            clone.m_maxDataSetsToReturn = (uint)Utils.Clone(this.m_maxDataSetsToReturn);
            clone.m_maxReferencesToReturn = (uint)Utils.Clone(this.m_maxReferencesToReturn);

            return clone;
        }
        #endregion

        #region Private Fields
        private RequestHeader m_requestHeader;
        private ViewDescription m_view;
        private NodeTypeDescriptionCollection m_nodeTypes;
        private ContentFilter m_filter;
        private uint m_maxDataSetsToReturn;
        private uint m_maxReferencesToReturn;
        #endregion
    }
    #endif
    #endregion

    #region QueryFirstResponse Class
    #if (!OPCUA_EXCLUDE_QueryFirstResponse)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class QueryFirstResponse : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public QueryFirstResponse()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_responseHeader = new ResponseHeader();
            m_queryDataSets = new QueryDataSetCollection();
            m_continuationPoint = null;
            m_parsingResults = new ParsingResultCollection();
            m_diagnosticInfos = new DiagnosticInfoCollection();
            m_filterResult = new ContentFilterResult();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ResponseHeader", IsRequired = false, Order = 1)]
        public ResponseHeader ResponseHeader
        {
            get
            {
                return m_responseHeader;
            }

            set
            {
                m_responseHeader = value;

                if (value == null)
                {
                    m_responseHeader = new ResponseHeader();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "QueryDataSets", IsRequired = false, Order = 2)]
        public QueryDataSetCollection QueryDataSets
        {
            get
            {
                return m_queryDataSets;
            }

            set
            {
                m_queryDataSets = value;

                if (value == null)
                {
                    m_queryDataSets = new QueryDataSetCollection();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "ContinuationPoint", IsRequired = false, Order = 3)]
        public byte[] ContinuationPoint
        {
            get { return m_continuationPoint;  }
            set { m_continuationPoint = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ParsingResults", IsRequired = false, Order = 4)]
        public ParsingResultCollection ParsingResults
        {
            get
            {
                return m_parsingResults;
            }

            set
            {
                m_parsingResults = value;

                if (value == null)
                {
                    m_parsingResults = new ParsingResultCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "DiagnosticInfos", IsRequired = false, Order = 5)]
        public DiagnosticInfoCollection DiagnosticInfos
        {
            get
            {
                return m_diagnosticInfos;
            }

            set
            {
                m_diagnosticInfos = value;

                if (value == null)
                {
                    m_diagnosticInfos = new DiagnosticInfoCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "FilterResult", IsRequired = false, Order = 6)]
        public ContentFilterResult FilterResult
        {
            get
            {
                return m_filterResult;
            }

            set
            {
                m_filterResult = value;

                if (value == null)
                {
                    m_filterResult = new ContentFilterResult();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.QueryFirstResponse; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.QueryFirstResponse_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.QueryFirstResponse_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("ResponseHeader", ResponseHeader, typeof(ResponseHeader));
            encoder.WriteEncodeableArray("QueryDataSets", QueryDataSets.ToArray(), typeof(QueryDataSet));
            encoder.WriteByteString("ContinuationPoint", ContinuationPoint);
            encoder.WriteEncodeableArray("ParsingResults", ParsingResults.ToArray(), typeof(ParsingResult));
            encoder.WriteDiagnosticInfoArray("DiagnosticInfos", DiagnosticInfos);
            encoder.WriteEncodeable("FilterResult", FilterResult, typeof(ContentFilterResult));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ResponseHeader = (ResponseHeader)decoder.ReadEncodeable("ResponseHeader", typeof(ResponseHeader));
            QueryDataSets = (QueryDataSetCollection)decoder.ReadEncodeableArray("QueryDataSets", typeof(QueryDataSet));
            ContinuationPoint = decoder.ReadByteString("ContinuationPoint");
            ParsingResults = (ParsingResultCollection)decoder.ReadEncodeableArray("ParsingResults", typeof(ParsingResult));
            DiagnosticInfos = decoder.ReadDiagnosticInfoArray("DiagnosticInfos");
            FilterResult = (ContentFilterResult)decoder.ReadEncodeable("FilterResult", typeof(ContentFilterResult));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            QueryFirstResponse value = encodeable as QueryFirstResponse;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_responseHeader, value.m_responseHeader)) return false;
            if (!Utils.IsEqual(m_queryDataSets, value.m_queryDataSets)) return false;
            if (!Utils.IsEqual(m_continuationPoint, value.m_continuationPoint)) return false;
            if (!Utils.IsEqual(m_parsingResults, value.m_parsingResults)) return false;
            if (!Utils.IsEqual(m_diagnosticInfos, value.m_diagnosticInfos)) return false;
            if (!Utils.IsEqual(m_filterResult, value.m_filterResult)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (QueryFirstResponse)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            QueryFirstResponse clone = (QueryFirstResponse)base.MemberwiseClone();

            clone.m_responseHeader = (ResponseHeader)Utils.Clone(this.m_responseHeader);
            clone.m_queryDataSets = (QueryDataSetCollection)Utils.Clone(this.m_queryDataSets);
            clone.m_continuationPoint = (byte[])Utils.Clone(this.m_continuationPoint);
            clone.m_parsingResults = (ParsingResultCollection)Utils.Clone(this.m_parsingResults);
            clone.m_diagnosticInfos = (DiagnosticInfoCollection)Utils.Clone(this.m_diagnosticInfos);
            clone.m_filterResult = (ContentFilterResult)Utils.Clone(this.m_filterResult);

            return clone;
        }
        #endregion

        #region Private Fields
        private ResponseHeader m_responseHeader;
        private QueryDataSetCollection m_queryDataSets;
        private byte[] m_continuationPoint;
        private ParsingResultCollection m_parsingResults;
        private DiagnosticInfoCollection m_diagnosticInfos;
        private ContentFilterResult m_filterResult;
        #endregion
    }
    #endif
    #endregion

    #region QueryNextRequest Class
    #if (!OPCUA_EXCLUDE_QueryNextRequest)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class QueryNextRequest : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public QueryNextRequest()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_requestHeader = new RequestHeader();
            m_releaseContinuationPoint = true;
            m_continuationPoint = null;
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RequestHeader", IsRequired = false, Order = 1)]
        public RequestHeader RequestHeader
        {
            get
            {
                return m_requestHeader;
            }

            set
            {
                m_requestHeader = value;

                if (value == null)
                {
                    m_requestHeader = new RequestHeader();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "ReleaseContinuationPoint", IsRequired = false, Order = 2)]
        public bool ReleaseContinuationPoint
        {
            get { return m_releaseContinuationPoint;  }
            set { m_releaseContinuationPoint = value; }
        }

        /// <remarks />
        [DataMember(Name = "ContinuationPoint", IsRequired = false, Order = 3)]
        public byte[] ContinuationPoint
        {
            get { return m_continuationPoint;  }
            set { m_continuationPoint = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.QueryNextRequest; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.QueryNextRequest_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.QueryNextRequest_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("RequestHeader", RequestHeader, typeof(RequestHeader));
            encoder.WriteBoolean("ReleaseContinuationPoint", ReleaseContinuationPoint);
            encoder.WriteByteString("ContinuationPoint", ContinuationPoint);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            RequestHeader = (RequestHeader)decoder.ReadEncodeable("RequestHeader", typeof(RequestHeader));
            ReleaseContinuationPoint = decoder.ReadBoolean("ReleaseContinuationPoint");
            ContinuationPoint = decoder.ReadByteString("ContinuationPoint");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            QueryNextRequest value = encodeable as QueryNextRequest;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_requestHeader, value.m_requestHeader)) return false;
            if (!Utils.IsEqual(m_releaseContinuationPoint, value.m_releaseContinuationPoint)) return false;
            if (!Utils.IsEqual(m_continuationPoint, value.m_continuationPoint)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (QueryNextRequest)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            QueryNextRequest clone = (QueryNextRequest)base.MemberwiseClone();

            clone.m_requestHeader = (RequestHeader)Utils.Clone(this.m_requestHeader);
            clone.m_releaseContinuationPoint = (bool)Utils.Clone(this.m_releaseContinuationPoint);
            clone.m_continuationPoint = (byte[])Utils.Clone(this.m_continuationPoint);

            return clone;
        }
        #endregion

        #region Private Fields
        private RequestHeader m_requestHeader;
        private bool m_releaseContinuationPoint;
        private byte[] m_continuationPoint;
        #endregion
    }
    #endif
    #endregion

    #region QueryNextResponse Class
    #if (!OPCUA_EXCLUDE_QueryNextResponse)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class QueryNextResponse : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public QueryNextResponse()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_responseHeader = new ResponseHeader();
            m_queryDataSets = new QueryDataSetCollection();
            m_revisedContinuationPoint = null;
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ResponseHeader", IsRequired = false, Order = 1)]
        public ResponseHeader ResponseHeader
        {
            get
            {
                return m_responseHeader;
            }

            set
            {
                m_responseHeader = value;

                if (value == null)
                {
                    m_responseHeader = new ResponseHeader();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "QueryDataSets", IsRequired = false, Order = 2)]
        public QueryDataSetCollection QueryDataSets
        {
            get
            {
                return m_queryDataSets;
            }

            set
            {
                m_queryDataSets = value;

                if (value == null)
                {
                    m_queryDataSets = new QueryDataSetCollection();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "RevisedContinuationPoint", IsRequired = false, Order = 3)]
        public byte[] RevisedContinuationPoint
        {
            get { return m_revisedContinuationPoint;  }
            set { m_revisedContinuationPoint = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.QueryNextResponse; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.QueryNextResponse_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.QueryNextResponse_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("ResponseHeader", ResponseHeader, typeof(ResponseHeader));
            encoder.WriteEncodeableArray("QueryDataSets", QueryDataSets.ToArray(), typeof(QueryDataSet));
            encoder.WriteByteString("RevisedContinuationPoint", RevisedContinuationPoint);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ResponseHeader = (ResponseHeader)decoder.ReadEncodeable("ResponseHeader", typeof(ResponseHeader));
            QueryDataSets = (QueryDataSetCollection)decoder.ReadEncodeableArray("QueryDataSets", typeof(QueryDataSet));
            RevisedContinuationPoint = decoder.ReadByteString("RevisedContinuationPoint");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            QueryNextResponse value = encodeable as QueryNextResponse;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_responseHeader, value.m_responseHeader)) return false;
            if (!Utils.IsEqual(m_queryDataSets, value.m_queryDataSets)) return false;
            if (!Utils.IsEqual(m_revisedContinuationPoint, value.m_revisedContinuationPoint)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (QueryNextResponse)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            QueryNextResponse clone = (QueryNextResponse)base.MemberwiseClone();

            clone.m_responseHeader = (ResponseHeader)Utils.Clone(this.m_responseHeader);
            clone.m_queryDataSets = (QueryDataSetCollection)Utils.Clone(this.m_queryDataSets);
            clone.m_revisedContinuationPoint = (byte[])Utils.Clone(this.m_revisedContinuationPoint);

            return clone;
        }
        #endregion

        #region Private Fields
        private ResponseHeader m_responseHeader;
        private QueryDataSetCollection m_queryDataSets;
        private byte[] m_revisedContinuationPoint;
        #endregion
    }
    #endif
    #endregion

    #region TimestampsToReturn Enumeration
    #if (!OPCUA_EXCLUDE_TimestampsToReturn)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public enum TimestampsToReturn
    {
        /// <remarks />
        [EnumMember(Value = "Source_0")]
        Source = 0,

        /// <remarks />
        [EnumMember(Value = "Server_1")]
        Server = 1,

        /// <remarks />
        [EnumMember(Value = "Both_2")]
        Both = 2,

        /// <remarks />
        [EnumMember(Value = "Neither_3")]
        Neither = 3,

        /// <remarks />
        [EnumMember(Value = "Invalid_4")]
        Invalid = 4,
    }
    #endif
    #endregion

    #region ReadValueId Class
    #if (!OPCUA_EXCLUDE_ReadValueId)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ReadValueId : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ReadValueId()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_nodeId = null;
            m_attributeId = (uint)0;
            m_indexRange = null;
            m_dataEncoding = null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "NodeId", IsRequired = false, Order = 1)]
        public NodeId NodeId
        {
            get { return m_nodeId;  }
            set { m_nodeId = value; }
        }

        /// <remarks />
        [DataMember(Name = "AttributeId", IsRequired = false, Order = 2)]
        public uint AttributeId
        {
            get { return m_attributeId;  }
            set { m_attributeId = value; }
        }

        /// <remarks />
        [DataMember(Name = "IndexRange", IsRequired = false, Order = 3)]
        public string IndexRange
        {
            get { return m_indexRange;  }
            set { m_indexRange = value; }
        }

        /// <remarks />
        [DataMember(Name = "DataEncoding", IsRequired = false, Order = 4)]
        public QualifiedName DataEncoding
        {
            get { return m_dataEncoding;  }
            set { m_dataEncoding = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ReadValueId; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ReadValueId_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ReadValueId_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteNodeId("NodeId", NodeId);
            encoder.WriteUInt32("AttributeId", AttributeId);
            encoder.WriteString("IndexRange", IndexRange);
            encoder.WriteQualifiedName("DataEncoding", DataEncoding);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            NodeId = decoder.ReadNodeId("NodeId");
            AttributeId = decoder.ReadUInt32("AttributeId");
            IndexRange = decoder.ReadString("IndexRange");
            DataEncoding = decoder.ReadQualifiedName("DataEncoding");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ReadValueId value = encodeable as ReadValueId;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_nodeId, value.m_nodeId)) return false;
            if (!Utils.IsEqual(m_attributeId, value.m_attributeId)) return false;
            if (!Utils.IsEqual(m_indexRange, value.m_indexRange)) return false;
            if (!Utils.IsEqual(m_dataEncoding, value.m_dataEncoding)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (ReadValueId)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ReadValueId clone = (ReadValueId)base.MemberwiseClone();

            clone.m_nodeId = (NodeId)Utils.Clone(this.m_nodeId);
            clone.m_attributeId = (uint)Utils.Clone(this.m_attributeId);
            clone.m_indexRange = (string)Utils.Clone(this.m_indexRange);
            clone.m_dataEncoding = (QualifiedName)Utils.Clone(this.m_dataEncoding);

            return clone;
        }
        #endregion

        #region Private Fields
        private NodeId m_nodeId;
        private uint m_attributeId;
        private string m_indexRange;
        private QualifiedName m_dataEncoding;
        #endregion
    }

    #region ReadValueIdCollection Class
    /// <summary>
    /// A collection of ReadValueId objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfReadValueId", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "ReadValueId")]
    #if !NET_STANDARD
    public partial class ReadValueIdCollection : List<ReadValueId>, ICloneable
    #else
    public partial class ReadValueIdCollection : List<ReadValueId>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public ReadValueIdCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public ReadValueIdCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public ReadValueIdCollection(IEnumerable<ReadValueId> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator ReadValueIdCollection(ReadValueId[] values)
        {
            if (values != null)
            {
                return new ReadValueIdCollection(values);
            }

            return new ReadValueIdCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator ReadValueId[](ReadValueIdCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (ReadValueIdCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ReadValueIdCollection clone = new ReadValueIdCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((ReadValueId)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region ReadRequest Class
    #if (!OPCUA_EXCLUDE_ReadRequest)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ReadRequest : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ReadRequest()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_requestHeader = new RequestHeader();
            m_maxAge = (double)0;
            m_timestampsToReturn = TimestampsToReturn.Source;
            m_nodesToRead = new ReadValueIdCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RequestHeader", IsRequired = false, Order = 1)]
        public RequestHeader RequestHeader
        {
            get
            {
                return m_requestHeader;
            }

            set
            {
                m_requestHeader = value;

                if (value == null)
                {
                    m_requestHeader = new RequestHeader();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "MaxAge", IsRequired = false, Order = 2)]
        public double MaxAge
        {
            get { return m_maxAge;  }
            set { m_maxAge = value; }
        }

        /// <remarks />
        [DataMember(Name = "TimestampsToReturn", IsRequired = false, Order = 3)]
        public TimestampsToReturn TimestampsToReturn
        {
            get { return m_timestampsToReturn;  }
            set { m_timestampsToReturn = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "NodesToRead", IsRequired = false, Order = 4)]
        public ReadValueIdCollection NodesToRead
        {
            get
            {
                return m_nodesToRead;
            }

            set
            {
                m_nodesToRead = value;

                if (value == null)
                {
                    m_nodesToRead = new ReadValueIdCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ReadRequest; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ReadRequest_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ReadRequest_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("RequestHeader", RequestHeader, typeof(RequestHeader));
            encoder.WriteDouble("MaxAge", MaxAge);
            encoder.WriteEnumerated("TimestampsToReturn", TimestampsToReturn);
            encoder.WriteEncodeableArray("NodesToRead", NodesToRead.ToArray(), typeof(ReadValueId));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            RequestHeader = (RequestHeader)decoder.ReadEncodeable("RequestHeader", typeof(RequestHeader));
            MaxAge = decoder.ReadDouble("MaxAge");
            TimestampsToReturn = (TimestampsToReturn)decoder.ReadEnumerated("TimestampsToReturn", typeof(TimestampsToReturn));
            NodesToRead = (ReadValueIdCollection)decoder.ReadEncodeableArray("NodesToRead", typeof(ReadValueId));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ReadRequest value = encodeable as ReadRequest;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_requestHeader, value.m_requestHeader)) return false;
            if (!Utils.IsEqual(m_maxAge, value.m_maxAge)) return false;
            if (!Utils.IsEqual(m_timestampsToReturn, value.m_timestampsToReturn)) return false;
            if (!Utils.IsEqual(m_nodesToRead, value.m_nodesToRead)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (ReadRequest)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ReadRequest clone = (ReadRequest)base.MemberwiseClone();

            clone.m_requestHeader = (RequestHeader)Utils.Clone(this.m_requestHeader);
            clone.m_maxAge = (double)Utils.Clone(this.m_maxAge);
            clone.m_timestampsToReturn = (TimestampsToReturn)Utils.Clone(this.m_timestampsToReturn);
            clone.m_nodesToRead = (ReadValueIdCollection)Utils.Clone(this.m_nodesToRead);

            return clone;
        }
        #endregion

        #region Private Fields
        private RequestHeader m_requestHeader;
        private double m_maxAge;
        private TimestampsToReturn m_timestampsToReturn;
        private ReadValueIdCollection m_nodesToRead;
        #endregion
    }
    #endif
    #endregion

    #region ReadResponse Class
    #if (!OPCUA_EXCLUDE_ReadResponse)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ReadResponse : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ReadResponse()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_responseHeader = new ResponseHeader();
            m_results = new DataValueCollection();
            m_diagnosticInfos = new DiagnosticInfoCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ResponseHeader", IsRequired = false, Order = 1)]
        public ResponseHeader ResponseHeader
        {
            get
            {
                return m_responseHeader;
            }

            set
            {
                m_responseHeader = value;

                if (value == null)
                {
                    m_responseHeader = new ResponseHeader();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "Results", IsRequired = false, Order = 2)]
        public DataValueCollection Results
        {
            get
            {
                return m_results;
            }

            set
            {
                m_results = value;

                if (value == null)
                {
                    m_results = new DataValueCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "DiagnosticInfos", IsRequired = false, Order = 3)]
        public DiagnosticInfoCollection DiagnosticInfos
        {
            get
            {
                return m_diagnosticInfos;
            }

            set
            {
                m_diagnosticInfos = value;

                if (value == null)
                {
                    m_diagnosticInfos = new DiagnosticInfoCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ReadResponse; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ReadResponse_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ReadResponse_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("ResponseHeader", ResponseHeader, typeof(ResponseHeader));
            encoder.WriteDataValueArray("Results", Results);
            encoder.WriteDiagnosticInfoArray("DiagnosticInfos", DiagnosticInfos);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ResponseHeader = (ResponseHeader)decoder.ReadEncodeable("ResponseHeader", typeof(ResponseHeader));
            Results = decoder.ReadDataValueArray("Results");
            DiagnosticInfos = decoder.ReadDiagnosticInfoArray("DiagnosticInfos");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ReadResponse value = encodeable as ReadResponse;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_responseHeader, value.m_responseHeader)) return false;
            if (!Utils.IsEqual(m_results, value.m_results)) return false;
            if (!Utils.IsEqual(m_diagnosticInfos, value.m_diagnosticInfos)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (ReadResponse)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ReadResponse clone = (ReadResponse)base.MemberwiseClone();

            clone.m_responseHeader = (ResponseHeader)Utils.Clone(this.m_responseHeader);
            clone.m_results = (DataValueCollection)Utils.Clone(this.m_results);
            clone.m_diagnosticInfos = (DiagnosticInfoCollection)Utils.Clone(this.m_diagnosticInfos);

            return clone;
        }
        #endregion

        #region Private Fields
        private ResponseHeader m_responseHeader;
        private DataValueCollection m_results;
        private DiagnosticInfoCollection m_diagnosticInfos;
        #endregion
    }
    #endif
    #endregion

    #region HistoryReadValueId Class
    #if (!OPCUA_EXCLUDE_HistoryReadValueId)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class HistoryReadValueId : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public HistoryReadValueId()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_nodeId = null;
            m_indexRange = null;
            m_dataEncoding = null;
            m_continuationPoint = null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "NodeId", IsRequired = false, Order = 1)]
        public NodeId NodeId
        {
            get { return m_nodeId;  }
            set { m_nodeId = value; }
        }

        /// <remarks />
        [DataMember(Name = "IndexRange", IsRequired = false, Order = 2)]
        public string IndexRange
        {
            get { return m_indexRange;  }
            set { m_indexRange = value; }
        }

        /// <remarks />
        [DataMember(Name = "DataEncoding", IsRequired = false, Order = 3)]
        public QualifiedName DataEncoding
        {
            get { return m_dataEncoding;  }
            set { m_dataEncoding = value; }
        }

        /// <remarks />
        [DataMember(Name = "ContinuationPoint", IsRequired = false, Order = 4)]
        public byte[] ContinuationPoint
        {
            get { return m_continuationPoint;  }
            set { m_continuationPoint = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.HistoryReadValueId; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.HistoryReadValueId_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.HistoryReadValueId_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteNodeId("NodeId", NodeId);
            encoder.WriteString("IndexRange", IndexRange);
            encoder.WriteQualifiedName("DataEncoding", DataEncoding);
            encoder.WriteByteString("ContinuationPoint", ContinuationPoint);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            NodeId = decoder.ReadNodeId("NodeId");
            IndexRange = decoder.ReadString("IndexRange");
            DataEncoding = decoder.ReadQualifiedName("DataEncoding");
            ContinuationPoint = decoder.ReadByteString("ContinuationPoint");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            HistoryReadValueId value = encodeable as HistoryReadValueId;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_nodeId, value.m_nodeId)) return false;
            if (!Utils.IsEqual(m_indexRange, value.m_indexRange)) return false;
            if (!Utils.IsEqual(m_dataEncoding, value.m_dataEncoding)) return false;
            if (!Utils.IsEqual(m_continuationPoint, value.m_continuationPoint)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (HistoryReadValueId)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            HistoryReadValueId clone = (HistoryReadValueId)base.MemberwiseClone();

            clone.m_nodeId = (NodeId)Utils.Clone(this.m_nodeId);
            clone.m_indexRange = (string)Utils.Clone(this.m_indexRange);
            clone.m_dataEncoding = (QualifiedName)Utils.Clone(this.m_dataEncoding);
            clone.m_continuationPoint = (byte[])Utils.Clone(this.m_continuationPoint);

            return clone;
        }
        #endregion

        #region Private Fields
        private NodeId m_nodeId;
        private string m_indexRange;
        private QualifiedName m_dataEncoding;
        private byte[] m_continuationPoint;
        #endregion
    }

    #region HistoryReadValueIdCollection Class
    /// <summary>
    /// A collection of HistoryReadValueId objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfHistoryReadValueId", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "HistoryReadValueId")]
    #if !NET_STANDARD
    public partial class HistoryReadValueIdCollection : List<HistoryReadValueId>, ICloneable
    #else
    public partial class HistoryReadValueIdCollection : List<HistoryReadValueId>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public HistoryReadValueIdCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public HistoryReadValueIdCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public HistoryReadValueIdCollection(IEnumerable<HistoryReadValueId> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator HistoryReadValueIdCollection(HistoryReadValueId[] values)
        {
            if (values != null)
            {
                return new HistoryReadValueIdCollection(values);
            }

            return new HistoryReadValueIdCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator HistoryReadValueId[](HistoryReadValueIdCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (HistoryReadValueIdCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            HistoryReadValueIdCollection clone = new HistoryReadValueIdCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((HistoryReadValueId)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region HistoryReadResult Class
    #if (!OPCUA_EXCLUDE_HistoryReadResult)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class HistoryReadResult : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public HistoryReadResult()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_statusCode = StatusCodes.Good;
            m_continuationPoint = null;
            m_historyData = null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "StatusCode", IsRequired = false, Order = 1)]
        public StatusCode StatusCode
        {
            get { return m_statusCode;  }
            set { m_statusCode = value; }
        }

        /// <remarks />
        [DataMember(Name = "ContinuationPoint", IsRequired = false, Order = 2)]
        public byte[] ContinuationPoint
        {
            get { return m_continuationPoint;  }
            set { m_continuationPoint = value; }
        }

        /// <remarks />
        [DataMember(Name = "HistoryData", IsRequired = false, Order = 3)]
        public ExtensionObject HistoryData
        {
            get { return m_historyData;  }
            set { m_historyData = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.HistoryReadResult; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.HistoryReadResult_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.HistoryReadResult_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteStatusCode("StatusCode", StatusCode);
            encoder.WriteByteString("ContinuationPoint", ContinuationPoint);
            encoder.WriteExtensionObject("HistoryData", HistoryData);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            StatusCode = decoder.ReadStatusCode("StatusCode");
            ContinuationPoint = decoder.ReadByteString("ContinuationPoint");
            HistoryData = decoder.ReadExtensionObject("HistoryData");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            HistoryReadResult value = encodeable as HistoryReadResult;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_statusCode, value.m_statusCode)) return false;
            if (!Utils.IsEqual(m_continuationPoint, value.m_continuationPoint)) return false;
            if (!Utils.IsEqual(m_historyData, value.m_historyData)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (HistoryReadResult)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            HistoryReadResult clone = (HistoryReadResult)base.MemberwiseClone();

            clone.m_statusCode = (StatusCode)Utils.Clone(this.m_statusCode);
            clone.m_continuationPoint = (byte[])Utils.Clone(this.m_continuationPoint);
            clone.m_historyData = (ExtensionObject)Utils.Clone(this.m_historyData);

            return clone;
        }
        #endregion

        #region Private Fields
        private StatusCode m_statusCode;
        private byte[] m_continuationPoint;
        private ExtensionObject m_historyData;
        #endregion
    }

    #region HistoryReadResultCollection Class
    /// <summary>
    /// A collection of HistoryReadResult objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfHistoryReadResult", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "HistoryReadResult")]
    #if !NET_STANDARD
    public partial class HistoryReadResultCollection : List<HistoryReadResult>, ICloneable
    #else
    public partial class HistoryReadResultCollection : List<HistoryReadResult>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public HistoryReadResultCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public HistoryReadResultCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public HistoryReadResultCollection(IEnumerable<HistoryReadResult> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator HistoryReadResultCollection(HistoryReadResult[] values)
        {
            if (values != null)
            {
                return new HistoryReadResultCollection(values);
            }

            return new HistoryReadResultCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator HistoryReadResult[](HistoryReadResultCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (HistoryReadResultCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            HistoryReadResultCollection clone = new HistoryReadResultCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((HistoryReadResult)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region HistoryReadDetails Class
    #if (!OPCUA_EXCLUDE_HistoryReadDetails)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class HistoryReadDetails : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public HistoryReadDetails()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
        }
        #endregion

        #region Public Properties
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.HistoryReadDetails; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.HistoryReadDetails_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.HistoryReadDetails_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            HistoryReadDetails value = encodeable as HistoryReadDetails;

            if (value == null)
            {
                return false;
            }


            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (HistoryReadDetails)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            HistoryReadDetails clone = (HistoryReadDetails)base.MemberwiseClone();


            return clone;
        }
        #endregion

        #region Private Fields
        #endregion
    }
    #endif
    #endregion

    #region ReadEventDetails Class
    #if (!OPCUA_EXCLUDE_ReadEventDetails)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ReadEventDetails : HistoryReadDetails
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ReadEventDetails()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_numValuesPerNode = (uint)0;
            m_startTime = DateTime.MinValue;
            m_endTime = DateTime.MinValue;
            m_filter = new EventFilter();
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "NumValuesPerNode", IsRequired = false, Order = 1)]
        public uint NumValuesPerNode
        {
            get { return m_numValuesPerNode;  }
            set { m_numValuesPerNode = value; }
        }

        /// <remarks />
        [DataMember(Name = "StartTime", IsRequired = false, Order = 2)]
        public DateTime StartTime
        {
            get { return m_startTime;  }
            set { m_startTime = value; }
        }

        /// <remarks />
        [DataMember(Name = "EndTime", IsRequired = false, Order = 3)]
        public DateTime EndTime
        {
            get { return m_endTime;  }
            set { m_endTime = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "Filter", IsRequired = false, Order = 4)]
        public EventFilter Filter
        {
            get
            {
                return m_filter;
            }

            set
            {
                m_filter = value;

                if (value == null)
                {
                    m_filter = new EventFilter();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ReadEventDetails; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ReadEventDetails_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ReadEventDetails_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteUInt32("NumValuesPerNode", NumValuesPerNode);
            encoder.WriteDateTime("StartTime", StartTime);
            encoder.WriteDateTime("EndTime", EndTime);
            encoder.WriteEncodeable("Filter", Filter, typeof(EventFilter));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            NumValuesPerNode = decoder.ReadUInt32("NumValuesPerNode");
            StartTime = decoder.ReadDateTime("StartTime");
            EndTime = decoder.ReadDateTime("EndTime");
            Filter = (EventFilter)decoder.ReadEncodeable("Filter", typeof(EventFilter));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ReadEventDetails value = encodeable as ReadEventDetails;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_numValuesPerNode, value.m_numValuesPerNode)) return false;
            if (!Utils.IsEqual(m_startTime, value.m_startTime)) return false;
            if (!Utils.IsEqual(m_endTime, value.m_endTime)) return false;
            if (!Utils.IsEqual(m_filter, value.m_filter)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (ReadEventDetails)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ReadEventDetails clone = (ReadEventDetails)base.MemberwiseClone();

            clone.m_numValuesPerNode = (uint)Utils.Clone(this.m_numValuesPerNode);
            clone.m_startTime = (DateTime)Utils.Clone(this.m_startTime);
            clone.m_endTime = (DateTime)Utils.Clone(this.m_endTime);
            clone.m_filter = (EventFilter)Utils.Clone(this.m_filter);

            return clone;
        }
        #endregion

        #region Private Fields
        private uint m_numValuesPerNode;
        private DateTime m_startTime;
        private DateTime m_endTime;
        private EventFilter m_filter;
        #endregion
    }
    #endif
    #endregion

    #region ReadRawModifiedDetails Class
    #if (!OPCUA_EXCLUDE_ReadRawModifiedDetails)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ReadRawModifiedDetails : HistoryReadDetails
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ReadRawModifiedDetails()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_isReadModified = true;
            m_startTime = DateTime.MinValue;
            m_endTime = DateTime.MinValue;
            m_numValuesPerNode = (uint)0;
            m_returnBounds = true;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "IsReadModified", IsRequired = false, Order = 1)]
        public bool IsReadModified
        {
            get { return m_isReadModified;  }
            set { m_isReadModified = value; }
        }

        /// <remarks />
        [DataMember(Name = "StartTime", IsRequired = false, Order = 2)]
        public DateTime StartTime
        {
            get { return m_startTime;  }
            set { m_startTime = value; }
        }

        /// <remarks />
        [DataMember(Name = "EndTime", IsRequired = false, Order = 3)]
        public DateTime EndTime
        {
            get { return m_endTime;  }
            set { m_endTime = value; }
        }

        /// <remarks />
        [DataMember(Name = "NumValuesPerNode", IsRequired = false, Order = 4)]
        public uint NumValuesPerNode
        {
            get { return m_numValuesPerNode;  }
            set { m_numValuesPerNode = value; }
        }

        /// <remarks />
        [DataMember(Name = "ReturnBounds", IsRequired = false, Order = 5)]
        public bool ReturnBounds
        {
            get { return m_returnBounds;  }
            set { m_returnBounds = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ReadRawModifiedDetails; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ReadRawModifiedDetails_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ReadRawModifiedDetails_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteBoolean("IsReadModified", IsReadModified);
            encoder.WriteDateTime("StartTime", StartTime);
            encoder.WriteDateTime("EndTime", EndTime);
            encoder.WriteUInt32("NumValuesPerNode", NumValuesPerNode);
            encoder.WriteBoolean("ReturnBounds", ReturnBounds);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            IsReadModified = decoder.ReadBoolean("IsReadModified");
            StartTime = decoder.ReadDateTime("StartTime");
            EndTime = decoder.ReadDateTime("EndTime");
            NumValuesPerNode = decoder.ReadUInt32("NumValuesPerNode");
            ReturnBounds = decoder.ReadBoolean("ReturnBounds");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ReadRawModifiedDetails value = encodeable as ReadRawModifiedDetails;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_isReadModified, value.m_isReadModified)) return false;
            if (!Utils.IsEqual(m_startTime, value.m_startTime)) return false;
            if (!Utils.IsEqual(m_endTime, value.m_endTime)) return false;
            if (!Utils.IsEqual(m_numValuesPerNode, value.m_numValuesPerNode)) return false;
            if (!Utils.IsEqual(m_returnBounds, value.m_returnBounds)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (ReadRawModifiedDetails)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ReadRawModifiedDetails clone = (ReadRawModifiedDetails)base.MemberwiseClone();

            clone.m_isReadModified = (bool)Utils.Clone(this.m_isReadModified);
            clone.m_startTime = (DateTime)Utils.Clone(this.m_startTime);
            clone.m_endTime = (DateTime)Utils.Clone(this.m_endTime);
            clone.m_numValuesPerNode = (uint)Utils.Clone(this.m_numValuesPerNode);
            clone.m_returnBounds = (bool)Utils.Clone(this.m_returnBounds);

            return clone;
        }
        #endregion

        #region Private Fields
        private bool m_isReadModified;
        private DateTime m_startTime;
        private DateTime m_endTime;
        private uint m_numValuesPerNode;
        private bool m_returnBounds;
        #endregion
    }
    #endif
    #endregion

    #region ReadProcessedDetails Class
    #if (!OPCUA_EXCLUDE_ReadProcessedDetails)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ReadProcessedDetails : HistoryReadDetails
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ReadProcessedDetails()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_startTime = DateTime.MinValue;
            m_endTime = DateTime.MinValue;
            m_processingInterval = (double)0;
            m_aggregateType = new NodeIdCollection();
            m_aggregateConfiguration = new AggregateConfiguration();
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "StartTime", IsRequired = false, Order = 1)]
        public DateTime StartTime
        {
            get { return m_startTime;  }
            set { m_startTime = value; }
        }

        /// <remarks />
        [DataMember(Name = "EndTime", IsRequired = false, Order = 2)]
        public DateTime EndTime
        {
            get { return m_endTime;  }
            set { m_endTime = value; }
        }

        /// <remarks />
        [DataMember(Name = "ProcessingInterval", IsRequired = false, Order = 3)]
        public double ProcessingInterval
        {
            get { return m_processingInterval;  }
            set { m_processingInterval = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "AggregateType", IsRequired = false, Order = 4)]
        public NodeIdCollection AggregateType
        {
            get
            {
                return m_aggregateType;
            }

            set
            {
                m_aggregateType = value;

                if (value == null)
                {
                    m_aggregateType = new NodeIdCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "AggregateConfiguration", IsRequired = false, Order = 5)]
        public AggregateConfiguration AggregateConfiguration
        {
            get
            {
                return m_aggregateConfiguration;
            }

            set
            {
                m_aggregateConfiguration = value;

                if (value == null)
                {
                    m_aggregateConfiguration = new AggregateConfiguration();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ReadProcessedDetails; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ReadProcessedDetails_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ReadProcessedDetails_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteDateTime("StartTime", StartTime);
            encoder.WriteDateTime("EndTime", EndTime);
            encoder.WriteDouble("ProcessingInterval", ProcessingInterval);
            encoder.WriteNodeIdArray("AggregateType", AggregateType);
            encoder.WriteEncodeable("AggregateConfiguration", AggregateConfiguration, typeof(AggregateConfiguration));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            StartTime = decoder.ReadDateTime("StartTime");
            EndTime = decoder.ReadDateTime("EndTime");
            ProcessingInterval = decoder.ReadDouble("ProcessingInterval");
            AggregateType = decoder.ReadNodeIdArray("AggregateType");
            AggregateConfiguration = (AggregateConfiguration)decoder.ReadEncodeable("AggregateConfiguration", typeof(AggregateConfiguration));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ReadProcessedDetails value = encodeable as ReadProcessedDetails;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_startTime, value.m_startTime)) return false;
            if (!Utils.IsEqual(m_endTime, value.m_endTime)) return false;
            if (!Utils.IsEqual(m_processingInterval, value.m_processingInterval)) return false;
            if (!Utils.IsEqual(m_aggregateType, value.m_aggregateType)) return false;
            if (!Utils.IsEqual(m_aggregateConfiguration, value.m_aggregateConfiguration)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (ReadProcessedDetails)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ReadProcessedDetails clone = (ReadProcessedDetails)base.MemberwiseClone();

            clone.m_startTime = (DateTime)Utils.Clone(this.m_startTime);
            clone.m_endTime = (DateTime)Utils.Clone(this.m_endTime);
            clone.m_processingInterval = (double)Utils.Clone(this.m_processingInterval);
            clone.m_aggregateType = (NodeIdCollection)Utils.Clone(this.m_aggregateType);
            clone.m_aggregateConfiguration = (AggregateConfiguration)Utils.Clone(this.m_aggregateConfiguration);

            return clone;
        }
        #endregion

        #region Private Fields
        private DateTime m_startTime;
        private DateTime m_endTime;
        private double m_processingInterval;
        private NodeIdCollection m_aggregateType;
        private AggregateConfiguration m_aggregateConfiguration;
        #endregion
    }
    #endif
    #endregion

    #region ReadAtTimeDetails Class
    #if (!OPCUA_EXCLUDE_ReadAtTimeDetails)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ReadAtTimeDetails : HistoryReadDetails
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ReadAtTimeDetails()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_reqTimes = new DateTimeCollection();
            m_useSimpleBounds = true;
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ReqTimes", IsRequired = false, Order = 1)]
        public DateTimeCollection ReqTimes
        {
            get
            {
                return m_reqTimes;
            }

            set
            {
                m_reqTimes = value;

                if (value == null)
                {
                    m_reqTimes = new DateTimeCollection();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "UseSimpleBounds", IsRequired = false, Order = 2)]
        public bool UseSimpleBounds
        {
            get { return m_useSimpleBounds;  }
            set { m_useSimpleBounds = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ReadAtTimeDetails; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ReadAtTimeDetails_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ReadAtTimeDetails_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteDateTimeArray("ReqTimes", ReqTimes);
            encoder.WriteBoolean("UseSimpleBounds", UseSimpleBounds);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ReqTimes = decoder.ReadDateTimeArray("ReqTimes");
            UseSimpleBounds = decoder.ReadBoolean("UseSimpleBounds");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ReadAtTimeDetails value = encodeable as ReadAtTimeDetails;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_reqTimes, value.m_reqTimes)) return false;
            if (!Utils.IsEqual(m_useSimpleBounds, value.m_useSimpleBounds)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (ReadAtTimeDetails)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ReadAtTimeDetails clone = (ReadAtTimeDetails)base.MemberwiseClone();

            clone.m_reqTimes = (DateTimeCollection)Utils.Clone(this.m_reqTimes);
            clone.m_useSimpleBounds = (bool)Utils.Clone(this.m_useSimpleBounds);

            return clone;
        }
        #endregion

        #region Private Fields
        private DateTimeCollection m_reqTimes;
        private bool m_useSimpleBounds;
        #endregion
    }
    #endif
    #endregion

    #region ReadAnnotationDataDetails Class
    #if (!OPCUA_EXCLUDE_ReadAnnotationDataDetails)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ReadAnnotationDataDetails : HistoryReadDetails
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ReadAnnotationDataDetails()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_reqTimes = new DateTimeCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ReqTimes", IsRequired = false, Order = 1)]
        public DateTimeCollection ReqTimes
        {
            get
            {
                return m_reqTimes;
            }

            set
            {
                m_reqTimes = value;

                if (value == null)
                {
                    m_reqTimes = new DateTimeCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ReadAnnotationDataDetails; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ReadAnnotationDataDetails_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ReadAnnotationDataDetails_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteDateTimeArray("ReqTimes", ReqTimes);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ReqTimes = decoder.ReadDateTimeArray("ReqTimes");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ReadAnnotationDataDetails value = encodeable as ReadAnnotationDataDetails;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_reqTimes, value.m_reqTimes)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (ReadAnnotationDataDetails)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ReadAnnotationDataDetails clone = (ReadAnnotationDataDetails)base.MemberwiseClone();

            clone.m_reqTimes = (DateTimeCollection)Utils.Clone(this.m_reqTimes);

            return clone;
        }
        #endregion

        #region Private Fields
        private DateTimeCollection m_reqTimes;
        #endregion
    }
    #endif
    #endregion

    #region HistoryData Class
    #if (!OPCUA_EXCLUDE_HistoryData)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class HistoryData : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public HistoryData()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_dataValues = new DataValueCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "DataValues", IsRequired = false, Order = 1)]
        public DataValueCollection DataValues
        {
            get
            {
                return m_dataValues;
            }

            set
            {
                m_dataValues = value;

                if (value == null)
                {
                    m_dataValues = new DataValueCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.HistoryData; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.HistoryData_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.HistoryData_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteDataValueArray("DataValues", DataValues);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            DataValues = decoder.ReadDataValueArray("DataValues");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            HistoryData value = encodeable as HistoryData;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_dataValues, value.m_dataValues)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (HistoryData)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            HistoryData clone = (HistoryData)base.MemberwiseClone();

            clone.m_dataValues = (DataValueCollection)Utils.Clone(this.m_dataValues);

            return clone;
        }
        #endregion

        #region Private Fields
        private DataValueCollection m_dataValues;
        #endregion
    }
    #endif
    #endregion

    #region ModificationInfo Class
    #if (!OPCUA_EXCLUDE_ModificationInfo)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ModificationInfo : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ModificationInfo()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_modificationTime = DateTime.MinValue;
            m_updateType = HistoryUpdateType.Insert;
            m_userName = null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "ModificationTime", IsRequired = false, Order = 1)]
        public DateTime ModificationTime
        {
            get { return m_modificationTime;  }
            set { m_modificationTime = value; }
        }

        /// <remarks />
        [DataMember(Name = "UpdateType", IsRequired = false, Order = 2)]
        public HistoryUpdateType UpdateType
        {
            get { return m_updateType;  }
            set { m_updateType = value; }
        }

        /// <remarks />
        [DataMember(Name = "UserName", IsRequired = false, Order = 3)]
        public string UserName
        {
            get { return m_userName;  }
            set { m_userName = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ModificationInfo; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ModificationInfo_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ModificationInfo_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteDateTime("ModificationTime", ModificationTime);
            encoder.WriteEnumerated("UpdateType", UpdateType);
            encoder.WriteString("UserName", UserName);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ModificationTime = decoder.ReadDateTime("ModificationTime");
            UpdateType = (HistoryUpdateType)decoder.ReadEnumerated("UpdateType", typeof(HistoryUpdateType));
            UserName = decoder.ReadString("UserName");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ModificationInfo value = encodeable as ModificationInfo;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_modificationTime, value.m_modificationTime)) return false;
            if (!Utils.IsEqual(m_updateType, value.m_updateType)) return false;
            if (!Utils.IsEqual(m_userName, value.m_userName)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (ModificationInfo)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ModificationInfo clone = (ModificationInfo)base.MemberwiseClone();

            clone.m_modificationTime = (DateTime)Utils.Clone(this.m_modificationTime);
            clone.m_updateType = (HistoryUpdateType)Utils.Clone(this.m_updateType);
            clone.m_userName = (string)Utils.Clone(this.m_userName);

            return clone;
        }
        #endregion

        #region Private Fields
        private DateTime m_modificationTime;
        private HistoryUpdateType m_updateType;
        private string m_userName;
        #endregion
    }

    #region ModificationInfoCollection Class
    /// <summary>
    /// A collection of ModificationInfo objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfModificationInfo", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "ModificationInfo")]
    #if !NET_STANDARD
    public partial class ModificationInfoCollection : List<ModificationInfo>, ICloneable
    #else
    public partial class ModificationInfoCollection : List<ModificationInfo>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public ModificationInfoCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public ModificationInfoCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public ModificationInfoCollection(IEnumerable<ModificationInfo> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator ModificationInfoCollection(ModificationInfo[] values)
        {
            if (values != null)
            {
                return new ModificationInfoCollection(values);
            }

            return new ModificationInfoCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator ModificationInfo[](ModificationInfoCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (ModificationInfoCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ModificationInfoCollection clone = new ModificationInfoCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((ModificationInfo)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region HistoryModifiedData Class
    #if (!OPCUA_EXCLUDE_HistoryModifiedData)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class HistoryModifiedData : HistoryData
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public HistoryModifiedData()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_modificationInfos = new ModificationInfoCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ModificationInfos", IsRequired = false, Order = 1)]
        public ModificationInfoCollection ModificationInfos
        {
            get
            {
                return m_modificationInfos;
            }

            set
            {
                m_modificationInfos = value;

                if (value == null)
                {
                    m_modificationInfos = new ModificationInfoCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.HistoryModifiedData; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.HistoryModifiedData_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.HistoryModifiedData_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeableArray("ModificationInfos", ModificationInfos.ToArray(), typeof(ModificationInfo));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ModificationInfos = (ModificationInfoCollection)decoder.ReadEncodeableArray("ModificationInfos", typeof(ModificationInfo));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            HistoryModifiedData value = encodeable as HistoryModifiedData;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_modificationInfos, value.m_modificationInfos)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (HistoryModifiedData)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            HistoryModifiedData clone = (HistoryModifiedData)base.MemberwiseClone();

            clone.m_modificationInfos = (ModificationInfoCollection)Utils.Clone(this.m_modificationInfos);

            return clone;
        }
        #endregion

        #region Private Fields
        private ModificationInfoCollection m_modificationInfos;
        #endregion
    }
    #endif
    #endregion

    #region HistoryEvent Class
    #if (!OPCUA_EXCLUDE_HistoryEvent)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class HistoryEvent : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public HistoryEvent()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_events = new HistoryEventFieldListCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "Events", IsRequired = false, Order = 1)]
        public HistoryEventFieldListCollection Events
        {
            get
            {
                return m_events;
            }

            set
            {
                m_events = value;

                if (value == null)
                {
                    m_events = new HistoryEventFieldListCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.HistoryEvent; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.HistoryEvent_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.HistoryEvent_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeableArray("Events", Events.ToArray(), typeof(HistoryEventFieldList));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            Events = (HistoryEventFieldListCollection)decoder.ReadEncodeableArray("Events", typeof(HistoryEventFieldList));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            HistoryEvent value = encodeable as HistoryEvent;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_events, value.m_events)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (HistoryEvent)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            HistoryEvent clone = (HistoryEvent)base.MemberwiseClone();

            clone.m_events = (HistoryEventFieldListCollection)Utils.Clone(this.m_events);

            return clone;
        }
        #endregion

        #region Private Fields
        private HistoryEventFieldListCollection m_events;
        #endregion
    }
    #endif
    #endregion

    #region HistoryReadRequest Class
    #if (!OPCUA_EXCLUDE_HistoryReadRequest)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class HistoryReadRequest : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public HistoryReadRequest()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_requestHeader = new RequestHeader();
            m_historyReadDetails = null;
            m_timestampsToReturn = TimestampsToReturn.Source;
            m_releaseContinuationPoints = true;
            m_nodesToRead = new HistoryReadValueIdCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RequestHeader", IsRequired = false, Order = 1)]
        public RequestHeader RequestHeader
        {
            get
            {
                return m_requestHeader;
            }

            set
            {
                m_requestHeader = value;

                if (value == null)
                {
                    m_requestHeader = new RequestHeader();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "HistoryReadDetails", IsRequired = false, Order = 2)]
        public ExtensionObject HistoryReadDetails
        {
            get { return m_historyReadDetails;  }
            set { m_historyReadDetails = value; }
        }

        /// <remarks />
        [DataMember(Name = "TimestampsToReturn", IsRequired = false, Order = 3)]
        public TimestampsToReturn TimestampsToReturn
        {
            get { return m_timestampsToReturn;  }
            set { m_timestampsToReturn = value; }
        }

        /// <remarks />
        [DataMember(Name = "ReleaseContinuationPoints", IsRequired = false, Order = 4)]
        public bool ReleaseContinuationPoints
        {
            get { return m_releaseContinuationPoints;  }
            set { m_releaseContinuationPoints = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "NodesToRead", IsRequired = false, Order = 5)]
        public HistoryReadValueIdCollection NodesToRead
        {
            get
            {
                return m_nodesToRead;
            }

            set
            {
                m_nodesToRead = value;

                if (value == null)
                {
                    m_nodesToRead = new HistoryReadValueIdCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.HistoryReadRequest; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.HistoryReadRequest_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.HistoryReadRequest_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("RequestHeader", RequestHeader, typeof(RequestHeader));
            encoder.WriteExtensionObject("HistoryReadDetails", HistoryReadDetails);
            encoder.WriteEnumerated("TimestampsToReturn", TimestampsToReturn);
            encoder.WriteBoolean("ReleaseContinuationPoints", ReleaseContinuationPoints);
            encoder.WriteEncodeableArray("NodesToRead", NodesToRead.ToArray(), typeof(HistoryReadValueId));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            RequestHeader = (RequestHeader)decoder.ReadEncodeable("RequestHeader", typeof(RequestHeader));
            HistoryReadDetails = decoder.ReadExtensionObject("HistoryReadDetails");
            TimestampsToReturn = (TimestampsToReturn)decoder.ReadEnumerated("TimestampsToReturn", typeof(TimestampsToReturn));
            ReleaseContinuationPoints = decoder.ReadBoolean("ReleaseContinuationPoints");
            NodesToRead = (HistoryReadValueIdCollection)decoder.ReadEncodeableArray("NodesToRead", typeof(HistoryReadValueId));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            HistoryReadRequest value = encodeable as HistoryReadRequest;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_requestHeader, value.m_requestHeader)) return false;
            if (!Utils.IsEqual(m_historyReadDetails, value.m_historyReadDetails)) return false;
            if (!Utils.IsEqual(m_timestampsToReturn, value.m_timestampsToReturn)) return false;
            if (!Utils.IsEqual(m_releaseContinuationPoints, value.m_releaseContinuationPoints)) return false;
            if (!Utils.IsEqual(m_nodesToRead, value.m_nodesToRead)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (HistoryReadRequest)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            HistoryReadRequest clone = (HistoryReadRequest)base.MemberwiseClone();

            clone.m_requestHeader = (RequestHeader)Utils.Clone(this.m_requestHeader);
            clone.m_historyReadDetails = (ExtensionObject)Utils.Clone(this.m_historyReadDetails);
            clone.m_timestampsToReturn = (TimestampsToReturn)Utils.Clone(this.m_timestampsToReturn);
            clone.m_releaseContinuationPoints = (bool)Utils.Clone(this.m_releaseContinuationPoints);
            clone.m_nodesToRead = (HistoryReadValueIdCollection)Utils.Clone(this.m_nodesToRead);

            return clone;
        }
        #endregion

        #region Private Fields
        private RequestHeader m_requestHeader;
        private ExtensionObject m_historyReadDetails;
        private TimestampsToReturn m_timestampsToReturn;
        private bool m_releaseContinuationPoints;
        private HistoryReadValueIdCollection m_nodesToRead;
        #endregion
    }
    #endif
    #endregion

    #region HistoryReadResponse Class
    #if (!OPCUA_EXCLUDE_HistoryReadResponse)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class HistoryReadResponse : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public HistoryReadResponse()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_responseHeader = new ResponseHeader();
            m_results = new HistoryReadResultCollection();
            m_diagnosticInfos = new DiagnosticInfoCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ResponseHeader", IsRequired = false, Order = 1)]
        public ResponseHeader ResponseHeader
        {
            get
            {
                return m_responseHeader;
            }

            set
            {
                m_responseHeader = value;

                if (value == null)
                {
                    m_responseHeader = new ResponseHeader();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "Results", IsRequired = false, Order = 2)]
        public HistoryReadResultCollection Results
        {
            get
            {
                return m_results;
            }

            set
            {
                m_results = value;

                if (value == null)
                {
                    m_results = new HistoryReadResultCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "DiagnosticInfos", IsRequired = false, Order = 3)]
        public DiagnosticInfoCollection DiagnosticInfos
        {
            get
            {
                return m_diagnosticInfos;
            }

            set
            {
                m_diagnosticInfos = value;

                if (value == null)
                {
                    m_diagnosticInfos = new DiagnosticInfoCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.HistoryReadResponse; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.HistoryReadResponse_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.HistoryReadResponse_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("ResponseHeader", ResponseHeader, typeof(ResponseHeader));
            encoder.WriteEncodeableArray("Results", Results.ToArray(), typeof(HistoryReadResult));
            encoder.WriteDiagnosticInfoArray("DiagnosticInfos", DiagnosticInfos);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ResponseHeader = (ResponseHeader)decoder.ReadEncodeable("ResponseHeader", typeof(ResponseHeader));
            Results = (HistoryReadResultCollection)decoder.ReadEncodeableArray("Results", typeof(HistoryReadResult));
            DiagnosticInfos = decoder.ReadDiagnosticInfoArray("DiagnosticInfos");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            HistoryReadResponse value = encodeable as HistoryReadResponse;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_responseHeader, value.m_responseHeader)) return false;
            if (!Utils.IsEqual(m_results, value.m_results)) return false;
            if (!Utils.IsEqual(m_diagnosticInfos, value.m_diagnosticInfos)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (HistoryReadResponse)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            HistoryReadResponse clone = (HistoryReadResponse)base.MemberwiseClone();

            clone.m_responseHeader = (ResponseHeader)Utils.Clone(this.m_responseHeader);
            clone.m_results = (HistoryReadResultCollection)Utils.Clone(this.m_results);
            clone.m_diagnosticInfos = (DiagnosticInfoCollection)Utils.Clone(this.m_diagnosticInfos);

            return clone;
        }
        #endregion

        #region Private Fields
        private ResponseHeader m_responseHeader;
        private HistoryReadResultCollection m_results;
        private DiagnosticInfoCollection m_diagnosticInfos;
        #endregion
    }
    #endif
    #endregion

    #region WriteValue Class
    #if (!OPCUA_EXCLUDE_WriteValue)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class WriteValue : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public WriteValue()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_nodeId = null;
            m_attributeId = (uint)0;
            m_indexRange = null;
            m_value = new DataValue();
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "NodeId", IsRequired = false, Order = 1)]
        public NodeId NodeId
        {
            get { return m_nodeId;  }
            set { m_nodeId = value; }
        }

        /// <remarks />
        [DataMember(Name = "AttributeId", IsRequired = false, Order = 2)]
        public uint AttributeId
        {
            get { return m_attributeId;  }
            set { m_attributeId = value; }
        }

        /// <remarks />
        [DataMember(Name = "IndexRange", IsRequired = false, Order = 3)]
        public string IndexRange
        {
            get { return m_indexRange;  }
            set { m_indexRange = value; }
        }

        /// <remarks />
        [DataMember(Name = "Value", IsRequired = false, Order = 4)]
        public DataValue Value
        {
            get { return m_value;  }
            set { m_value = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.WriteValue; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.WriteValue_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.WriteValue_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteNodeId("NodeId", NodeId);
            encoder.WriteUInt32("AttributeId", AttributeId);
            encoder.WriteString("IndexRange", IndexRange);
            encoder.WriteDataValue("Value", Value);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            NodeId = decoder.ReadNodeId("NodeId");
            AttributeId = decoder.ReadUInt32("AttributeId");
            IndexRange = decoder.ReadString("IndexRange");
            Value = decoder.ReadDataValue("Value");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            WriteValue value = encodeable as WriteValue;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_nodeId, value.m_nodeId)) return false;
            if (!Utils.IsEqual(m_attributeId, value.m_attributeId)) return false;
            if (!Utils.IsEqual(m_indexRange, value.m_indexRange)) return false;
            if (!Utils.IsEqual(m_value, value.m_value)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (WriteValue)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            WriteValue clone = (WriteValue)base.MemberwiseClone();

            clone.m_nodeId = (NodeId)Utils.Clone(this.m_nodeId);
            clone.m_attributeId = (uint)Utils.Clone(this.m_attributeId);
            clone.m_indexRange = (string)Utils.Clone(this.m_indexRange);
            clone.m_value = (DataValue)Utils.Clone(this.m_value);

            return clone;
        }
        #endregion

        #region Private Fields
        private NodeId m_nodeId;
        private uint m_attributeId;
        private string m_indexRange;
        private DataValue m_value;
        #endregion
    }

    #region WriteValueCollection Class
    /// <summary>
    /// A collection of WriteValue objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfWriteValue", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "WriteValue")]
    #if !NET_STANDARD
    public partial class WriteValueCollection : List<WriteValue>, ICloneable
    #else
    public partial class WriteValueCollection : List<WriteValue>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public WriteValueCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public WriteValueCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public WriteValueCollection(IEnumerable<WriteValue> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator WriteValueCollection(WriteValue[] values)
        {
            if (values != null)
            {
                return new WriteValueCollection(values);
            }

            return new WriteValueCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator WriteValue[](WriteValueCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (WriteValueCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            WriteValueCollection clone = new WriteValueCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((WriteValue)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region WriteRequest Class
    #if (!OPCUA_EXCLUDE_WriteRequest)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class WriteRequest : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public WriteRequest()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_requestHeader = new RequestHeader();
            m_nodesToWrite = new WriteValueCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RequestHeader", IsRequired = false, Order = 1)]
        public RequestHeader RequestHeader
        {
            get
            {
                return m_requestHeader;
            }

            set
            {
                m_requestHeader = value;

                if (value == null)
                {
                    m_requestHeader = new RequestHeader();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "NodesToWrite", IsRequired = false, Order = 2)]
        public WriteValueCollection NodesToWrite
        {
            get
            {
                return m_nodesToWrite;
            }

            set
            {
                m_nodesToWrite = value;

                if (value == null)
                {
                    m_nodesToWrite = new WriteValueCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.WriteRequest; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.WriteRequest_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.WriteRequest_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("RequestHeader", RequestHeader, typeof(RequestHeader));
            encoder.WriteEncodeableArray("NodesToWrite", NodesToWrite.ToArray(), typeof(WriteValue));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            RequestHeader = (RequestHeader)decoder.ReadEncodeable("RequestHeader", typeof(RequestHeader));
            NodesToWrite = (WriteValueCollection)decoder.ReadEncodeableArray("NodesToWrite", typeof(WriteValue));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            WriteRequest value = encodeable as WriteRequest;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_requestHeader, value.m_requestHeader)) return false;
            if (!Utils.IsEqual(m_nodesToWrite, value.m_nodesToWrite)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (WriteRequest)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            WriteRequest clone = (WriteRequest)base.MemberwiseClone();

            clone.m_requestHeader = (RequestHeader)Utils.Clone(this.m_requestHeader);
            clone.m_nodesToWrite = (WriteValueCollection)Utils.Clone(this.m_nodesToWrite);

            return clone;
        }
        #endregion

        #region Private Fields
        private RequestHeader m_requestHeader;
        private WriteValueCollection m_nodesToWrite;
        #endregion
    }
    #endif
    #endregion

    #region WriteResponse Class
    #if (!OPCUA_EXCLUDE_WriteResponse)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class WriteResponse : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public WriteResponse()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_responseHeader = new ResponseHeader();
            m_results = new StatusCodeCollection();
            m_diagnosticInfos = new DiagnosticInfoCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ResponseHeader", IsRequired = false, Order = 1)]
        public ResponseHeader ResponseHeader
        {
            get
            {
                return m_responseHeader;
            }

            set
            {
                m_responseHeader = value;

                if (value == null)
                {
                    m_responseHeader = new ResponseHeader();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "Results", IsRequired = false, Order = 2)]
        public StatusCodeCollection Results
        {
            get
            {
                return m_results;
            }

            set
            {
                m_results = value;

                if (value == null)
                {
                    m_results = new StatusCodeCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "DiagnosticInfos", IsRequired = false, Order = 3)]
        public DiagnosticInfoCollection DiagnosticInfos
        {
            get
            {
                return m_diagnosticInfos;
            }

            set
            {
                m_diagnosticInfos = value;

                if (value == null)
                {
                    m_diagnosticInfos = new DiagnosticInfoCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.WriteResponse; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.WriteResponse_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.WriteResponse_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("ResponseHeader", ResponseHeader, typeof(ResponseHeader));
            encoder.WriteStatusCodeArray("Results", Results);
            encoder.WriteDiagnosticInfoArray("DiagnosticInfos", DiagnosticInfos);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ResponseHeader = (ResponseHeader)decoder.ReadEncodeable("ResponseHeader", typeof(ResponseHeader));
            Results = decoder.ReadStatusCodeArray("Results");
            DiagnosticInfos = decoder.ReadDiagnosticInfoArray("DiagnosticInfos");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            WriteResponse value = encodeable as WriteResponse;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_responseHeader, value.m_responseHeader)) return false;
            if (!Utils.IsEqual(m_results, value.m_results)) return false;
            if (!Utils.IsEqual(m_diagnosticInfos, value.m_diagnosticInfos)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (WriteResponse)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            WriteResponse clone = (WriteResponse)base.MemberwiseClone();

            clone.m_responseHeader = (ResponseHeader)Utils.Clone(this.m_responseHeader);
            clone.m_results = (StatusCodeCollection)Utils.Clone(this.m_results);
            clone.m_diagnosticInfos = (DiagnosticInfoCollection)Utils.Clone(this.m_diagnosticInfos);

            return clone;
        }
        #endregion

        #region Private Fields
        private ResponseHeader m_responseHeader;
        private StatusCodeCollection m_results;
        private DiagnosticInfoCollection m_diagnosticInfos;
        #endregion
    }
    #endif
    #endregion

    #region HistoryUpdateDetails Class
    #if (!OPCUA_EXCLUDE_HistoryUpdateDetails)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class HistoryUpdateDetails : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public HistoryUpdateDetails()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_nodeId = null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "NodeId", IsRequired = false, Order = 1)]
        public NodeId NodeId
        {
            get { return m_nodeId;  }
            set { m_nodeId = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.HistoryUpdateDetails; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.HistoryUpdateDetails_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.HistoryUpdateDetails_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteNodeId("NodeId", NodeId);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            NodeId = decoder.ReadNodeId("NodeId");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            HistoryUpdateDetails value = encodeable as HistoryUpdateDetails;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_nodeId, value.m_nodeId)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (HistoryUpdateDetails)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            HistoryUpdateDetails clone = (HistoryUpdateDetails)base.MemberwiseClone();

            clone.m_nodeId = (NodeId)Utils.Clone(this.m_nodeId);

            return clone;
        }
        #endregion

        #region Private Fields
        private NodeId m_nodeId;
        #endregion
    }
    #endif
    #endregion

    #region HistoryUpdateType Enumeration
    #if (!OPCUA_EXCLUDE_HistoryUpdateType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public enum HistoryUpdateType
    {
        /// <remarks />
        [EnumMember(Value = "Insert_1")]
        Insert = 1,

        /// <remarks />
        [EnumMember(Value = "Replace_2")]
        Replace = 2,

        /// <remarks />
        [EnumMember(Value = "Update_3")]
        Update = 3,

        /// <remarks />
        [EnumMember(Value = "Delete_4")]
        Delete = 4,
    }
    #endif
    #endregion

    #region PerformUpdateType Enumeration
    #if (!OPCUA_EXCLUDE_PerformUpdateType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public enum PerformUpdateType
    {
        /// <remarks />
        [EnumMember(Value = "Insert_1")]
        Insert = 1,

        /// <remarks />
        [EnumMember(Value = "Replace_2")]
        Replace = 2,

        /// <remarks />
        [EnumMember(Value = "Update_3")]
        Update = 3,

        /// <remarks />
        [EnumMember(Value = "Remove_4")]
        Remove = 4,
    }
    #endif
    #endregion

    #region UpdateDataDetails Class
    #if (!OPCUA_EXCLUDE_UpdateDataDetails)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class UpdateDataDetails : HistoryUpdateDetails
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public UpdateDataDetails()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_performInsertReplace = PerformUpdateType.Insert;
            m_updateValues = new DataValueCollection();
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "PerformInsertReplace", IsRequired = false, Order = 1)]
        public PerformUpdateType PerformInsertReplace
        {
            get { return m_performInsertReplace;  }
            set { m_performInsertReplace = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "UpdateValues", IsRequired = false, Order = 2)]
        public DataValueCollection UpdateValues
        {
            get
            {
                return m_updateValues;
            }

            set
            {
                m_updateValues = value;

                if (value == null)
                {
                    m_updateValues = new DataValueCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.UpdateDataDetails; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.UpdateDataDetails_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.UpdateDataDetails_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEnumerated("PerformInsertReplace", PerformInsertReplace);
            encoder.WriteDataValueArray("UpdateValues", UpdateValues);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            PerformInsertReplace = (PerformUpdateType)decoder.ReadEnumerated("PerformInsertReplace", typeof(PerformUpdateType));
            UpdateValues = decoder.ReadDataValueArray("UpdateValues");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            UpdateDataDetails value = encodeable as UpdateDataDetails;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_performInsertReplace, value.m_performInsertReplace)) return false;
            if (!Utils.IsEqual(m_updateValues, value.m_updateValues)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (UpdateDataDetails)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            UpdateDataDetails clone = (UpdateDataDetails)base.MemberwiseClone();

            clone.m_performInsertReplace = (PerformUpdateType)Utils.Clone(this.m_performInsertReplace);
            clone.m_updateValues = (DataValueCollection)Utils.Clone(this.m_updateValues);

            return clone;
        }
        #endregion

        #region Private Fields
        private PerformUpdateType m_performInsertReplace;
        private DataValueCollection m_updateValues;
        #endregion
    }
    #endif
    #endregion

    #region UpdateStructureDataDetails Class
    #if (!OPCUA_EXCLUDE_UpdateStructureDataDetails)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class UpdateStructureDataDetails : HistoryUpdateDetails
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public UpdateStructureDataDetails()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_performInsertReplace = PerformUpdateType.Insert;
            m_updateValues = new DataValueCollection();
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "PerformInsertReplace", IsRequired = false, Order = 1)]
        public PerformUpdateType PerformInsertReplace
        {
            get { return m_performInsertReplace;  }
            set { m_performInsertReplace = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "UpdateValues", IsRequired = false, Order = 2)]
        public DataValueCollection UpdateValues
        {
            get
            {
                return m_updateValues;
            }

            set
            {
                m_updateValues = value;

                if (value == null)
                {
                    m_updateValues = new DataValueCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.UpdateStructureDataDetails; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.UpdateStructureDataDetails_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.UpdateStructureDataDetails_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEnumerated("PerformInsertReplace", PerformInsertReplace);
            encoder.WriteDataValueArray("UpdateValues", UpdateValues);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            PerformInsertReplace = (PerformUpdateType)decoder.ReadEnumerated("PerformInsertReplace", typeof(PerformUpdateType));
            UpdateValues = decoder.ReadDataValueArray("UpdateValues");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            UpdateStructureDataDetails value = encodeable as UpdateStructureDataDetails;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_performInsertReplace, value.m_performInsertReplace)) return false;
            if (!Utils.IsEqual(m_updateValues, value.m_updateValues)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (UpdateStructureDataDetails)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            UpdateStructureDataDetails clone = (UpdateStructureDataDetails)base.MemberwiseClone();

            clone.m_performInsertReplace = (PerformUpdateType)Utils.Clone(this.m_performInsertReplace);
            clone.m_updateValues = (DataValueCollection)Utils.Clone(this.m_updateValues);

            return clone;
        }
        #endregion

        #region Private Fields
        private PerformUpdateType m_performInsertReplace;
        private DataValueCollection m_updateValues;
        #endregion
    }
    #endif
    #endregion

    #region UpdateEventDetails Class
    #if (!OPCUA_EXCLUDE_UpdateEventDetails)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class UpdateEventDetails : HistoryUpdateDetails
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public UpdateEventDetails()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_performInsertReplace = PerformUpdateType.Insert;
            m_filter = new EventFilter();
            m_eventData = new HistoryEventFieldListCollection();
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "PerformInsertReplace", IsRequired = false, Order = 1)]
        public PerformUpdateType PerformInsertReplace
        {
            get { return m_performInsertReplace;  }
            set { m_performInsertReplace = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "Filter", IsRequired = false, Order = 2)]
        public EventFilter Filter
        {
            get
            {
                return m_filter;
            }

            set
            {
                m_filter = value;

                if (value == null)
                {
                    m_filter = new EventFilter();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "EventData", IsRequired = false, Order = 3)]
        public HistoryEventFieldListCollection EventData
        {
            get
            {
                return m_eventData;
            }

            set
            {
                m_eventData = value;

                if (value == null)
                {
                    m_eventData = new HistoryEventFieldListCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.UpdateEventDetails; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.UpdateEventDetails_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.UpdateEventDetails_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEnumerated("PerformInsertReplace", PerformInsertReplace);
            encoder.WriteEncodeable("Filter", Filter, typeof(EventFilter));
            encoder.WriteEncodeableArray("EventData", EventData.ToArray(), typeof(HistoryEventFieldList));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            PerformInsertReplace = (PerformUpdateType)decoder.ReadEnumerated("PerformInsertReplace", typeof(PerformUpdateType));
            Filter = (EventFilter)decoder.ReadEncodeable("Filter", typeof(EventFilter));
            EventData = (HistoryEventFieldListCollection)decoder.ReadEncodeableArray("EventData", typeof(HistoryEventFieldList));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            UpdateEventDetails value = encodeable as UpdateEventDetails;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_performInsertReplace, value.m_performInsertReplace)) return false;
            if (!Utils.IsEqual(m_filter, value.m_filter)) return false;
            if (!Utils.IsEqual(m_eventData, value.m_eventData)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (UpdateEventDetails)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            UpdateEventDetails clone = (UpdateEventDetails)base.MemberwiseClone();

            clone.m_performInsertReplace = (PerformUpdateType)Utils.Clone(this.m_performInsertReplace);
            clone.m_filter = (EventFilter)Utils.Clone(this.m_filter);
            clone.m_eventData = (HistoryEventFieldListCollection)Utils.Clone(this.m_eventData);

            return clone;
        }
        #endregion

        #region Private Fields
        private PerformUpdateType m_performInsertReplace;
        private EventFilter m_filter;
        private HistoryEventFieldListCollection m_eventData;
        #endregion
    }
    #endif
    #endregion

    #region DeleteRawModifiedDetails Class
    #if (!OPCUA_EXCLUDE_DeleteRawModifiedDetails)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class DeleteRawModifiedDetails : HistoryUpdateDetails
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public DeleteRawModifiedDetails()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_isDeleteModified = true;
            m_startTime = DateTime.MinValue;
            m_endTime = DateTime.MinValue;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "IsDeleteModified", IsRequired = false, Order = 1)]
        public bool IsDeleteModified
        {
            get { return m_isDeleteModified;  }
            set { m_isDeleteModified = value; }
        }

        /// <remarks />
        [DataMember(Name = "StartTime", IsRequired = false, Order = 2)]
        public DateTime StartTime
        {
            get { return m_startTime;  }
            set { m_startTime = value; }
        }

        /// <remarks />
        [DataMember(Name = "EndTime", IsRequired = false, Order = 3)]
        public DateTime EndTime
        {
            get { return m_endTime;  }
            set { m_endTime = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.DeleteRawModifiedDetails; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.DeleteRawModifiedDetails_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.DeleteRawModifiedDetails_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteBoolean("IsDeleteModified", IsDeleteModified);
            encoder.WriteDateTime("StartTime", StartTime);
            encoder.WriteDateTime("EndTime", EndTime);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            IsDeleteModified = decoder.ReadBoolean("IsDeleteModified");
            StartTime = decoder.ReadDateTime("StartTime");
            EndTime = decoder.ReadDateTime("EndTime");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            DeleteRawModifiedDetails value = encodeable as DeleteRawModifiedDetails;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_isDeleteModified, value.m_isDeleteModified)) return false;
            if (!Utils.IsEqual(m_startTime, value.m_startTime)) return false;
            if (!Utils.IsEqual(m_endTime, value.m_endTime)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (DeleteRawModifiedDetails)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            DeleteRawModifiedDetails clone = (DeleteRawModifiedDetails)base.MemberwiseClone();

            clone.m_isDeleteModified = (bool)Utils.Clone(this.m_isDeleteModified);
            clone.m_startTime = (DateTime)Utils.Clone(this.m_startTime);
            clone.m_endTime = (DateTime)Utils.Clone(this.m_endTime);

            return clone;
        }
        #endregion

        #region Private Fields
        private bool m_isDeleteModified;
        private DateTime m_startTime;
        private DateTime m_endTime;
        #endregion
    }
    #endif
    #endregion

    #region DeleteAtTimeDetails Class
    #if (!OPCUA_EXCLUDE_DeleteAtTimeDetails)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class DeleteAtTimeDetails : HistoryUpdateDetails
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public DeleteAtTimeDetails()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_reqTimes = new DateTimeCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ReqTimes", IsRequired = false, Order = 1)]
        public DateTimeCollection ReqTimes
        {
            get
            {
                return m_reqTimes;
            }

            set
            {
                m_reqTimes = value;

                if (value == null)
                {
                    m_reqTimes = new DateTimeCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.DeleteAtTimeDetails; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.DeleteAtTimeDetails_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.DeleteAtTimeDetails_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteDateTimeArray("ReqTimes", ReqTimes);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ReqTimes = decoder.ReadDateTimeArray("ReqTimes");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            DeleteAtTimeDetails value = encodeable as DeleteAtTimeDetails;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_reqTimes, value.m_reqTimes)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (DeleteAtTimeDetails)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            DeleteAtTimeDetails clone = (DeleteAtTimeDetails)base.MemberwiseClone();

            clone.m_reqTimes = (DateTimeCollection)Utils.Clone(this.m_reqTimes);

            return clone;
        }
        #endregion

        #region Private Fields
        private DateTimeCollection m_reqTimes;
        #endregion
    }
    #endif
    #endregion

    #region DeleteEventDetails Class
    #if (!OPCUA_EXCLUDE_DeleteEventDetails)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class DeleteEventDetails : HistoryUpdateDetails
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public DeleteEventDetails()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_eventIds = new ByteStringCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "EventIds", IsRequired = false, Order = 1)]
        public ByteStringCollection EventIds
        {
            get
            {
                return m_eventIds;
            }

            set
            {
                m_eventIds = value;

                if (value == null)
                {
                    m_eventIds = new ByteStringCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.DeleteEventDetails; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.DeleteEventDetails_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.DeleteEventDetails_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteByteStringArray("EventIds", EventIds);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            EventIds = decoder.ReadByteStringArray("EventIds");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            DeleteEventDetails value = encodeable as DeleteEventDetails;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_eventIds, value.m_eventIds)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (DeleteEventDetails)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            DeleteEventDetails clone = (DeleteEventDetails)base.MemberwiseClone();

            clone.m_eventIds = (ByteStringCollection)Utils.Clone(this.m_eventIds);

            return clone;
        }
        #endregion

        #region Private Fields
        private ByteStringCollection m_eventIds;
        #endregion
    }
    #endif
    #endregion

    #region HistoryUpdateResult Class
    #if (!OPCUA_EXCLUDE_HistoryUpdateResult)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class HistoryUpdateResult : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public HistoryUpdateResult()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_statusCode = StatusCodes.Good;
            m_operationResults = new StatusCodeCollection();
            m_diagnosticInfos = new DiagnosticInfoCollection();
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "StatusCode", IsRequired = false, Order = 1)]
        public StatusCode StatusCode
        {
            get { return m_statusCode;  }
            set { m_statusCode = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "OperationResults", IsRequired = false, Order = 2)]
        public StatusCodeCollection OperationResults
        {
            get
            {
                return m_operationResults;
            }

            set
            {
                m_operationResults = value;

                if (value == null)
                {
                    m_operationResults = new StatusCodeCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "DiagnosticInfos", IsRequired = false, Order = 3)]
        public DiagnosticInfoCollection DiagnosticInfos
        {
            get
            {
                return m_diagnosticInfos;
            }

            set
            {
                m_diagnosticInfos = value;

                if (value == null)
                {
                    m_diagnosticInfos = new DiagnosticInfoCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.HistoryUpdateResult; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.HistoryUpdateResult_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.HistoryUpdateResult_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteStatusCode("StatusCode", StatusCode);
            encoder.WriteStatusCodeArray("OperationResults", OperationResults);
            encoder.WriteDiagnosticInfoArray("DiagnosticInfos", DiagnosticInfos);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            StatusCode = decoder.ReadStatusCode("StatusCode");
            OperationResults = decoder.ReadStatusCodeArray("OperationResults");
            DiagnosticInfos = decoder.ReadDiagnosticInfoArray("DiagnosticInfos");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            HistoryUpdateResult value = encodeable as HistoryUpdateResult;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_statusCode, value.m_statusCode)) return false;
            if (!Utils.IsEqual(m_operationResults, value.m_operationResults)) return false;
            if (!Utils.IsEqual(m_diagnosticInfos, value.m_diagnosticInfos)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (HistoryUpdateResult)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            HistoryUpdateResult clone = (HistoryUpdateResult)base.MemberwiseClone();

            clone.m_statusCode = (StatusCode)Utils.Clone(this.m_statusCode);
            clone.m_operationResults = (StatusCodeCollection)Utils.Clone(this.m_operationResults);
            clone.m_diagnosticInfos = (DiagnosticInfoCollection)Utils.Clone(this.m_diagnosticInfos);

            return clone;
        }
        #endregion

        #region Private Fields
        private StatusCode m_statusCode;
        private StatusCodeCollection m_operationResults;
        private DiagnosticInfoCollection m_diagnosticInfos;
        #endregion
    }

    #region HistoryUpdateResultCollection Class
    /// <summary>
    /// A collection of HistoryUpdateResult objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfHistoryUpdateResult", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "HistoryUpdateResult")]
    #if !NET_STANDARD
    public partial class HistoryUpdateResultCollection : List<HistoryUpdateResult>, ICloneable
    #else
    public partial class HistoryUpdateResultCollection : List<HistoryUpdateResult>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public HistoryUpdateResultCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public HistoryUpdateResultCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public HistoryUpdateResultCollection(IEnumerable<HistoryUpdateResult> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator HistoryUpdateResultCollection(HistoryUpdateResult[] values)
        {
            if (values != null)
            {
                return new HistoryUpdateResultCollection(values);
            }

            return new HistoryUpdateResultCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator HistoryUpdateResult[](HistoryUpdateResultCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (HistoryUpdateResultCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            HistoryUpdateResultCollection clone = new HistoryUpdateResultCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((HistoryUpdateResult)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region HistoryUpdateRequest Class
    #if (!OPCUA_EXCLUDE_HistoryUpdateRequest)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class HistoryUpdateRequest : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public HistoryUpdateRequest()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_requestHeader = new RequestHeader();
            m_historyUpdateDetails = new ExtensionObjectCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RequestHeader", IsRequired = false, Order = 1)]
        public RequestHeader RequestHeader
        {
            get
            {
                return m_requestHeader;
            }

            set
            {
                m_requestHeader = value;

                if (value == null)
                {
                    m_requestHeader = new RequestHeader();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "HistoryUpdateDetails", IsRequired = false, Order = 2)]
        public ExtensionObjectCollection HistoryUpdateDetails
        {
            get
            {
                return m_historyUpdateDetails;
            }

            set
            {
                m_historyUpdateDetails = value;

                if (value == null)
                {
                    m_historyUpdateDetails = new ExtensionObjectCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.HistoryUpdateRequest; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.HistoryUpdateRequest_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.HistoryUpdateRequest_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("RequestHeader", RequestHeader, typeof(RequestHeader));
            encoder.WriteExtensionObjectArray("HistoryUpdateDetails", HistoryUpdateDetails);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            RequestHeader = (RequestHeader)decoder.ReadEncodeable("RequestHeader", typeof(RequestHeader));
            HistoryUpdateDetails = decoder.ReadExtensionObjectArray("HistoryUpdateDetails");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            HistoryUpdateRequest value = encodeable as HistoryUpdateRequest;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_requestHeader, value.m_requestHeader)) return false;
            if (!Utils.IsEqual(m_historyUpdateDetails, value.m_historyUpdateDetails)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (HistoryUpdateRequest)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            HistoryUpdateRequest clone = (HistoryUpdateRequest)base.MemberwiseClone();

            clone.m_requestHeader = (RequestHeader)Utils.Clone(this.m_requestHeader);
            clone.m_historyUpdateDetails = (ExtensionObjectCollection)Utils.Clone(this.m_historyUpdateDetails);

            return clone;
        }
        #endregion

        #region Private Fields
        private RequestHeader m_requestHeader;
        private ExtensionObjectCollection m_historyUpdateDetails;
        #endregion
    }
    #endif
    #endregion

    #region HistoryUpdateResponse Class
    #if (!OPCUA_EXCLUDE_HistoryUpdateResponse)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class HistoryUpdateResponse : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public HistoryUpdateResponse()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_responseHeader = new ResponseHeader();
            m_results = new HistoryUpdateResultCollection();
            m_diagnosticInfos = new DiagnosticInfoCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ResponseHeader", IsRequired = false, Order = 1)]
        public ResponseHeader ResponseHeader
        {
            get
            {
                return m_responseHeader;
            }

            set
            {
                m_responseHeader = value;

                if (value == null)
                {
                    m_responseHeader = new ResponseHeader();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "Results", IsRequired = false, Order = 2)]
        public HistoryUpdateResultCollection Results
        {
            get
            {
                return m_results;
            }

            set
            {
                m_results = value;

                if (value == null)
                {
                    m_results = new HistoryUpdateResultCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "DiagnosticInfos", IsRequired = false, Order = 3)]
        public DiagnosticInfoCollection DiagnosticInfos
        {
            get
            {
                return m_diagnosticInfos;
            }

            set
            {
                m_diagnosticInfos = value;

                if (value == null)
                {
                    m_diagnosticInfos = new DiagnosticInfoCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.HistoryUpdateResponse; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.HistoryUpdateResponse_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.HistoryUpdateResponse_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("ResponseHeader", ResponseHeader, typeof(ResponseHeader));
            encoder.WriteEncodeableArray("Results", Results.ToArray(), typeof(HistoryUpdateResult));
            encoder.WriteDiagnosticInfoArray("DiagnosticInfos", DiagnosticInfos);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ResponseHeader = (ResponseHeader)decoder.ReadEncodeable("ResponseHeader", typeof(ResponseHeader));
            Results = (HistoryUpdateResultCollection)decoder.ReadEncodeableArray("Results", typeof(HistoryUpdateResult));
            DiagnosticInfos = decoder.ReadDiagnosticInfoArray("DiagnosticInfos");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            HistoryUpdateResponse value = encodeable as HistoryUpdateResponse;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_responseHeader, value.m_responseHeader)) return false;
            if (!Utils.IsEqual(m_results, value.m_results)) return false;
            if (!Utils.IsEqual(m_diagnosticInfos, value.m_diagnosticInfos)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (HistoryUpdateResponse)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            HistoryUpdateResponse clone = (HistoryUpdateResponse)base.MemberwiseClone();

            clone.m_responseHeader = (ResponseHeader)Utils.Clone(this.m_responseHeader);
            clone.m_results = (HistoryUpdateResultCollection)Utils.Clone(this.m_results);
            clone.m_diagnosticInfos = (DiagnosticInfoCollection)Utils.Clone(this.m_diagnosticInfos);

            return clone;
        }
        #endregion

        #region Private Fields
        private ResponseHeader m_responseHeader;
        private HistoryUpdateResultCollection m_results;
        private DiagnosticInfoCollection m_diagnosticInfos;
        #endregion
    }
    #endif
    #endregion

    #region CallMethodRequest Class
    #if (!OPCUA_EXCLUDE_CallMethodRequest)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class CallMethodRequest : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public CallMethodRequest()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_objectId = null;
            m_methodId = null;
            m_inputArguments = new VariantCollection();
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "ObjectId", IsRequired = false, Order = 1)]
        public NodeId ObjectId
        {
            get { return m_objectId;  }
            set { m_objectId = value; }
        }

        /// <remarks />
        [DataMember(Name = "MethodId", IsRequired = false, Order = 2)]
        public NodeId MethodId
        {
            get { return m_methodId;  }
            set { m_methodId = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "InputArguments", IsRequired = false, Order = 3)]
        public VariantCollection InputArguments
        {
            get
            {
                return m_inputArguments;
            }

            set
            {
                m_inputArguments = value;

                if (value == null)
                {
                    m_inputArguments = new VariantCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.CallMethodRequest; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.CallMethodRequest_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.CallMethodRequest_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteNodeId("ObjectId", ObjectId);
            encoder.WriteNodeId("MethodId", MethodId);
            encoder.WriteVariantArray("InputArguments", InputArguments);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ObjectId = decoder.ReadNodeId("ObjectId");
            MethodId = decoder.ReadNodeId("MethodId");
            InputArguments = decoder.ReadVariantArray("InputArguments");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            CallMethodRequest value = encodeable as CallMethodRequest;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_objectId, value.m_objectId)) return false;
            if (!Utils.IsEqual(m_methodId, value.m_methodId)) return false;
            if (!Utils.IsEqual(m_inputArguments, value.m_inputArguments)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (CallMethodRequest)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            CallMethodRequest clone = (CallMethodRequest)base.MemberwiseClone();

            clone.m_objectId = (NodeId)Utils.Clone(this.m_objectId);
            clone.m_methodId = (NodeId)Utils.Clone(this.m_methodId);
            clone.m_inputArguments = (VariantCollection)Utils.Clone(this.m_inputArguments);

            return clone;
        }
        #endregion

        #region Private Fields
        private NodeId m_objectId;
        private NodeId m_methodId;
        private VariantCollection m_inputArguments;
        #endregion
    }

    #region CallMethodRequestCollection Class
    /// <summary>
    /// A collection of CallMethodRequest objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfCallMethodRequest", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "CallMethodRequest")]
    #if !NET_STANDARD
    public partial class CallMethodRequestCollection : List<CallMethodRequest>, ICloneable
    #else
    public partial class CallMethodRequestCollection : List<CallMethodRequest>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public CallMethodRequestCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public CallMethodRequestCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public CallMethodRequestCollection(IEnumerable<CallMethodRequest> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator CallMethodRequestCollection(CallMethodRequest[] values)
        {
            if (values != null)
            {
                return new CallMethodRequestCollection(values);
            }

            return new CallMethodRequestCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator CallMethodRequest[](CallMethodRequestCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (CallMethodRequestCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            CallMethodRequestCollection clone = new CallMethodRequestCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((CallMethodRequest)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region CallMethodResult Class
    #if (!OPCUA_EXCLUDE_CallMethodResult)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class CallMethodResult : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public CallMethodResult()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_statusCode = StatusCodes.Good;
            m_inputArgumentResults = new StatusCodeCollection();
            m_inputArgumentDiagnosticInfos = new DiagnosticInfoCollection();
            m_outputArguments = new VariantCollection();
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "StatusCode", IsRequired = false, Order = 1)]
        public StatusCode StatusCode
        {
            get { return m_statusCode;  }
            set { m_statusCode = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "InputArgumentResults", IsRequired = false, Order = 2)]
        public StatusCodeCollection InputArgumentResults
        {
            get
            {
                return m_inputArgumentResults;
            }

            set
            {
                m_inputArgumentResults = value;

                if (value == null)
                {
                    m_inputArgumentResults = new StatusCodeCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "InputArgumentDiagnosticInfos", IsRequired = false, Order = 3)]
        public DiagnosticInfoCollection InputArgumentDiagnosticInfos
        {
            get
            {
                return m_inputArgumentDiagnosticInfos;
            }

            set
            {
                m_inputArgumentDiagnosticInfos = value;

                if (value == null)
                {
                    m_inputArgumentDiagnosticInfos = new DiagnosticInfoCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "OutputArguments", IsRequired = false, Order = 4)]
        public VariantCollection OutputArguments
        {
            get
            {
                return m_outputArguments;
            }

            set
            {
                m_outputArguments = value;

                if (value == null)
                {
                    m_outputArguments = new VariantCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.CallMethodResult; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.CallMethodResult_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.CallMethodResult_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteStatusCode("StatusCode", StatusCode);
            encoder.WriteStatusCodeArray("InputArgumentResults", InputArgumentResults);
            encoder.WriteDiagnosticInfoArray("InputArgumentDiagnosticInfos", InputArgumentDiagnosticInfos);
            encoder.WriteVariantArray("OutputArguments", OutputArguments);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            StatusCode = decoder.ReadStatusCode("StatusCode");
            InputArgumentResults = decoder.ReadStatusCodeArray("InputArgumentResults");
            InputArgumentDiagnosticInfos = decoder.ReadDiagnosticInfoArray("InputArgumentDiagnosticInfos");
            OutputArguments = decoder.ReadVariantArray("OutputArguments");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            CallMethodResult value = encodeable as CallMethodResult;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_statusCode, value.m_statusCode)) return false;
            if (!Utils.IsEqual(m_inputArgumentResults, value.m_inputArgumentResults)) return false;
            if (!Utils.IsEqual(m_inputArgumentDiagnosticInfos, value.m_inputArgumentDiagnosticInfos)) return false;
            if (!Utils.IsEqual(m_outputArguments, value.m_outputArguments)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (CallMethodResult)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            CallMethodResult clone = (CallMethodResult)base.MemberwiseClone();

            clone.m_statusCode = (StatusCode)Utils.Clone(this.m_statusCode);
            clone.m_inputArgumentResults = (StatusCodeCollection)Utils.Clone(this.m_inputArgumentResults);
            clone.m_inputArgumentDiagnosticInfos = (DiagnosticInfoCollection)Utils.Clone(this.m_inputArgumentDiagnosticInfos);
            clone.m_outputArguments = (VariantCollection)Utils.Clone(this.m_outputArguments);

            return clone;
        }
        #endregion

        #region Private Fields
        private StatusCode m_statusCode;
        private StatusCodeCollection m_inputArgumentResults;
        private DiagnosticInfoCollection m_inputArgumentDiagnosticInfos;
        private VariantCollection m_outputArguments;
        #endregion
    }

    #region CallMethodResultCollection Class
    /// <summary>
    /// A collection of CallMethodResult objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfCallMethodResult", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "CallMethodResult")]
    #if !NET_STANDARD
    public partial class CallMethodResultCollection : List<CallMethodResult>, ICloneable
    #else
    public partial class CallMethodResultCollection : List<CallMethodResult>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public CallMethodResultCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public CallMethodResultCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public CallMethodResultCollection(IEnumerable<CallMethodResult> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator CallMethodResultCollection(CallMethodResult[] values)
        {
            if (values != null)
            {
                return new CallMethodResultCollection(values);
            }

            return new CallMethodResultCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator CallMethodResult[](CallMethodResultCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (CallMethodResultCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            CallMethodResultCollection clone = new CallMethodResultCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((CallMethodResult)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region CallRequest Class
    #if (!OPCUA_EXCLUDE_CallRequest)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class CallRequest : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public CallRequest()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_requestHeader = new RequestHeader();
            m_methodsToCall = new CallMethodRequestCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RequestHeader", IsRequired = false, Order = 1)]
        public RequestHeader RequestHeader
        {
            get
            {
                return m_requestHeader;
            }

            set
            {
                m_requestHeader = value;

                if (value == null)
                {
                    m_requestHeader = new RequestHeader();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "MethodsToCall", IsRequired = false, Order = 2)]
        public CallMethodRequestCollection MethodsToCall
        {
            get
            {
                return m_methodsToCall;
            }

            set
            {
                m_methodsToCall = value;

                if (value == null)
                {
                    m_methodsToCall = new CallMethodRequestCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.CallRequest; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.CallRequest_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.CallRequest_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("RequestHeader", RequestHeader, typeof(RequestHeader));
            encoder.WriteEncodeableArray("MethodsToCall", MethodsToCall.ToArray(), typeof(CallMethodRequest));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            RequestHeader = (RequestHeader)decoder.ReadEncodeable("RequestHeader", typeof(RequestHeader));
            MethodsToCall = (CallMethodRequestCollection)decoder.ReadEncodeableArray("MethodsToCall", typeof(CallMethodRequest));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            CallRequest value = encodeable as CallRequest;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_requestHeader, value.m_requestHeader)) return false;
            if (!Utils.IsEqual(m_methodsToCall, value.m_methodsToCall)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (CallRequest)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            CallRequest clone = (CallRequest)base.MemberwiseClone();

            clone.m_requestHeader = (RequestHeader)Utils.Clone(this.m_requestHeader);
            clone.m_methodsToCall = (CallMethodRequestCollection)Utils.Clone(this.m_methodsToCall);

            return clone;
        }
        #endregion

        #region Private Fields
        private RequestHeader m_requestHeader;
        private CallMethodRequestCollection m_methodsToCall;
        #endregion
    }
    #endif
    #endregion

    #region CallResponse Class
    #if (!OPCUA_EXCLUDE_CallResponse)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class CallResponse : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public CallResponse()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_responseHeader = new ResponseHeader();
            m_results = new CallMethodResultCollection();
            m_diagnosticInfos = new DiagnosticInfoCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ResponseHeader", IsRequired = false, Order = 1)]
        public ResponseHeader ResponseHeader
        {
            get
            {
                return m_responseHeader;
            }

            set
            {
                m_responseHeader = value;

                if (value == null)
                {
                    m_responseHeader = new ResponseHeader();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "Results", IsRequired = false, Order = 2)]
        public CallMethodResultCollection Results
        {
            get
            {
                return m_results;
            }

            set
            {
                m_results = value;

                if (value == null)
                {
                    m_results = new CallMethodResultCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "DiagnosticInfos", IsRequired = false, Order = 3)]
        public DiagnosticInfoCollection DiagnosticInfos
        {
            get
            {
                return m_diagnosticInfos;
            }

            set
            {
                m_diagnosticInfos = value;

                if (value == null)
                {
                    m_diagnosticInfos = new DiagnosticInfoCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.CallResponse; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.CallResponse_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.CallResponse_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("ResponseHeader", ResponseHeader, typeof(ResponseHeader));
            encoder.WriteEncodeableArray("Results", Results.ToArray(), typeof(CallMethodResult));
            encoder.WriteDiagnosticInfoArray("DiagnosticInfos", DiagnosticInfos);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ResponseHeader = (ResponseHeader)decoder.ReadEncodeable("ResponseHeader", typeof(ResponseHeader));
            Results = (CallMethodResultCollection)decoder.ReadEncodeableArray("Results", typeof(CallMethodResult));
            DiagnosticInfos = decoder.ReadDiagnosticInfoArray("DiagnosticInfos");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            CallResponse value = encodeable as CallResponse;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_responseHeader, value.m_responseHeader)) return false;
            if (!Utils.IsEqual(m_results, value.m_results)) return false;
            if (!Utils.IsEqual(m_diagnosticInfos, value.m_diagnosticInfos)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (CallResponse)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            CallResponse clone = (CallResponse)base.MemberwiseClone();

            clone.m_responseHeader = (ResponseHeader)Utils.Clone(this.m_responseHeader);
            clone.m_results = (CallMethodResultCollection)Utils.Clone(this.m_results);
            clone.m_diagnosticInfos = (DiagnosticInfoCollection)Utils.Clone(this.m_diagnosticInfos);

            return clone;
        }
        #endregion

        #region Private Fields
        private ResponseHeader m_responseHeader;
        private CallMethodResultCollection m_results;
        private DiagnosticInfoCollection m_diagnosticInfos;
        #endregion
    }
    #endif
    #endregion

    #region MonitoringMode Enumeration
    #if (!OPCUA_EXCLUDE_MonitoringMode)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public enum MonitoringMode
    {
        /// <remarks />
        [EnumMember(Value = "Disabled_0")]
        Disabled = 0,

        /// <remarks />
        [EnumMember(Value = "Sampling_1")]
        Sampling = 1,

        /// <remarks />
        [EnumMember(Value = "Reporting_2")]
        Reporting = 2,
    }
    #endif
    #endregion

    #region DataChangeTrigger Enumeration
    #if (!OPCUA_EXCLUDE_DataChangeTrigger)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public enum DataChangeTrigger
    {
        /// <remarks />
        [EnumMember(Value = "Status_0")]
        Status = 0,

        /// <remarks />
        [EnumMember(Value = "StatusValue_1")]
        StatusValue = 1,

        /// <remarks />
        [EnumMember(Value = "StatusValueTimestamp_2")]
        StatusValueTimestamp = 2,
    }
    #endif
    #endregion

    #region DeadbandType Enumeration
    #if (!OPCUA_EXCLUDE_DeadbandType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public enum DeadbandType
    {
        /// <remarks />
        [EnumMember(Value = "None_0")]
        None = 0,

        /// <remarks />
        [EnumMember(Value = "Absolute_1")]
        Absolute = 1,

        /// <remarks />
        [EnumMember(Value = "Percent_2")]
        Percent = 2,
    }
    #endif
    #endregion

    #region MonitoringFilter Class
    #if (!OPCUA_EXCLUDE_MonitoringFilter)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class MonitoringFilter : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public MonitoringFilter()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
        }
        #endregion

        #region Public Properties
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.MonitoringFilter; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.MonitoringFilter_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.MonitoringFilter_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            MonitoringFilter value = encodeable as MonitoringFilter;

            if (value == null)
            {
                return false;
            }


            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (MonitoringFilter)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            MonitoringFilter clone = (MonitoringFilter)base.MemberwiseClone();


            return clone;
        }
        #endregion

        #region Private Fields
        #endregion
    }
    #endif
    #endregion

    #region DataChangeFilter Class
    #if (!OPCUA_EXCLUDE_DataChangeFilter)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class DataChangeFilter : MonitoringFilter
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public DataChangeFilter()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_trigger = DataChangeTrigger.Status;
            m_deadbandType = (uint)0;
            m_deadbandValue = (double)0;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "Trigger", IsRequired = false, Order = 1)]
        public DataChangeTrigger Trigger
        {
            get { return m_trigger;  }
            set { m_trigger = value; }
        }

        /// <remarks />
        [DataMember(Name = "DeadbandType", IsRequired = false, Order = 2)]
        public uint DeadbandType
        {
            get { return m_deadbandType;  }
            set { m_deadbandType = value; }
        }

        /// <remarks />
        [DataMember(Name = "DeadbandValue", IsRequired = false, Order = 3)]
        public double DeadbandValue
        {
            get { return m_deadbandValue;  }
            set { m_deadbandValue = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.DataChangeFilter; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.DataChangeFilter_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.DataChangeFilter_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEnumerated("Trigger", Trigger);
            encoder.WriteUInt32("DeadbandType", DeadbandType);
            encoder.WriteDouble("DeadbandValue", DeadbandValue);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            Trigger = (DataChangeTrigger)decoder.ReadEnumerated("Trigger", typeof(DataChangeTrigger));
            DeadbandType = decoder.ReadUInt32("DeadbandType");
            DeadbandValue = decoder.ReadDouble("DeadbandValue");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            DataChangeFilter value = encodeable as DataChangeFilter;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_trigger, value.m_trigger)) return false;
            if (!Utils.IsEqual(m_deadbandType, value.m_deadbandType)) return false;
            if (!Utils.IsEqual(m_deadbandValue, value.m_deadbandValue)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (DataChangeFilter)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            DataChangeFilter clone = (DataChangeFilter)base.MemberwiseClone();

            clone.m_trigger = (DataChangeTrigger)Utils.Clone(this.m_trigger);
            clone.m_deadbandType = (uint)Utils.Clone(this.m_deadbandType);
            clone.m_deadbandValue = (double)Utils.Clone(this.m_deadbandValue);

            return clone;
        }
        #endregion

        #region Private Fields
        private DataChangeTrigger m_trigger;
        private uint m_deadbandType;
        private double m_deadbandValue;
        #endregion
    }
    #endif
    #endregion

    #region EventFilter Class
    #if (!OPCUA_EXCLUDE_EventFilter)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class EventFilter : MonitoringFilter
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public EventFilter()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_selectClauses = new SimpleAttributeOperandCollection();
            m_whereClause = new ContentFilter();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "SelectClauses", IsRequired = false, Order = 1)]
        public SimpleAttributeOperandCollection SelectClauses
        {
            get
            {
                return m_selectClauses;
            }

            set
            {
                m_selectClauses = value;

                if (value == null)
                {
                    m_selectClauses = new SimpleAttributeOperandCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "WhereClause", IsRequired = false, Order = 2)]
        public ContentFilter WhereClause
        {
            get
            {
                return m_whereClause;
            }

            set
            {
                m_whereClause = value;

                if (value == null)
                {
                    m_whereClause = new ContentFilter();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.EventFilter; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.EventFilter_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.EventFilter_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeableArray("SelectClauses", SelectClauses.ToArray(), typeof(SimpleAttributeOperand));
            encoder.WriteEncodeable("WhereClause", WhereClause, typeof(ContentFilter));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            SelectClauses = (SimpleAttributeOperandCollection)decoder.ReadEncodeableArray("SelectClauses", typeof(SimpleAttributeOperand));
            WhereClause = (ContentFilter)decoder.ReadEncodeable("WhereClause", typeof(ContentFilter));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            EventFilter value = encodeable as EventFilter;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_selectClauses, value.m_selectClauses)) return false;
            if (!Utils.IsEqual(m_whereClause, value.m_whereClause)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (EventFilter)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            EventFilter clone = (EventFilter)base.MemberwiseClone();

            clone.m_selectClauses = (SimpleAttributeOperandCollection)Utils.Clone(this.m_selectClauses);
            clone.m_whereClause = (ContentFilter)Utils.Clone(this.m_whereClause);

            return clone;
        }
        #endregion

        #region Private Fields
        private SimpleAttributeOperandCollection m_selectClauses;
        private ContentFilter m_whereClause;
        #endregion
    }
    #endif
    #endregion

    #region AggregateConfiguration Class
    #if (!OPCUA_EXCLUDE_AggregateConfiguration)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class AggregateConfiguration : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public AggregateConfiguration()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_useServerCapabilitiesDefaults = true;
            m_treatUncertainAsBad = true;
            m_percentDataBad = (byte)0;
            m_percentDataGood = (byte)0;
            m_useSlopedExtrapolation = true;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "UseServerCapabilitiesDefaults", IsRequired = false, Order = 1)]
        public bool UseServerCapabilitiesDefaults
        {
            get { return m_useServerCapabilitiesDefaults;  }
            set { m_useServerCapabilitiesDefaults = value; }
        }

        /// <remarks />
        [DataMember(Name = "TreatUncertainAsBad", IsRequired = false, Order = 2)]
        public bool TreatUncertainAsBad
        {
            get { return m_treatUncertainAsBad;  }
            set { m_treatUncertainAsBad = value; }
        }

        /// <remarks />
        [DataMember(Name = "PercentDataBad", IsRequired = false, Order = 3)]
        public byte PercentDataBad
        {
            get { return m_percentDataBad;  }
            set { m_percentDataBad = value; }
        }

        /// <remarks />
        [DataMember(Name = "PercentDataGood", IsRequired = false, Order = 4)]
        public byte PercentDataGood
        {
            get { return m_percentDataGood;  }
            set { m_percentDataGood = value; }
        }

        /// <remarks />
        [DataMember(Name = "UseSlopedExtrapolation", IsRequired = false, Order = 5)]
        public bool UseSlopedExtrapolation
        {
            get { return m_useSlopedExtrapolation;  }
            set { m_useSlopedExtrapolation = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.AggregateConfiguration; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.AggregateConfiguration_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.AggregateConfiguration_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteBoolean("UseServerCapabilitiesDefaults", UseServerCapabilitiesDefaults);
            encoder.WriteBoolean("TreatUncertainAsBad", TreatUncertainAsBad);
            encoder.WriteByte("PercentDataBad", PercentDataBad);
            encoder.WriteByte("PercentDataGood", PercentDataGood);
            encoder.WriteBoolean("UseSlopedExtrapolation", UseSlopedExtrapolation);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            UseServerCapabilitiesDefaults = decoder.ReadBoolean("UseServerCapabilitiesDefaults");
            TreatUncertainAsBad = decoder.ReadBoolean("TreatUncertainAsBad");
            PercentDataBad = decoder.ReadByte("PercentDataBad");
            PercentDataGood = decoder.ReadByte("PercentDataGood");
            UseSlopedExtrapolation = decoder.ReadBoolean("UseSlopedExtrapolation");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            AggregateConfiguration value = encodeable as AggregateConfiguration;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_useServerCapabilitiesDefaults, value.m_useServerCapabilitiesDefaults)) return false;
            if (!Utils.IsEqual(m_treatUncertainAsBad, value.m_treatUncertainAsBad)) return false;
            if (!Utils.IsEqual(m_percentDataBad, value.m_percentDataBad)) return false;
            if (!Utils.IsEqual(m_percentDataGood, value.m_percentDataGood)) return false;
            if (!Utils.IsEqual(m_useSlopedExtrapolation, value.m_useSlopedExtrapolation)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (AggregateConfiguration)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            AggregateConfiguration clone = (AggregateConfiguration)base.MemberwiseClone();

            clone.m_useServerCapabilitiesDefaults = (bool)Utils.Clone(this.m_useServerCapabilitiesDefaults);
            clone.m_treatUncertainAsBad = (bool)Utils.Clone(this.m_treatUncertainAsBad);
            clone.m_percentDataBad = (byte)Utils.Clone(this.m_percentDataBad);
            clone.m_percentDataGood = (byte)Utils.Clone(this.m_percentDataGood);
            clone.m_useSlopedExtrapolation = (bool)Utils.Clone(this.m_useSlopedExtrapolation);

            return clone;
        }
        #endregion

        #region Private Fields
        private bool m_useServerCapabilitiesDefaults;
        private bool m_treatUncertainAsBad;
        private byte m_percentDataBad;
        private byte m_percentDataGood;
        private bool m_useSlopedExtrapolation;
        #endregion
    }
    #endif
    #endregion

    #region AggregateFilter Class
    #if (!OPCUA_EXCLUDE_AggregateFilter)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class AggregateFilter : MonitoringFilter
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public AggregateFilter()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_startTime = DateTime.MinValue;
            m_aggregateType = null;
            m_processingInterval = (double)0;
            m_aggregateConfiguration = new AggregateConfiguration();
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "StartTime", IsRequired = false, Order = 1)]
        public DateTime StartTime
        {
            get { return m_startTime;  }
            set { m_startTime = value; }
        }

        /// <remarks />
        [DataMember(Name = "AggregateType", IsRequired = false, Order = 2)]
        public NodeId AggregateType
        {
            get { return m_aggregateType;  }
            set { m_aggregateType = value; }
        }

        /// <remarks />
        [DataMember(Name = "ProcessingInterval", IsRequired = false, Order = 3)]
        public double ProcessingInterval
        {
            get { return m_processingInterval;  }
            set { m_processingInterval = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "AggregateConfiguration", IsRequired = false, Order = 4)]
        public AggregateConfiguration AggregateConfiguration
        {
            get
            {
                return m_aggregateConfiguration;
            }

            set
            {
                m_aggregateConfiguration = value;

                if (value == null)
                {
                    m_aggregateConfiguration = new AggregateConfiguration();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.AggregateFilter; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.AggregateFilter_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.AggregateFilter_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteDateTime("StartTime", StartTime);
            encoder.WriteNodeId("AggregateType", AggregateType);
            encoder.WriteDouble("ProcessingInterval", ProcessingInterval);
            encoder.WriteEncodeable("AggregateConfiguration", AggregateConfiguration, typeof(AggregateConfiguration));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            StartTime = decoder.ReadDateTime("StartTime");
            AggregateType = decoder.ReadNodeId("AggregateType");
            ProcessingInterval = decoder.ReadDouble("ProcessingInterval");
            AggregateConfiguration = (AggregateConfiguration)decoder.ReadEncodeable("AggregateConfiguration", typeof(AggregateConfiguration));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            AggregateFilter value = encodeable as AggregateFilter;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_startTime, value.m_startTime)) return false;
            if (!Utils.IsEqual(m_aggregateType, value.m_aggregateType)) return false;
            if (!Utils.IsEqual(m_processingInterval, value.m_processingInterval)) return false;
            if (!Utils.IsEqual(m_aggregateConfiguration, value.m_aggregateConfiguration)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (AggregateFilter)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            AggregateFilter clone = (AggregateFilter)base.MemberwiseClone();

            clone.m_startTime = (DateTime)Utils.Clone(this.m_startTime);
            clone.m_aggregateType = (NodeId)Utils.Clone(this.m_aggregateType);
            clone.m_processingInterval = (double)Utils.Clone(this.m_processingInterval);
            clone.m_aggregateConfiguration = (AggregateConfiguration)Utils.Clone(this.m_aggregateConfiguration);

            return clone;
        }
        #endregion

        #region Private Fields
        private DateTime m_startTime;
        private NodeId m_aggregateType;
        private double m_processingInterval;
        private AggregateConfiguration m_aggregateConfiguration;
        #endregion
    }
    #endif
    #endregion

    #region MonitoringFilterResult Class
    #if (!OPCUA_EXCLUDE_MonitoringFilterResult)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class MonitoringFilterResult : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public MonitoringFilterResult()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
        }
        #endregion

        #region Public Properties
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.MonitoringFilterResult; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.MonitoringFilterResult_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.MonitoringFilterResult_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            MonitoringFilterResult value = encodeable as MonitoringFilterResult;

            if (value == null)
            {
                return false;
            }


            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (MonitoringFilterResult)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            MonitoringFilterResult clone = (MonitoringFilterResult)base.MemberwiseClone();


            return clone;
        }
        #endregion

        #region Private Fields
        #endregion
    }
    #endif
    #endregion

    #region EventFilterResult Class
    #if (!OPCUA_EXCLUDE_EventFilterResult)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class EventFilterResult : MonitoringFilterResult
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public EventFilterResult()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_selectClauseResults = new StatusCodeCollection();
            m_selectClauseDiagnosticInfos = new DiagnosticInfoCollection();
            m_whereClauseResult = new ContentFilterResult();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "SelectClauseResults", IsRequired = false, Order = 1)]
        public StatusCodeCollection SelectClauseResults
        {
            get
            {
                return m_selectClauseResults;
            }

            set
            {
                m_selectClauseResults = value;

                if (value == null)
                {
                    m_selectClauseResults = new StatusCodeCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "SelectClauseDiagnosticInfos", IsRequired = false, Order = 2)]
        public DiagnosticInfoCollection SelectClauseDiagnosticInfos
        {
            get
            {
                return m_selectClauseDiagnosticInfos;
            }

            set
            {
                m_selectClauseDiagnosticInfos = value;

                if (value == null)
                {
                    m_selectClauseDiagnosticInfos = new DiagnosticInfoCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "WhereClauseResult", IsRequired = false, Order = 3)]
        public ContentFilterResult WhereClauseResult
        {
            get
            {
                return m_whereClauseResult;
            }

            set
            {
                m_whereClauseResult = value;

                if (value == null)
                {
                    m_whereClauseResult = new ContentFilterResult();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.EventFilterResult; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.EventFilterResult_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.EventFilterResult_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteStatusCodeArray("SelectClauseResults", SelectClauseResults);
            encoder.WriteDiagnosticInfoArray("SelectClauseDiagnosticInfos", SelectClauseDiagnosticInfos);
            encoder.WriteEncodeable("WhereClauseResult", WhereClauseResult, typeof(ContentFilterResult));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            SelectClauseResults = decoder.ReadStatusCodeArray("SelectClauseResults");
            SelectClauseDiagnosticInfos = decoder.ReadDiagnosticInfoArray("SelectClauseDiagnosticInfos");
            WhereClauseResult = (ContentFilterResult)decoder.ReadEncodeable("WhereClauseResult", typeof(ContentFilterResult));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            EventFilterResult value = encodeable as EventFilterResult;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_selectClauseResults, value.m_selectClauseResults)) return false;
            if (!Utils.IsEqual(m_selectClauseDiagnosticInfos, value.m_selectClauseDiagnosticInfos)) return false;
            if (!Utils.IsEqual(m_whereClauseResult, value.m_whereClauseResult)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (EventFilterResult)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            EventFilterResult clone = (EventFilterResult)base.MemberwiseClone();

            clone.m_selectClauseResults = (StatusCodeCollection)Utils.Clone(this.m_selectClauseResults);
            clone.m_selectClauseDiagnosticInfos = (DiagnosticInfoCollection)Utils.Clone(this.m_selectClauseDiagnosticInfos);
            clone.m_whereClauseResult = (ContentFilterResult)Utils.Clone(this.m_whereClauseResult);

            return clone;
        }
        #endregion

        #region Private Fields
        private StatusCodeCollection m_selectClauseResults;
        private DiagnosticInfoCollection m_selectClauseDiagnosticInfos;
        private ContentFilterResult m_whereClauseResult;
        #endregion
    }
    #endif
    #endregion

    #region AggregateFilterResult Class
    #if (!OPCUA_EXCLUDE_AggregateFilterResult)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class AggregateFilterResult : MonitoringFilterResult
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public AggregateFilterResult()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_revisedStartTime = DateTime.MinValue;
            m_revisedProcessingInterval = (double)0;
            m_revisedAggregateConfiguration = new AggregateConfiguration();
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "RevisedStartTime", IsRequired = false, Order = 1)]
        public DateTime RevisedStartTime
        {
            get { return m_revisedStartTime;  }
            set { m_revisedStartTime = value; }
        }

        /// <remarks />
        [DataMember(Name = "RevisedProcessingInterval", IsRequired = false, Order = 2)]
        public double RevisedProcessingInterval
        {
            get { return m_revisedProcessingInterval;  }
            set { m_revisedProcessingInterval = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RevisedAggregateConfiguration", IsRequired = false, Order = 3)]
        public AggregateConfiguration RevisedAggregateConfiguration
        {
            get
            {
                return m_revisedAggregateConfiguration;
            }

            set
            {
                m_revisedAggregateConfiguration = value;

                if (value == null)
                {
                    m_revisedAggregateConfiguration = new AggregateConfiguration();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.AggregateFilterResult; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.AggregateFilterResult_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.AggregateFilterResult_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteDateTime("RevisedStartTime", RevisedStartTime);
            encoder.WriteDouble("RevisedProcessingInterval", RevisedProcessingInterval);
            encoder.WriteEncodeable("RevisedAggregateConfiguration", RevisedAggregateConfiguration, typeof(AggregateConfiguration));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            RevisedStartTime = decoder.ReadDateTime("RevisedStartTime");
            RevisedProcessingInterval = decoder.ReadDouble("RevisedProcessingInterval");
            RevisedAggregateConfiguration = (AggregateConfiguration)decoder.ReadEncodeable("RevisedAggregateConfiguration", typeof(AggregateConfiguration));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            AggregateFilterResult value = encodeable as AggregateFilterResult;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_revisedStartTime, value.m_revisedStartTime)) return false;
            if (!Utils.IsEqual(m_revisedProcessingInterval, value.m_revisedProcessingInterval)) return false;
            if (!Utils.IsEqual(m_revisedAggregateConfiguration, value.m_revisedAggregateConfiguration)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (AggregateFilterResult)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            AggregateFilterResult clone = (AggregateFilterResult)base.MemberwiseClone();

            clone.m_revisedStartTime = (DateTime)Utils.Clone(this.m_revisedStartTime);
            clone.m_revisedProcessingInterval = (double)Utils.Clone(this.m_revisedProcessingInterval);
            clone.m_revisedAggregateConfiguration = (AggregateConfiguration)Utils.Clone(this.m_revisedAggregateConfiguration);

            return clone;
        }
        #endregion

        #region Private Fields
        private DateTime m_revisedStartTime;
        private double m_revisedProcessingInterval;
        private AggregateConfiguration m_revisedAggregateConfiguration;
        #endregion
    }
    #endif
    #endregion

    #region MonitoringParameters Class
    #if (!OPCUA_EXCLUDE_MonitoringParameters)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class MonitoringParameters : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public MonitoringParameters()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_clientHandle = (uint)0;
            m_samplingInterval = (double)0;
            m_filter = null;
            m_queueSize = (uint)0;
            m_discardOldest = true;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "ClientHandle", IsRequired = false, Order = 1)]
        public uint ClientHandle
        {
            get { return m_clientHandle;  }
            set { m_clientHandle = value; }
        }

        /// <remarks />
        [DataMember(Name = "SamplingInterval", IsRequired = false, Order = 2)]
        public double SamplingInterval
        {
            get { return m_samplingInterval;  }
            set { m_samplingInterval = value; }
        }

        /// <remarks />
        [DataMember(Name = "Filter", IsRequired = false, Order = 3)]
        public ExtensionObject Filter
        {
            get { return m_filter;  }
            set { m_filter = value; }
        }

        /// <remarks />
        [DataMember(Name = "QueueSize", IsRequired = false, Order = 4)]
        public uint QueueSize
        {
            get { return m_queueSize;  }
            set { m_queueSize = value; }
        }

        /// <remarks />
        [DataMember(Name = "DiscardOldest", IsRequired = false, Order = 5)]
        public bool DiscardOldest
        {
            get { return m_discardOldest;  }
            set { m_discardOldest = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.MonitoringParameters; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.MonitoringParameters_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.MonitoringParameters_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteUInt32("ClientHandle", ClientHandle);
            encoder.WriteDouble("SamplingInterval", SamplingInterval);
            encoder.WriteExtensionObject("Filter", Filter);
            encoder.WriteUInt32("QueueSize", QueueSize);
            encoder.WriteBoolean("DiscardOldest", DiscardOldest);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ClientHandle = decoder.ReadUInt32("ClientHandle");
            SamplingInterval = decoder.ReadDouble("SamplingInterval");
            Filter = decoder.ReadExtensionObject("Filter");
            QueueSize = decoder.ReadUInt32("QueueSize");
            DiscardOldest = decoder.ReadBoolean("DiscardOldest");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            MonitoringParameters value = encodeable as MonitoringParameters;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_clientHandle, value.m_clientHandle)) return false;
            if (!Utils.IsEqual(m_samplingInterval, value.m_samplingInterval)) return false;
            if (!Utils.IsEqual(m_filter, value.m_filter)) return false;
            if (!Utils.IsEqual(m_queueSize, value.m_queueSize)) return false;
            if (!Utils.IsEqual(m_discardOldest, value.m_discardOldest)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (MonitoringParameters)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            MonitoringParameters clone = (MonitoringParameters)base.MemberwiseClone();

            clone.m_clientHandle = (uint)Utils.Clone(this.m_clientHandle);
            clone.m_samplingInterval = (double)Utils.Clone(this.m_samplingInterval);
            clone.m_filter = (ExtensionObject)Utils.Clone(this.m_filter);
            clone.m_queueSize = (uint)Utils.Clone(this.m_queueSize);
            clone.m_discardOldest = (bool)Utils.Clone(this.m_discardOldest);

            return clone;
        }
        #endregion

        #region Private Fields
        private uint m_clientHandle;
        private double m_samplingInterval;
        private ExtensionObject m_filter;
        private uint m_queueSize;
        private bool m_discardOldest;
        #endregion
    }
    #endif
    #endregion

    #region MonitoredItemCreateRequest Class
    #if (!OPCUA_EXCLUDE_MonitoredItemCreateRequest)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class MonitoredItemCreateRequest : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public MonitoredItemCreateRequest()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_itemToMonitor = new ReadValueId();
            m_monitoringMode = MonitoringMode.Disabled;
            m_requestedParameters = new MonitoringParameters();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ItemToMonitor", IsRequired = false, Order = 1)]
        public ReadValueId ItemToMonitor
        {
            get
            {
                return m_itemToMonitor;
            }

            set
            {
                m_itemToMonitor = value;

                if (value == null)
                {
                    m_itemToMonitor = new ReadValueId();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "MonitoringMode", IsRequired = false, Order = 2)]
        public MonitoringMode MonitoringMode
        {
            get { return m_monitoringMode;  }
            set { m_monitoringMode = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RequestedParameters", IsRequired = false, Order = 3)]
        public MonitoringParameters RequestedParameters
        {
            get
            {
                return m_requestedParameters;
            }

            set
            {
                m_requestedParameters = value;

                if (value == null)
                {
                    m_requestedParameters = new MonitoringParameters();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.MonitoredItemCreateRequest; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.MonitoredItemCreateRequest_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.MonitoredItemCreateRequest_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("ItemToMonitor", ItemToMonitor, typeof(ReadValueId));
            encoder.WriteEnumerated("MonitoringMode", MonitoringMode);
            encoder.WriteEncodeable("RequestedParameters", RequestedParameters, typeof(MonitoringParameters));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ItemToMonitor = (ReadValueId)decoder.ReadEncodeable("ItemToMonitor", typeof(ReadValueId));
            MonitoringMode = (MonitoringMode)decoder.ReadEnumerated("MonitoringMode", typeof(MonitoringMode));
            RequestedParameters = (MonitoringParameters)decoder.ReadEncodeable("RequestedParameters", typeof(MonitoringParameters));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            MonitoredItemCreateRequest value = encodeable as MonitoredItemCreateRequest;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_itemToMonitor, value.m_itemToMonitor)) return false;
            if (!Utils.IsEqual(m_monitoringMode, value.m_monitoringMode)) return false;
            if (!Utils.IsEqual(m_requestedParameters, value.m_requestedParameters)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (MonitoredItemCreateRequest)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            MonitoredItemCreateRequest clone = (MonitoredItemCreateRequest)base.MemberwiseClone();

            clone.m_itemToMonitor = (ReadValueId)Utils.Clone(this.m_itemToMonitor);
            clone.m_monitoringMode = (MonitoringMode)Utils.Clone(this.m_monitoringMode);
            clone.m_requestedParameters = (MonitoringParameters)Utils.Clone(this.m_requestedParameters);

            return clone;
        }
        #endregion

        #region Private Fields
        private ReadValueId m_itemToMonitor;
        private MonitoringMode m_monitoringMode;
        private MonitoringParameters m_requestedParameters;
        #endregion
    }

    #region MonitoredItemCreateRequestCollection Class
    /// <summary>
    /// A collection of MonitoredItemCreateRequest objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfMonitoredItemCreateRequest", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "MonitoredItemCreateRequest")]
    #if !NET_STANDARD
    public partial class MonitoredItemCreateRequestCollection : List<MonitoredItemCreateRequest>, ICloneable
    #else
    public partial class MonitoredItemCreateRequestCollection : List<MonitoredItemCreateRequest>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public MonitoredItemCreateRequestCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public MonitoredItemCreateRequestCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public MonitoredItemCreateRequestCollection(IEnumerable<MonitoredItemCreateRequest> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator MonitoredItemCreateRequestCollection(MonitoredItemCreateRequest[] values)
        {
            if (values != null)
            {
                return new MonitoredItemCreateRequestCollection(values);
            }

            return new MonitoredItemCreateRequestCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator MonitoredItemCreateRequest[](MonitoredItemCreateRequestCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (MonitoredItemCreateRequestCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            MonitoredItemCreateRequestCollection clone = new MonitoredItemCreateRequestCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((MonitoredItemCreateRequest)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region MonitoredItemCreateResult Class
    #if (!OPCUA_EXCLUDE_MonitoredItemCreateResult)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class MonitoredItemCreateResult : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public MonitoredItemCreateResult()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_statusCode = StatusCodes.Good;
            m_monitoredItemId = (uint)0;
            m_revisedSamplingInterval = (double)0;
            m_revisedQueueSize = (uint)0;
            m_filterResult = null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "StatusCode", IsRequired = false, Order = 1)]
        public StatusCode StatusCode
        {
            get { return m_statusCode;  }
            set { m_statusCode = value; }
        }

        /// <remarks />
        [DataMember(Name = "MonitoredItemId", IsRequired = false, Order = 2)]
        public uint MonitoredItemId
        {
            get { return m_monitoredItemId;  }
            set { m_monitoredItemId = value; }
        }

        /// <remarks />
        [DataMember(Name = "RevisedSamplingInterval", IsRequired = false, Order = 3)]
        public double RevisedSamplingInterval
        {
            get { return m_revisedSamplingInterval;  }
            set { m_revisedSamplingInterval = value; }
        }

        /// <remarks />
        [DataMember(Name = "RevisedQueueSize", IsRequired = false, Order = 4)]
        public uint RevisedQueueSize
        {
            get { return m_revisedQueueSize;  }
            set { m_revisedQueueSize = value; }
        }

        /// <remarks />
        [DataMember(Name = "FilterResult", IsRequired = false, Order = 5)]
        public ExtensionObject FilterResult
        {
            get { return m_filterResult;  }
            set { m_filterResult = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.MonitoredItemCreateResult; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.MonitoredItemCreateResult_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.MonitoredItemCreateResult_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteStatusCode("StatusCode", StatusCode);
            encoder.WriteUInt32("MonitoredItemId", MonitoredItemId);
            encoder.WriteDouble("RevisedSamplingInterval", RevisedSamplingInterval);
            encoder.WriteUInt32("RevisedQueueSize", RevisedQueueSize);
            encoder.WriteExtensionObject("FilterResult", FilterResult);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            StatusCode = decoder.ReadStatusCode("StatusCode");
            MonitoredItemId = decoder.ReadUInt32("MonitoredItemId");
            RevisedSamplingInterval = decoder.ReadDouble("RevisedSamplingInterval");
            RevisedQueueSize = decoder.ReadUInt32("RevisedQueueSize");
            FilterResult = decoder.ReadExtensionObject("FilterResult");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            MonitoredItemCreateResult value = encodeable as MonitoredItemCreateResult;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_statusCode, value.m_statusCode)) return false;
            if (!Utils.IsEqual(m_monitoredItemId, value.m_monitoredItemId)) return false;
            if (!Utils.IsEqual(m_revisedSamplingInterval, value.m_revisedSamplingInterval)) return false;
            if (!Utils.IsEqual(m_revisedQueueSize, value.m_revisedQueueSize)) return false;
            if (!Utils.IsEqual(m_filterResult, value.m_filterResult)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (MonitoredItemCreateResult)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            MonitoredItemCreateResult clone = (MonitoredItemCreateResult)base.MemberwiseClone();

            clone.m_statusCode = (StatusCode)Utils.Clone(this.m_statusCode);
            clone.m_monitoredItemId = (uint)Utils.Clone(this.m_monitoredItemId);
            clone.m_revisedSamplingInterval = (double)Utils.Clone(this.m_revisedSamplingInterval);
            clone.m_revisedQueueSize = (uint)Utils.Clone(this.m_revisedQueueSize);
            clone.m_filterResult = (ExtensionObject)Utils.Clone(this.m_filterResult);

            return clone;
        }
        #endregion

        #region Private Fields
        private StatusCode m_statusCode;
        private uint m_monitoredItemId;
        private double m_revisedSamplingInterval;
        private uint m_revisedQueueSize;
        private ExtensionObject m_filterResult;
        #endregion
    }

    #region MonitoredItemCreateResultCollection Class
    /// <summary>
    /// A collection of MonitoredItemCreateResult objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfMonitoredItemCreateResult", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "MonitoredItemCreateResult")]
    #if !NET_STANDARD
    public partial class MonitoredItemCreateResultCollection : List<MonitoredItemCreateResult>, ICloneable
    #else
    public partial class MonitoredItemCreateResultCollection : List<MonitoredItemCreateResult>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public MonitoredItemCreateResultCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public MonitoredItemCreateResultCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public MonitoredItemCreateResultCollection(IEnumerable<MonitoredItemCreateResult> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator MonitoredItemCreateResultCollection(MonitoredItemCreateResult[] values)
        {
            if (values != null)
            {
                return new MonitoredItemCreateResultCollection(values);
            }

            return new MonitoredItemCreateResultCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator MonitoredItemCreateResult[](MonitoredItemCreateResultCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (MonitoredItemCreateResultCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            MonitoredItemCreateResultCollection clone = new MonitoredItemCreateResultCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((MonitoredItemCreateResult)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region CreateMonitoredItemsRequest Class
    #if (!OPCUA_EXCLUDE_CreateMonitoredItemsRequest)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class CreateMonitoredItemsRequest : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public CreateMonitoredItemsRequest()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_requestHeader = new RequestHeader();
            m_subscriptionId = (uint)0;
            m_timestampsToReturn = TimestampsToReturn.Source;
            m_itemsToCreate = new MonitoredItemCreateRequestCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RequestHeader", IsRequired = false, Order = 1)]
        public RequestHeader RequestHeader
        {
            get
            {
                return m_requestHeader;
            }

            set
            {
                m_requestHeader = value;

                if (value == null)
                {
                    m_requestHeader = new RequestHeader();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "SubscriptionId", IsRequired = false, Order = 2)]
        public uint SubscriptionId
        {
            get { return m_subscriptionId;  }
            set { m_subscriptionId = value; }
        }

        /// <remarks />
        [DataMember(Name = "TimestampsToReturn", IsRequired = false, Order = 3)]
        public TimestampsToReturn TimestampsToReturn
        {
            get { return m_timestampsToReturn;  }
            set { m_timestampsToReturn = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ItemsToCreate", IsRequired = false, Order = 4)]
        public MonitoredItemCreateRequestCollection ItemsToCreate
        {
            get
            {
                return m_itemsToCreate;
            }

            set
            {
                m_itemsToCreate = value;

                if (value == null)
                {
                    m_itemsToCreate = new MonitoredItemCreateRequestCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.CreateMonitoredItemsRequest; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.CreateMonitoredItemsRequest_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.CreateMonitoredItemsRequest_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("RequestHeader", RequestHeader, typeof(RequestHeader));
            encoder.WriteUInt32("SubscriptionId", SubscriptionId);
            encoder.WriteEnumerated("TimestampsToReturn", TimestampsToReturn);
            encoder.WriteEncodeableArray("ItemsToCreate", ItemsToCreate.ToArray(), typeof(MonitoredItemCreateRequest));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            RequestHeader = (RequestHeader)decoder.ReadEncodeable("RequestHeader", typeof(RequestHeader));
            SubscriptionId = decoder.ReadUInt32("SubscriptionId");
            TimestampsToReturn = (TimestampsToReturn)decoder.ReadEnumerated("TimestampsToReturn", typeof(TimestampsToReturn));
            ItemsToCreate = (MonitoredItemCreateRequestCollection)decoder.ReadEncodeableArray("ItemsToCreate", typeof(MonitoredItemCreateRequest));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            CreateMonitoredItemsRequest value = encodeable as CreateMonitoredItemsRequest;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_requestHeader, value.m_requestHeader)) return false;
            if (!Utils.IsEqual(m_subscriptionId, value.m_subscriptionId)) return false;
            if (!Utils.IsEqual(m_timestampsToReturn, value.m_timestampsToReturn)) return false;
            if (!Utils.IsEqual(m_itemsToCreate, value.m_itemsToCreate)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (CreateMonitoredItemsRequest)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            CreateMonitoredItemsRequest clone = (CreateMonitoredItemsRequest)base.MemberwiseClone();

            clone.m_requestHeader = (RequestHeader)Utils.Clone(this.m_requestHeader);
            clone.m_subscriptionId = (uint)Utils.Clone(this.m_subscriptionId);
            clone.m_timestampsToReturn = (TimestampsToReturn)Utils.Clone(this.m_timestampsToReturn);
            clone.m_itemsToCreate = (MonitoredItemCreateRequestCollection)Utils.Clone(this.m_itemsToCreate);

            return clone;
        }
        #endregion

        #region Private Fields
        private RequestHeader m_requestHeader;
        private uint m_subscriptionId;
        private TimestampsToReturn m_timestampsToReturn;
        private MonitoredItemCreateRequestCollection m_itemsToCreate;
        #endregion
    }
    #endif
    #endregion

    #region CreateMonitoredItemsResponse Class
    #if (!OPCUA_EXCLUDE_CreateMonitoredItemsResponse)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class CreateMonitoredItemsResponse : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public CreateMonitoredItemsResponse()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_responseHeader = new ResponseHeader();
            m_results = new MonitoredItemCreateResultCollection();
            m_diagnosticInfos = new DiagnosticInfoCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ResponseHeader", IsRequired = false, Order = 1)]
        public ResponseHeader ResponseHeader
        {
            get
            {
                return m_responseHeader;
            }

            set
            {
                m_responseHeader = value;

                if (value == null)
                {
                    m_responseHeader = new ResponseHeader();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "Results", IsRequired = false, Order = 2)]
        public MonitoredItemCreateResultCollection Results
        {
            get
            {
                return m_results;
            }

            set
            {
                m_results = value;

                if (value == null)
                {
                    m_results = new MonitoredItemCreateResultCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "DiagnosticInfos", IsRequired = false, Order = 3)]
        public DiagnosticInfoCollection DiagnosticInfos
        {
            get
            {
                return m_diagnosticInfos;
            }

            set
            {
                m_diagnosticInfos = value;

                if (value == null)
                {
                    m_diagnosticInfos = new DiagnosticInfoCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.CreateMonitoredItemsResponse; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.CreateMonitoredItemsResponse_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.CreateMonitoredItemsResponse_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("ResponseHeader", ResponseHeader, typeof(ResponseHeader));
            encoder.WriteEncodeableArray("Results", Results.ToArray(), typeof(MonitoredItemCreateResult));
            encoder.WriteDiagnosticInfoArray("DiagnosticInfos", DiagnosticInfos);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ResponseHeader = (ResponseHeader)decoder.ReadEncodeable("ResponseHeader", typeof(ResponseHeader));
            Results = (MonitoredItemCreateResultCollection)decoder.ReadEncodeableArray("Results", typeof(MonitoredItemCreateResult));
            DiagnosticInfos = decoder.ReadDiagnosticInfoArray("DiagnosticInfos");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            CreateMonitoredItemsResponse value = encodeable as CreateMonitoredItemsResponse;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_responseHeader, value.m_responseHeader)) return false;
            if (!Utils.IsEqual(m_results, value.m_results)) return false;
            if (!Utils.IsEqual(m_diagnosticInfos, value.m_diagnosticInfos)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (CreateMonitoredItemsResponse)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            CreateMonitoredItemsResponse clone = (CreateMonitoredItemsResponse)base.MemberwiseClone();

            clone.m_responseHeader = (ResponseHeader)Utils.Clone(this.m_responseHeader);
            clone.m_results = (MonitoredItemCreateResultCollection)Utils.Clone(this.m_results);
            clone.m_diagnosticInfos = (DiagnosticInfoCollection)Utils.Clone(this.m_diagnosticInfos);

            return clone;
        }
        #endregion

        #region Private Fields
        private ResponseHeader m_responseHeader;
        private MonitoredItemCreateResultCollection m_results;
        private DiagnosticInfoCollection m_diagnosticInfos;
        #endregion
    }
    #endif
    #endregion

    #region MonitoredItemModifyRequest Class
    #if (!OPCUA_EXCLUDE_MonitoredItemModifyRequest)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class MonitoredItemModifyRequest : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public MonitoredItemModifyRequest()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_monitoredItemId = (uint)0;
            m_requestedParameters = new MonitoringParameters();
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "MonitoredItemId", IsRequired = false, Order = 1)]
        public uint MonitoredItemId
        {
            get { return m_monitoredItemId;  }
            set { m_monitoredItemId = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RequestedParameters", IsRequired = false, Order = 2)]
        public MonitoringParameters RequestedParameters
        {
            get
            {
                return m_requestedParameters;
            }

            set
            {
                m_requestedParameters = value;

                if (value == null)
                {
                    m_requestedParameters = new MonitoringParameters();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.MonitoredItemModifyRequest; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.MonitoredItemModifyRequest_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.MonitoredItemModifyRequest_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteUInt32("MonitoredItemId", MonitoredItemId);
            encoder.WriteEncodeable("RequestedParameters", RequestedParameters, typeof(MonitoringParameters));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            MonitoredItemId = decoder.ReadUInt32("MonitoredItemId");
            RequestedParameters = (MonitoringParameters)decoder.ReadEncodeable("RequestedParameters", typeof(MonitoringParameters));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            MonitoredItemModifyRequest value = encodeable as MonitoredItemModifyRequest;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_monitoredItemId, value.m_monitoredItemId)) return false;
            if (!Utils.IsEqual(m_requestedParameters, value.m_requestedParameters)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (MonitoredItemModifyRequest)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            MonitoredItemModifyRequest clone = (MonitoredItemModifyRequest)base.MemberwiseClone();

            clone.m_monitoredItemId = (uint)Utils.Clone(this.m_monitoredItemId);
            clone.m_requestedParameters = (MonitoringParameters)Utils.Clone(this.m_requestedParameters);

            return clone;
        }
        #endregion

        #region Private Fields
        private uint m_monitoredItemId;
        private MonitoringParameters m_requestedParameters;
        #endregion
    }

    #region MonitoredItemModifyRequestCollection Class
    /// <summary>
    /// A collection of MonitoredItemModifyRequest objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfMonitoredItemModifyRequest", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "MonitoredItemModifyRequest")]
    #if !NET_STANDARD
    public partial class MonitoredItemModifyRequestCollection : List<MonitoredItemModifyRequest>, ICloneable
    #else
    public partial class MonitoredItemModifyRequestCollection : List<MonitoredItemModifyRequest>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public MonitoredItemModifyRequestCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public MonitoredItemModifyRequestCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public MonitoredItemModifyRequestCollection(IEnumerable<MonitoredItemModifyRequest> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator MonitoredItemModifyRequestCollection(MonitoredItemModifyRequest[] values)
        {
            if (values != null)
            {
                return new MonitoredItemModifyRequestCollection(values);
            }

            return new MonitoredItemModifyRequestCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator MonitoredItemModifyRequest[](MonitoredItemModifyRequestCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (MonitoredItemModifyRequestCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            MonitoredItemModifyRequestCollection clone = new MonitoredItemModifyRequestCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((MonitoredItemModifyRequest)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region MonitoredItemModifyResult Class
    #if (!OPCUA_EXCLUDE_MonitoredItemModifyResult)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class MonitoredItemModifyResult : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public MonitoredItemModifyResult()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_statusCode = StatusCodes.Good;
            m_revisedSamplingInterval = (double)0;
            m_revisedQueueSize = (uint)0;
            m_filterResult = null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "StatusCode", IsRequired = false, Order = 1)]
        public StatusCode StatusCode
        {
            get { return m_statusCode;  }
            set { m_statusCode = value; }
        }

        /// <remarks />
        [DataMember(Name = "RevisedSamplingInterval", IsRequired = false, Order = 2)]
        public double RevisedSamplingInterval
        {
            get { return m_revisedSamplingInterval;  }
            set { m_revisedSamplingInterval = value; }
        }

        /// <remarks />
        [DataMember(Name = "RevisedQueueSize", IsRequired = false, Order = 3)]
        public uint RevisedQueueSize
        {
            get { return m_revisedQueueSize;  }
            set { m_revisedQueueSize = value; }
        }

        /// <remarks />
        [DataMember(Name = "FilterResult", IsRequired = false, Order = 4)]
        public ExtensionObject FilterResult
        {
            get { return m_filterResult;  }
            set { m_filterResult = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.MonitoredItemModifyResult; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.MonitoredItemModifyResult_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.MonitoredItemModifyResult_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteStatusCode("StatusCode", StatusCode);
            encoder.WriteDouble("RevisedSamplingInterval", RevisedSamplingInterval);
            encoder.WriteUInt32("RevisedQueueSize", RevisedQueueSize);
            encoder.WriteExtensionObject("FilterResult", FilterResult);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            StatusCode = decoder.ReadStatusCode("StatusCode");
            RevisedSamplingInterval = decoder.ReadDouble("RevisedSamplingInterval");
            RevisedQueueSize = decoder.ReadUInt32("RevisedQueueSize");
            FilterResult = decoder.ReadExtensionObject("FilterResult");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            MonitoredItemModifyResult value = encodeable as MonitoredItemModifyResult;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_statusCode, value.m_statusCode)) return false;
            if (!Utils.IsEqual(m_revisedSamplingInterval, value.m_revisedSamplingInterval)) return false;
            if (!Utils.IsEqual(m_revisedQueueSize, value.m_revisedQueueSize)) return false;
            if (!Utils.IsEqual(m_filterResult, value.m_filterResult)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (MonitoredItemModifyResult)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            MonitoredItemModifyResult clone = (MonitoredItemModifyResult)base.MemberwiseClone();

            clone.m_statusCode = (StatusCode)Utils.Clone(this.m_statusCode);
            clone.m_revisedSamplingInterval = (double)Utils.Clone(this.m_revisedSamplingInterval);
            clone.m_revisedQueueSize = (uint)Utils.Clone(this.m_revisedQueueSize);
            clone.m_filterResult = (ExtensionObject)Utils.Clone(this.m_filterResult);

            return clone;
        }
        #endregion

        #region Private Fields
        private StatusCode m_statusCode;
        private double m_revisedSamplingInterval;
        private uint m_revisedQueueSize;
        private ExtensionObject m_filterResult;
        #endregion
    }

    #region MonitoredItemModifyResultCollection Class
    /// <summary>
    /// A collection of MonitoredItemModifyResult objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfMonitoredItemModifyResult", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "MonitoredItemModifyResult")]
    #if !NET_STANDARD
    public partial class MonitoredItemModifyResultCollection : List<MonitoredItemModifyResult>, ICloneable
    #else
    public partial class MonitoredItemModifyResultCollection : List<MonitoredItemModifyResult>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public MonitoredItemModifyResultCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public MonitoredItemModifyResultCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public MonitoredItemModifyResultCollection(IEnumerable<MonitoredItemModifyResult> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator MonitoredItemModifyResultCollection(MonitoredItemModifyResult[] values)
        {
            if (values != null)
            {
                return new MonitoredItemModifyResultCollection(values);
            }

            return new MonitoredItemModifyResultCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator MonitoredItemModifyResult[](MonitoredItemModifyResultCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (MonitoredItemModifyResultCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            MonitoredItemModifyResultCollection clone = new MonitoredItemModifyResultCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((MonitoredItemModifyResult)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region ModifyMonitoredItemsRequest Class
    #if (!OPCUA_EXCLUDE_ModifyMonitoredItemsRequest)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ModifyMonitoredItemsRequest : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ModifyMonitoredItemsRequest()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_requestHeader = new RequestHeader();
            m_subscriptionId = (uint)0;
            m_timestampsToReturn = TimestampsToReturn.Source;
            m_itemsToModify = new MonitoredItemModifyRequestCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RequestHeader", IsRequired = false, Order = 1)]
        public RequestHeader RequestHeader
        {
            get
            {
                return m_requestHeader;
            }

            set
            {
                m_requestHeader = value;

                if (value == null)
                {
                    m_requestHeader = new RequestHeader();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "SubscriptionId", IsRequired = false, Order = 2)]
        public uint SubscriptionId
        {
            get { return m_subscriptionId;  }
            set { m_subscriptionId = value; }
        }

        /// <remarks />
        [DataMember(Name = "TimestampsToReturn", IsRequired = false, Order = 3)]
        public TimestampsToReturn TimestampsToReturn
        {
            get { return m_timestampsToReturn;  }
            set { m_timestampsToReturn = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ItemsToModify", IsRequired = false, Order = 4)]
        public MonitoredItemModifyRequestCollection ItemsToModify
        {
            get
            {
                return m_itemsToModify;
            }

            set
            {
                m_itemsToModify = value;

                if (value == null)
                {
                    m_itemsToModify = new MonitoredItemModifyRequestCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ModifyMonitoredItemsRequest; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ModifyMonitoredItemsRequest_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ModifyMonitoredItemsRequest_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("RequestHeader", RequestHeader, typeof(RequestHeader));
            encoder.WriteUInt32("SubscriptionId", SubscriptionId);
            encoder.WriteEnumerated("TimestampsToReturn", TimestampsToReturn);
            encoder.WriteEncodeableArray("ItemsToModify", ItemsToModify.ToArray(), typeof(MonitoredItemModifyRequest));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            RequestHeader = (RequestHeader)decoder.ReadEncodeable("RequestHeader", typeof(RequestHeader));
            SubscriptionId = decoder.ReadUInt32("SubscriptionId");
            TimestampsToReturn = (TimestampsToReturn)decoder.ReadEnumerated("TimestampsToReturn", typeof(TimestampsToReturn));
            ItemsToModify = (MonitoredItemModifyRequestCollection)decoder.ReadEncodeableArray("ItemsToModify", typeof(MonitoredItemModifyRequest));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ModifyMonitoredItemsRequest value = encodeable as ModifyMonitoredItemsRequest;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_requestHeader, value.m_requestHeader)) return false;
            if (!Utils.IsEqual(m_subscriptionId, value.m_subscriptionId)) return false;
            if (!Utils.IsEqual(m_timestampsToReturn, value.m_timestampsToReturn)) return false;
            if (!Utils.IsEqual(m_itemsToModify, value.m_itemsToModify)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (ModifyMonitoredItemsRequest)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ModifyMonitoredItemsRequest clone = (ModifyMonitoredItemsRequest)base.MemberwiseClone();

            clone.m_requestHeader = (RequestHeader)Utils.Clone(this.m_requestHeader);
            clone.m_subscriptionId = (uint)Utils.Clone(this.m_subscriptionId);
            clone.m_timestampsToReturn = (TimestampsToReturn)Utils.Clone(this.m_timestampsToReturn);
            clone.m_itemsToModify = (MonitoredItemModifyRequestCollection)Utils.Clone(this.m_itemsToModify);

            return clone;
        }
        #endregion

        #region Private Fields
        private RequestHeader m_requestHeader;
        private uint m_subscriptionId;
        private TimestampsToReturn m_timestampsToReturn;
        private MonitoredItemModifyRequestCollection m_itemsToModify;
        #endregion
    }
    #endif
    #endregion

    #region ModifyMonitoredItemsResponse Class
    #if (!OPCUA_EXCLUDE_ModifyMonitoredItemsResponse)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ModifyMonitoredItemsResponse : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ModifyMonitoredItemsResponse()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_responseHeader = new ResponseHeader();
            m_results = new MonitoredItemModifyResultCollection();
            m_diagnosticInfos = new DiagnosticInfoCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ResponseHeader", IsRequired = false, Order = 1)]
        public ResponseHeader ResponseHeader
        {
            get
            {
                return m_responseHeader;
            }

            set
            {
                m_responseHeader = value;

                if (value == null)
                {
                    m_responseHeader = new ResponseHeader();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "Results", IsRequired = false, Order = 2)]
        public MonitoredItemModifyResultCollection Results
        {
            get
            {
                return m_results;
            }

            set
            {
                m_results = value;

                if (value == null)
                {
                    m_results = new MonitoredItemModifyResultCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "DiagnosticInfos", IsRequired = false, Order = 3)]
        public DiagnosticInfoCollection DiagnosticInfos
        {
            get
            {
                return m_diagnosticInfos;
            }

            set
            {
                m_diagnosticInfos = value;

                if (value == null)
                {
                    m_diagnosticInfos = new DiagnosticInfoCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ModifyMonitoredItemsResponse; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ModifyMonitoredItemsResponse_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ModifyMonitoredItemsResponse_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("ResponseHeader", ResponseHeader, typeof(ResponseHeader));
            encoder.WriteEncodeableArray("Results", Results.ToArray(), typeof(MonitoredItemModifyResult));
            encoder.WriteDiagnosticInfoArray("DiagnosticInfos", DiagnosticInfos);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ResponseHeader = (ResponseHeader)decoder.ReadEncodeable("ResponseHeader", typeof(ResponseHeader));
            Results = (MonitoredItemModifyResultCollection)decoder.ReadEncodeableArray("Results", typeof(MonitoredItemModifyResult));
            DiagnosticInfos = decoder.ReadDiagnosticInfoArray("DiagnosticInfos");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ModifyMonitoredItemsResponse value = encodeable as ModifyMonitoredItemsResponse;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_responseHeader, value.m_responseHeader)) return false;
            if (!Utils.IsEqual(m_results, value.m_results)) return false;
            if (!Utils.IsEqual(m_diagnosticInfos, value.m_diagnosticInfos)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (ModifyMonitoredItemsResponse)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ModifyMonitoredItemsResponse clone = (ModifyMonitoredItemsResponse)base.MemberwiseClone();

            clone.m_responseHeader = (ResponseHeader)Utils.Clone(this.m_responseHeader);
            clone.m_results = (MonitoredItemModifyResultCollection)Utils.Clone(this.m_results);
            clone.m_diagnosticInfos = (DiagnosticInfoCollection)Utils.Clone(this.m_diagnosticInfos);

            return clone;
        }
        #endregion

        #region Private Fields
        private ResponseHeader m_responseHeader;
        private MonitoredItemModifyResultCollection m_results;
        private DiagnosticInfoCollection m_diagnosticInfos;
        #endregion
    }
    #endif
    #endregion

    #region SetMonitoringModeRequest Class
    #if (!OPCUA_EXCLUDE_SetMonitoringModeRequest)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class SetMonitoringModeRequest : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public SetMonitoringModeRequest()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_requestHeader = new RequestHeader();
            m_subscriptionId = (uint)0;
            m_monitoringMode = MonitoringMode.Disabled;
            m_monitoredItemIds = new UInt32Collection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RequestHeader", IsRequired = false, Order = 1)]
        public RequestHeader RequestHeader
        {
            get
            {
                return m_requestHeader;
            }

            set
            {
                m_requestHeader = value;

                if (value == null)
                {
                    m_requestHeader = new RequestHeader();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "SubscriptionId", IsRequired = false, Order = 2)]
        public uint SubscriptionId
        {
            get { return m_subscriptionId;  }
            set { m_subscriptionId = value; }
        }

        /// <remarks />
        [DataMember(Name = "MonitoringMode", IsRequired = false, Order = 3)]
        public MonitoringMode MonitoringMode
        {
            get { return m_monitoringMode;  }
            set { m_monitoringMode = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "MonitoredItemIds", IsRequired = false, Order = 4)]
        public UInt32Collection MonitoredItemIds
        {
            get
            {
                return m_monitoredItemIds;
            }

            set
            {
                m_monitoredItemIds = value;

                if (value == null)
                {
                    m_monitoredItemIds = new UInt32Collection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.SetMonitoringModeRequest; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.SetMonitoringModeRequest_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.SetMonitoringModeRequest_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("RequestHeader", RequestHeader, typeof(RequestHeader));
            encoder.WriteUInt32("SubscriptionId", SubscriptionId);
            encoder.WriteEnumerated("MonitoringMode", MonitoringMode);
            encoder.WriteUInt32Array("MonitoredItemIds", MonitoredItemIds);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            RequestHeader = (RequestHeader)decoder.ReadEncodeable("RequestHeader", typeof(RequestHeader));
            SubscriptionId = decoder.ReadUInt32("SubscriptionId");
            MonitoringMode = (MonitoringMode)decoder.ReadEnumerated("MonitoringMode", typeof(MonitoringMode));
            MonitoredItemIds = decoder.ReadUInt32Array("MonitoredItemIds");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            SetMonitoringModeRequest value = encodeable as SetMonitoringModeRequest;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_requestHeader, value.m_requestHeader)) return false;
            if (!Utils.IsEqual(m_subscriptionId, value.m_subscriptionId)) return false;
            if (!Utils.IsEqual(m_monitoringMode, value.m_monitoringMode)) return false;
            if (!Utils.IsEqual(m_monitoredItemIds, value.m_monitoredItemIds)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (SetMonitoringModeRequest)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            SetMonitoringModeRequest clone = (SetMonitoringModeRequest)base.MemberwiseClone();

            clone.m_requestHeader = (RequestHeader)Utils.Clone(this.m_requestHeader);
            clone.m_subscriptionId = (uint)Utils.Clone(this.m_subscriptionId);
            clone.m_monitoringMode = (MonitoringMode)Utils.Clone(this.m_monitoringMode);
            clone.m_monitoredItemIds = (UInt32Collection)Utils.Clone(this.m_monitoredItemIds);

            return clone;
        }
        #endregion

        #region Private Fields
        private RequestHeader m_requestHeader;
        private uint m_subscriptionId;
        private MonitoringMode m_monitoringMode;
        private UInt32Collection m_monitoredItemIds;
        #endregion
    }
    #endif
    #endregion

    #region SetMonitoringModeResponse Class
    #if (!OPCUA_EXCLUDE_SetMonitoringModeResponse)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class SetMonitoringModeResponse : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public SetMonitoringModeResponse()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_responseHeader = new ResponseHeader();
            m_results = new StatusCodeCollection();
            m_diagnosticInfos = new DiagnosticInfoCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ResponseHeader", IsRequired = false, Order = 1)]
        public ResponseHeader ResponseHeader
        {
            get
            {
                return m_responseHeader;
            }

            set
            {
                m_responseHeader = value;

                if (value == null)
                {
                    m_responseHeader = new ResponseHeader();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "Results", IsRequired = false, Order = 2)]
        public StatusCodeCollection Results
        {
            get
            {
                return m_results;
            }

            set
            {
                m_results = value;

                if (value == null)
                {
                    m_results = new StatusCodeCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "DiagnosticInfos", IsRequired = false, Order = 3)]
        public DiagnosticInfoCollection DiagnosticInfos
        {
            get
            {
                return m_diagnosticInfos;
            }

            set
            {
                m_diagnosticInfos = value;

                if (value == null)
                {
                    m_diagnosticInfos = new DiagnosticInfoCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.SetMonitoringModeResponse; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.SetMonitoringModeResponse_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.SetMonitoringModeResponse_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("ResponseHeader", ResponseHeader, typeof(ResponseHeader));
            encoder.WriteStatusCodeArray("Results", Results);
            encoder.WriteDiagnosticInfoArray("DiagnosticInfos", DiagnosticInfos);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ResponseHeader = (ResponseHeader)decoder.ReadEncodeable("ResponseHeader", typeof(ResponseHeader));
            Results = decoder.ReadStatusCodeArray("Results");
            DiagnosticInfos = decoder.ReadDiagnosticInfoArray("DiagnosticInfos");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            SetMonitoringModeResponse value = encodeable as SetMonitoringModeResponse;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_responseHeader, value.m_responseHeader)) return false;
            if (!Utils.IsEqual(m_results, value.m_results)) return false;
            if (!Utils.IsEqual(m_diagnosticInfos, value.m_diagnosticInfos)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (SetMonitoringModeResponse)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            SetMonitoringModeResponse clone = (SetMonitoringModeResponse)base.MemberwiseClone();

            clone.m_responseHeader = (ResponseHeader)Utils.Clone(this.m_responseHeader);
            clone.m_results = (StatusCodeCollection)Utils.Clone(this.m_results);
            clone.m_diagnosticInfos = (DiagnosticInfoCollection)Utils.Clone(this.m_diagnosticInfos);

            return clone;
        }
        #endregion

        #region Private Fields
        private ResponseHeader m_responseHeader;
        private StatusCodeCollection m_results;
        private DiagnosticInfoCollection m_diagnosticInfos;
        #endregion
    }
    #endif
    #endregion

    #region SetTriggeringRequest Class
    #if (!OPCUA_EXCLUDE_SetTriggeringRequest)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class SetTriggeringRequest : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public SetTriggeringRequest()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_requestHeader = new RequestHeader();
            m_subscriptionId = (uint)0;
            m_triggeringItemId = (uint)0;
            m_linksToAdd = new UInt32Collection();
            m_linksToRemove = new UInt32Collection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RequestHeader", IsRequired = false, Order = 1)]
        public RequestHeader RequestHeader
        {
            get
            {
                return m_requestHeader;
            }

            set
            {
                m_requestHeader = value;

                if (value == null)
                {
                    m_requestHeader = new RequestHeader();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "SubscriptionId", IsRequired = false, Order = 2)]
        public uint SubscriptionId
        {
            get { return m_subscriptionId;  }
            set { m_subscriptionId = value; }
        }

        /// <remarks />
        [DataMember(Name = "TriggeringItemId", IsRequired = false, Order = 3)]
        public uint TriggeringItemId
        {
            get { return m_triggeringItemId;  }
            set { m_triggeringItemId = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "LinksToAdd", IsRequired = false, Order = 4)]
        public UInt32Collection LinksToAdd
        {
            get
            {
                return m_linksToAdd;
            }

            set
            {
                m_linksToAdd = value;

                if (value == null)
                {
                    m_linksToAdd = new UInt32Collection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "LinksToRemove", IsRequired = false, Order = 5)]
        public UInt32Collection LinksToRemove
        {
            get
            {
                return m_linksToRemove;
            }

            set
            {
                m_linksToRemove = value;

                if (value == null)
                {
                    m_linksToRemove = new UInt32Collection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.SetTriggeringRequest; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.SetTriggeringRequest_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.SetTriggeringRequest_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("RequestHeader", RequestHeader, typeof(RequestHeader));
            encoder.WriteUInt32("SubscriptionId", SubscriptionId);
            encoder.WriteUInt32("TriggeringItemId", TriggeringItemId);
            encoder.WriteUInt32Array("LinksToAdd", LinksToAdd);
            encoder.WriteUInt32Array("LinksToRemove", LinksToRemove);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            RequestHeader = (RequestHeader)decoder.ReadEncodeable("RequestHeader", typeof(RequestHeader));
            SubscriptionId = decoder.ReadUInt32("SubscriptionId");
            TriggeringItemId = decoder.ReadUInt32("TriggeringItemId");
            LinksToAdd = decoder.ReadUInt32Array("LinksToAdd");
            LinksToRemove = decoder.ReadUInt32Array("LinksToRemove");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            SetTriggeringRequest value = encodeable as SetTriggeringRequest;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_requestHeader, value.m_requestHeader)) return false;
            if (!Utils.IsEqual(m_subscriptionId, value.m_subscriptionId)) return false;
            if (!Utils.IsEqual(m_triggeringItemId, value.m_triggeringItemId)) return false;
            if (!Utils.IsEqual(m_linksToAdd, value.m_linksToAdd)) return false;
            if (!Utils.IsEqual(m_linksToRemove, value.m_linksToRemove)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (SetTriggeringRequest)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            SetTriggeringRequest clone = (SetTriggeringRequest)base.MemberwiseClone();

            clone.m_requestHeader = (RequestHeader)Utils.Clone(this.m_requestHeader);
            clone.m_subscriptionId = (uint)Utils.Clone(this.m_subscriptionId);
            clone.m_triggeringItemId = (uint)Utils.Clone(this.m_triggeringItemId);
            clone.m_linksToAdd = (UInt32Collection)Utils.Clone(this.m_linksToAdd);
            clone.m_linksToRemove = (UInt32Collection)Utils.Clone(this.m_linksToRemove);

            return clone;
        }
        #endregion

        #region Private Fields
        private RequestHeader m_requestHeader;
        private uint m_subscriptionId;
        private uint m_triggeringItemId;
        private UInt32Collection m_linksToAdd;
        private UInt32Collection m_linksToRemove;
        #endregion
    }
    #endif
    #endregion

    #region SetTriggeringResponse Class
    #if (!OPCUA_EXCLUDE_SetTriggeringResponse)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class SetTriggeringResponse : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public SetTriggeringResponse()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_responseHeader = new ResponseHeader();
            m_addResults = new StatusCodeCollection();
            m_addDiagnosticInfos = new DiagnosticInfoCollection();
            m_removeResults = new StatusCodeCollection();
            m_removeDiagnosticInfos = new DiagnosticInfoCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ResponseHeader", IsRequired = false, Order = 1)]
        public ResponseHeader ResponseHeader
        {
            get
            {
                return m_responseHeader;
            }

            set
            {
                m_responseHeader = value;

                if (value == null)
                {
                    m_responseHeader = new ResponseHeader();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "AddResults", IsRequired = false, Order = 2)]
        public StatusCodeCollection AddResults
        {
            get
            {
                return m_addResults;
            }

            set
            {
                m_addResults = value;

                if (value == null)
                {
                    m_addResults = new StatusCodeCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "AddDiagnosticInfos", IsRequired = false, Order = 3)]
        public DiagnosticInfoCollection AddDiagnosticInfos
        {
            get
            {
                return m_addDiagnosticInfos;
            }

            set
            {
                m_addDiagnosticInfos = value;

                if (value == null)
                {
                    m_addDiagnosticInfos = new DiagnosticInfoCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RemoveResults", IsRequired = false, Order = 4)]
        public StatusCodeCollection RemoveResults
        {
            get
            {
                return m_removeResults;
            }

            set
            {
                m_removeResults = value;

                if (value == null)
                {
                    m_removeResults = new StatusCodeCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RemoveDiagnosticInfos", IsRequired = false, Order = 5)]
        public DiagnosticInfoCollection RemoveDiagnosticInfos
        {
            get
            {
                return m_removeDiagnosticInfos;
            }

            set
            {
                m_removeDiagnosticInfos = value;

                if (value == null)
                {
                    m_removeDiagnosticInfos = new DiagnosticInfoCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.SetTriggeringResponse; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.SetTriggeringResponse_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.SetTriggeringResponse_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("ResponseHeader", ResponseHeader, typeof(ResponseHeader));
            encoder.WriteStatusCodeArray("AddResults", AddResults);
            encoder.WriteDiagnosticInfoArray("AddDiagnosticInfos", AddDiagnosticInfos);
            encoder.WriteStatusCodeArray("RemoveResults", RemoveResults);
            encoder.WriteDiagnosticInfoArray("RemoveDiagnosticInfos", RemoveDiagnosticInfos);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ResponseHeader = (ResponseHeader)decoder.ReadEncodeable("ResponseHeader", typeof(ResponseHeader));
            AddResults = decoder.ReadStatusCodeArray("AddResults");
            AddDiagnosticInfos = decoder.ReadDiagnosticInfoArray("AddDiagnosticInfos");
            RemoveResults = decoder.ReadStatusCodeArray("RemoveResults");
            RemoveDiagnosticInfos = decoder.ReadDiagnosticInfoArray("RemoveDiagnosticInfos");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            SetTriggeringResponse value = encodeable as SetTriggeringResponse;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_responseHeader, value.m_responseHeader)) return false;
            if (!Utils.IsEqual(m_addResults, value.m_addResults)) return false;
            if (!Utils.IsEqual(m_addDiagnosticInfos, value.m_addDiagnosticInfos)) return false;
            if (!Utils.IsEqual(m_removeResults, value.m_removeResults)) return false;
            if (!Utils.IsEqual(m_removeDiagnosticInfos, value.m_removeDiagnosticInfos)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (SetTriggeringResponse)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            SetTriggeringResponse clone = (SetTriggeringResponse)base.MemberwiseClone();

            clone.m_responseHeader = (ResponseHeader)Utils.Clone(this.m_responseHeader);
            clone.m_addResults = (StatusCodeCollection)Utils.Clone(this.m_addResults);
            clone.m_addDiagnosticInfos = (DiagnosticInfoCollection)Utils.Clone(this.m_addDiagnosticInfos);
            clone.m_removeResults = (StatusCodeCollection)Utils.Clone(this.m_removeResults);
            clone.m_removeDiagnosticInfos = (DiagnosticInfoCollection)Utils.Clone(this.m_removeDiagnosticInfos);

            return clone;
        }
        #endregion

        #region Private Fields
        private ResponseHeader m_responseHeader;
        private StatusCodeCollection m_addResults;
        private DiagnosticInfoCollection m_addDiagnosticInfos;
        private StatusCodeCollection m_removeResults;
        private DiagnosticInfoCollection m_removeDiagnosticInfos;
        #endregion
    }
    #endif
    #endregion

    #region DeleteMonitoredItemsRequest Class
    #if (!OPCUA_EXCLUDE_DeleteMonitoredItemsRequest)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class DeleteMonitoredItemsRequest : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public DeleteMonitoredItemsRequest()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_requestHeader = new RequestHeader();
            m_subscriptionId = (uint)0;
            m_monitoredItemIds = new UInt32Collection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RequestHeader", IsRequired = false, Order = 1)]
        public RequestHeader RequestHeader
        {
            get
            {
                return m_requestHeader;
            }

            set
            {
                m_requestHeader = value;

                if (value == null)
                {
                    m_requestHeader = new RequestHeader();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "SubscriptionId", IsRequired = false, Order = 2)]
        public uint SubscriptionId
        {
            get { return m_subscriptionId;  }
            set { m_subscriptionId = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "MonitoredItemIds", IsRequired = false, Order = 3)]
        public UInt32Collection MonitoredItemIds
        {
            get
            {
                return m_monitoredItemIds;
            }

            set
            {
                m_monitoredItemIds = value;

                if (value == null)
                {
                    m_monitoredItemIds = new UInt32Collection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.DeleteMonitoredItemsRequest; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.DeleteMonitoredItemsRequest_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.DeleteMonitoredItemsRequest_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("RequestHeader", RequestHeader, typeof(RequestHeader));
            encoder.WriteUInt32("SubscriptionId", SubscriptionId);
            encoder.WriteUInt32Array("MonitoredItemIds", MonitoredItemIds);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            RequestHeader = (RequestHeader)decoder.ReadEncodeable("RequestHeader", typeof(RequestHeader));
            SubscriptionId = decoder.ReadUInt32("SubscriptionId");
            MonitoredItemIds = decoder.ReadUInt32Array("MonitoredItemIds");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            DeleteMonitoredItemsRequest value = encodeable as DeleteMonitoredItemsRequest;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_requestHeader, value.m_requestHeader)) return false;
            if (!Utils.IsEqual(m_subscriptionId, value.m_subscriptionId)) return false;
            if (!Utils.IsEqual(m_monitoredItemIds, value.m_monitoredItemIds)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (DeleteMonitoredItemsRequest)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            DeleteMonitoredItemsRequest clone = (DeleteMonitoredItemsRequest)base.MemberwiseClone();

            clone.m_requestHeader = (RequestHeader)Utils.Clone(this.m_requestHeader);
            clone.m_subscriptionId = (uint)Utils.Clone(this.m_subscriptionId);
            clone.m_monitoredItemIds = (UInt32Collection)Utils.Clone(this.m_monitoredItemIds);

            return clone;
        }
        #endregion

        #region Private Fields
        private RequestHeader m_requestHeader;
        private uint m_subscriptionId;
        private UInt32Collection m_monitoredItemIds;
        #endregion
    }
    #endif
    #endregion

    #region DeleteMonitoredItemsResponse Class
    #if (!OPCUA_EXCLUDE_DeleteMonitoredItemsResponse)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class DeleteMonitoredItemsResponse : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public DeleteMonitoredItemsResponse()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_responseHeader = new ResponseHeader();
            m_results = new StatusCodeCollection();
            m_diagnosticInfos = new DiagnosticInfoCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ResponseHeader", IsRequired = false, Order = 1)]
        public ResponseHeader ResponseHeader
        {
            get
            {
                return m_responseHeader;
            }

            set
            {
                m_responseHeader = value;

                if (value == null)
                {
                    m_responseHeader = new ResponseHeader();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "Results", IsRequired = false, Order = 2)]
        public StatusCodeCollection Results
        {
            get
            {
                return m_results;
            }

            set
            {
                m_results = value;

                if (value == null)
                {
                    m_results = new StatusCodeCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "DiagnosticInfos", IsRequired = false, Order = 3)]
        public DiagnosticInfoCollection DiagnosticInfos
        {
            get
            {
                return m_diagnosticInfos;
            }

            set
            {
                m_diagnosticInfos = value;

                if (value == null)
                {
                    m_diagnosticInfos = new DiagnosticInfoCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.DeleteMonitoredItemsResponse; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.DeleteMonitoredItemsResponse_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.DeleteMonitoredItemsResponse_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("ResponseHeader", ResponseHeader, typeof(ResponseHeader));
            encoder.WriteStatusCodeArray("Results", Results);
            encoder.WriteDiagnosticInfoArray("DiagnosticInfos", DiagnosticInfos);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ResponseHeader = (ResponseHeader)decoder.ReadEncodeable("ResponseHeader", typeof(ResponseHeader));
            Results = decoder.ReadStatusCodeArray("Results");
            DiagnosticInfos = decoder.ReadDiagnosticInfoArray("DiagnosticInfos");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            DeleteMonitoredItemsResponse value = encodeable as DeleteMonitoredItemsResponse;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_responseHeader, value.m_responseHeader)) return false;
            if (!Utils.IsEqual(m_results, value.m_results)) return false;
            if (!Utils.IsEqual(m_diagnosticInfos, value.m_diagnosticInfos)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (DeleteMonitoredItemsResponse)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            DeleteMonitoredItemsResponse clone = (DeleteMonitoredItemsResponse)base.MemberwiseClone();

            clone.m_responseHeader = (ResponseHeader)Utils.Clone(this.m_responseHeader);
            clone.m_results = (StatusCodeCollection)Utils.Clone(this.m_results);
            clone.m_diagnosticInfos = (DiagnosticInfoCollection)Utils.Clone(this.m_diagnosticInfos);

            return clone;
        }
        #endregion

        #region Private Fields
        private ResponseHeader m_responseHeader;
        private StatusCodeCollection m_results;
        private DiagnosticInfoCollection m_diagnosticInfos;
        #endregion
    }
    #endif
    #endregion

    #region CreateSubscriptionRequest Class
    #if (!OPCUA_EXCLUDE_CreateSubscriptionRequest)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class CreateSubscriptionRequest : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public CreateSubscriptionRequest()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_requestHeader = new RequestHeader();
            m_requestedPublishingInterval = (double)0;
            m_requestedLifetimeCount = (uint)0;
            m_requestedMaxKeepAliveCount = (uint)0;
            m_maxNotificationsPerPublish = (uint)0;
            m_publishingEnabled = true;
            m_priority = (byte)0;
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RequestHeader", IsRequired = false, Order = 1)]
        public RequestHeader RequestHeader
        {
            get
            {
                return m_requestHeader;
            }

            set
            {
                m_requestHeader = value;

                if (value == null)
                {
                    m_requestHeader = new RequestHeader();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "RequestedPublishingInterval", IsRequired = false, Order = 2)]
        public double RequestedPublishingInterval
        {
            get { return m_requestedPublishingInterval;  }
            set { m_requestedPublishingInterval = value; }
        }

        /// <remarks />
        [DataMember(Name = "RequestedLifetimeCount", IsRequired = false, Order = 3)]
        public uint RequestedLifetimeCount
        {
            get { return m_requestedLifetimeCount;  }
            set { m_requestedLifetimeCount = value; }
        }

        /// <remarks />
        [DataMember(Name = "RequestedMaxKeepAliveCount", IsRequired = false, Order = 4)]
        public uint RequestedMaxKeepAliveCount
        {
            get { return m_requestedMaxKeepAliveCount;  }
            set { m_requestedMaxKeepAliveCount = value; }
        }

        /// <remarks />
        [DataMember(Name = "MaxNotificationsPerPublish", IsRequired = false, Order = 5)]
        public uint MaxNotificationsPerPublish
        {
            get { return m_maxNotificationsPerPublish;  }
            set { m_maxNotificationsPerPublish = value; }
        }

        /// <remarks />
        [DataMember(Name = "PublishingEnabled", IsRequired = false, Order = 6)]
        public bool PublishingEnabled
        {
            get { return m_publishingEnabled;  }
            set { m_publishingEnabled = value; }
        }

        /// <remarks />
        [DataMember(Name = "Priority", IsRequired = false, Order = 7)]
        public byte Priority
        {
            get { return m_priority;  }
            set { m_priority = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.CreateSubscriptionRequest; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.CreateSubscriptionRequest_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.CreateSubscriptionRequest_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("RequestHeader", RequestHeader, typeof(RequestHeader));
            encoder.WriteDouble("RequestedPublishingInterval", RequestedPublishingInterval);
            encoder.WriteUInt32("RequestedLifetimeCount", RequestedLifetimeCount);
            encoder.WriteUInt32("RequestedMaxKeepAliveCount", RequestedMaxKeepAliveCount);
            encoder.WriteUInt32("MaxNotificationsPerPublish", MaxNotificationsPerPublish);
            encoder.WriteBoolean("PublishingEnabled", PublishingEnabled);
            encoder.WriteByte("Priority", Priority);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            RequestHeader = (RequestHeader)decoder.ReadEncodeable("RequestHeader", typeof(RequestHeader));
            RequestedPublishingInterval = decoder.ReadDouble("RequestedPublishingInterval");
            RequestedLifetimeCount = decoder.ReadUInt32("RequestedLifetimeCount");
            RequestedMaxKeepAliveCount = decoder.ReadUInt32("RequestedMaxKeepAliveCount");
            MaxNotificationsPerPublish = decoder.ReadUInt32("MaxNotificationsPerPublish");
            PublishingEnabled = decoder.ReadBoolean("PublishingEnabled");
            Priority = decoder.ReadByte("Priority");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            CreateSubscriptionRequest value = encodeable as CreateSubscriptionRequest;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_requestHeader, value.m_requestHeader)) return false;
            if (!Utils.IsEqual(m_requestedPublishingInterval, value.m_requestedPublishingInterval)) return false;
            if (!Utils.IsEqual(m_requestedLifetimeCount, value.m_requestedLifetimeCount)) return false;
            if (!Utils.IsEqual(m_requestedMaxKeepAliveCount, value.m_requestedMaxKeepAliveCount)) return false;
            if (!Utils.IsEqual(m_maxNotificationsPerPublish, value.m_maxNotificationsPerPublish)) return false;
            if (!Utils.IsEqual(m_publishingEnabled, value.m_publishingEnabled)) return false;
            if (!Utils.IsEqual(m_priority, value.m_priority)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (CreateSubscriptionRequest)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            CreateSubscriptionRequest clone = (CreateSubscriptionRequest)base.MemberwiseClone();

            clone.m_requestHeader = (RequestHeader)Utils.Clone(this.m_requestHeader);
            clone.m_requestedPublishingInterval = (double)Utils.Clone(this.m_requestedPublishingInterval);
            clone.m_requestedLifetimeCount = (uint)Utils.Clone(this.m_requestedLifetimeCount);
            clone.m_requestedMaxKeepAliveCount = (uint)Utils.Clone(this.m_requestedMaxKeepAliveCount);
            clone.m_maxNotificationsPerPublish = (uint)Utils.Clone(this.m_maxNotificationsPerPublish);
            clone.m_publishingEnabled = (bool)Utils.Clone(this.m_publishingEnabled);
            clone.m_priority = (byte)Utils.Clone(this.m_priority);

            return clone;
        }
        #endregion

        #region Private Fields
        private RequestHeader m_requestHeader;
        private double m_requestedPublishingInterval;
        private uint m_requestedLifetimeCount;
        private uint m_requestedMaxKeepAliveCount;
        private uint m_maxNotificationsPerPublish;
        private bool m_publishingEnabled;
        private byte m_priority;
        #endregion
    }
    #endif
    #endregion

    #region CreateSubscriptionResponse Class
    #if (!OPCUA_EXCLUDE_CreateSubscriptionResponse)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class CreateSubscriptionResponse : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public CreateSubscriptionResponse()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_responseHeader = new ResponseHeader();
            m_subscriptionId = (uint)0;
            m_revisedPublishingInterval = (double)0;
            m_revisedLifetimeCount = (uint)0;
            m_revisedMaxKeepAliveCount = (uint)0;
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ResponseHeader", IsRequired = false, Order = 1)]
        public ResponseHeader ResponseHeader
        {
            get
            {
                return m_responseHeader;
            }

            set
            {
                m_responseHeader = value;

                if (value == null)
                {
                    m_responseHeader = new ResponseHeader();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "SubscriptionId", IsRequired = false, Order = 2)]
        public uint SubscriptionId
        {
            get { return m_subscriptionId;  }
            set { m_subscriptionId = value; }
        }

        /// <remarks />
        [DataMember(Name = "RevisedPublishingInterval", IsRequired = false, Order = 3)]
        public double RevisedPublishingInterval
        {
            get { return m_revisedPublishingInterval;  }
            set { m_revisedPublishingInterval = value; }
        }

        /// <remarks />
        [DataMember(Name = "RevisedLifetimeCount", IsRequired = false, Order = 4)]
        public uint RevisedLifetimeCount
        {
            get { return m_revisedLifetimeCount;  }
            set { m_revisedLifetimeCount = value; }
        }

        /// <remarks />
        [DataMember(Name = "RevisedMaxKeepAliveCount", IsRequired = false, Order = 5)]
        public uint RevisedMaxKeepAliveCount
        {
            get { return m_revisedMaxKeepAliveCount;  }
            set { m_revisedMaxKeepAliveCount = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.CreateSubscriptionResponse; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.CreateSubscriptionResponse_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.CreateSubscriptionResponse_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("ResponseHeader", ResponseHeader, typeof(ResponseHeader));
            encoder.WriteUInt32("SubscriptionId", SubscriptionId);
            encoder.WriteDouble("RevisedPublishingInterval", RevisedPublishingInterval);
            encoder.WriteUInt32("RevisedLifetimeCount", RevisedLifetimeCount);
            encoder.WriteUInt32("RevisedMaxKeepAliveCount", RevisedMaxKeepAliveCount);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ResponseHeader = (ResponseHeader)decoder.ReadEncodeable("ResponseHeader", typeof(ResponseHeader));
            SubscriptionId = decoder.ReadUInt32("SubscriptionId");
            RevisedPublishingInterval = decoder.ReadDouble("RevisedPublishingInterval");
            RevisedLifetimeCount = decoder.ReadUInt32("RevisedLifetimeCount");
            RevisedMaxKeepAliveCount = decoder.ReadUInt32("RevisedMaxKeepAliveCount");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            CreateSubscriptionResponse value = encodeable as CreateSubscriptionResponse;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_responseHeader, value.m_responseHeader)) return false;
            if (!Utils.IsEqual(m_subscriptionId, value.m_subscriptionId)) return false;
            if (!Utils.IsEqual(m_revisedPublishingInterval, value.m_revisedPublishingInterval)) return false;
            if (!Utils.IsEqual(m_revisedLifetimeCount, value.m_revisedLifetimeCount)) return false;
            if (!Utils.IsEqual(m_revisedMaxKeepAliveCount, value.m_revisedMaxKeepAliveCount)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (CreateSubscriptionResponse)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            CreateSubscriptionResponse clone = (CreateSubscriptionResponse)base.MemberwiseClone();

            clone.m_responseHeader = (ResponseHeader)Utils.Clone(this.m_responseHeader);
            clone.m_subscriptionId = (uint)Utils.Clone(this.m_subscriptionId);
            clone.m_revisedPublishingInterval = (double)Utils.Clone(this.m_revisedPublishingInterval);
            clone.m_revisedLifetimeCount = (uint)Utils.Clone(this.m_revisedLifetimeCount);
            clone.m_revisedMaxKeepAliveCount = (uint)Utils.Clone(this.m_revisedMaxKeepAliveCount);

            return clone;
        }
        #endregion

        #region Private Fields
        private ResponseHeader m_responseHeader;
        private uint m_subscriptionId;
        private double m_revisedPublishingInterval;
        private uint m_revisedLifetimeCount;
        private uint m_revisedMaxKeepAliveCount;
        #endregion
    }
    #endif
    #endregion

    #region ModifySubscriptionRequest Class
    #if (!OPCUA_EXCLUDE_ModifySubscriptionRequest)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ModifySubscriptionRequest : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ModifySubscriptionRequest()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_requestHeader = new RequestHeader();
            m_subscriptionId = (uint)0;
            m_requestedPublishingInterval = (double)0;
            m_requestedLifetimeCount = (uint)0;
            m_requestedMaxKeepAliveCount = (uint)0;
            m_maxNotificationsPerPublish = (uint)0;
            m_priority = (byte)0;
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RequestHeader", IsRequired = false, Order = 1)]
        public RequestHeader RequestHeader
        {
            get
            {
                return m_requestHeader;
            }

            set
            {
                m_requestHeader = value;

                if (value == null)
                {
                    m_requestHeader = new RequestHeader();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "SubscriptionId", IsRequired = false, Order = 2)]
        public uint SubscriptionId
        {
            get { return m_subscriptionId;  }
            set { m_subscriptionId = value; }
        }

        /// <remarks />
        [DataMember(Name = "RequestedPublishingInterval", IsRequired = false, Order = 3)]
        public double RequestedPublishingInterval
        {
            get { return m_requestedPublishingInterval;  }
            set { m_requestedPublishingInterval = value; }
        }

        /// <remarks />
        [DataMember(Name = "RequestedLifetimeCount", IsRequired = false, Order = 4)]
        public uint RequestedLifetimeCount
        {
            get { return m_requestedLifetimeCount;  }
            set { m_requestedLifetimeCount = value; }
        }

        /// <remarks />
        [DataMember(Name = "RequestedMaxKeepAliveCount", IsRequired = false, Order = 5)]
        public uint RequestedMaxKeepAliveCount
        {
            get { return m_requestedMaxKeepAliveCount;  }
            set { m_requestedMaxKeepAliveCount = value; }
        }

        /// <remarks />
        [DataMember(Name = "MaxNotificationsPerPublish", IsRequired = false, Order = 6)]
        public uint MaxNotificationsPerPublish
        {
            get { return m_maxNotificationsPerPublish;  }
            set { m_maxNotificationsPerPublish = value; }
        }

        /// <remarks />
        [DataMember(Name = "Priority", IsRequired = false, Order = 7)]
        public byte Priority
        {
            get { return m_priority;  }
            set { m_priority = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ModifySubscriptionRequest; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ModifySubscriptionRequest_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ModifySubscriptionRequest_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("RequestHeader", RequestHeader, typeof(RequestHeader));
            encoder.WriteUInt32("SubscriptionId", SubscriptionId);
            encoder.WriteDouble("RequestedPublishingInterval", RequestedPublishingInterval);
            encoder.WriteUInt32("RequestedLifetimeCount", RequestedLifetimeCount);
            encoder.WriteUInt32("RequestedMaxKeepAliveCount", RequestedMaxKeepAliveCount);
            encoder.WriteUInt32("MaxNotificationsPerPublish", MaxNotificationsPerPublish);
            encoder.WriteByte("Priority", Priority);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            RequestHeader = (RequestHeader)decoder.ReadEncodeable("RequestHeader", typeof(RequestHeader));
            SubscriptionId = decoder.ReadUInt32("SubscriptionId");
            RequestedPublishingInterval = decoder.ReadDouble("RequestedPublishingInterval");
            RequestedLifetimeCount = decoder.ReadUInt32("RequestedLifetimeCount");
            RequestedMaxKeepAliveCount = decoder.ReadUInt32("RequestedMaxKeepAliveCount");
            MaxNotificationsPerPublish = decoder.ReadUInt32("MaxNotificationsPerPublish");
            Priority = decoder.ReadByte("Priority");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ModifySubscriptionRequest value = encodeable as ModifySubscriptionRequest;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_requestHeader, value.m_requestHeader)) return false;
            if (!Utils.IsEqual(m_subscriptionId, value.m_subscriptionId)) return false;
            if (!Utils.IsEqual(m_requestedPublishingInterval, value.m_requestedPublishingInterval)) return false;
            if (!Utils.IsEqual(m_requestedLifetimeCount, value.m_requestedLifetimeCount)) return false;
            if (!Utils.IsEqual(m_requestedMaxKeepAliveCount, value.m_requestedMaxKeepAliveCount)) return false;
            if (!Utils.IsEqual(m_maxNotificationsPerPublish, value.m_maxNotificationsPerPublish)) return false;
            if (!Utils.IsEqual(m_priority, value.m_priority)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (ModifySubscriptionRequest)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ModifySubscriptionRequest clone = (ModifySubscriptionRequest)base.MemberwiseClone();

            clone.m_requestHeader = (RequestHeader)Utils.Clone(this.m_requestHeader);
            clone.m_subscriptionId = (uint)Utils.Clone(this.m_subscriptionId);
            clone.m_requestedPublishingInterval = (double)Utils.Clone(this.m_requestedPublishingInterval);
            clone.m_requestedLifetimeCount = (uint)Utils.Clone(this.m_requestedLifetimeCount);
            clone.m_requestedMaxKeepAliveCount = (uint)Utils.Clone(this.m_requestedMaxKeepAliveCount);
            clone.m_maxNotificationsPerPublish = (uint)Utils.Clone(this.m_maxNotificationsPerPublish);
            clone.m_priority = (byte)Utils.Clone(this.m_priority);

            return clone;
        }
        #endregion

        #region Private Fields
        private RequestHeader m_requestHeader;
        private uint m_subscriptionId;
        private double m_requestedPublishingInterval;
        private uint m_requestedLifetimeCount;
        private uint m_requestedMaxKeepAliveCount;
        private uint m_maxNotificationsPerPublish;
        private byte m_priority;
        #endregion
    }
    #endif
    #endregion

    #region ModifySubscriptionResponse Class
    #if (!OPCUA_EXCLUDE_ModifySubscriptionResponse)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ModifySubscriptionResponse : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ModifySubscriptionResponse()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_responseHeader = new ResponseHeader();
            m_revisedPublishingInterval = (double)0;
            m_revisedLifetimeCount = (uint)0;
            m_revisedMaxKeepAliveCount = (uint)0;
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ResponseHeader", IsRequired = false, Order = 1)]
        public ResponseHeader ResponseHeader
        {
            get
            {
                return m_responseHeader;
            }

            set
            {
                m_responseHeader = value;

                if (value == null)
                {
                    m_responseHeader = new ResponseHeader();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "RevisedPublishingInterval", IsRequired = false, Order = 2)]
        public double RevisedPublishingInterval
        {
            get { return m_revisedPublishingInterval;  }
            set { m_revisedPublishingInterval = value; }
        }

        /// <remarks />
        [DataMember(Name = "RevisedLifetimeCount", IsRequired = false, Order = 3)]
        public uint RevisedLifetimeCount
        {
            get { return m_revisedLifetimeCount;  }
            set { m_revisedLifetimeCount = value; }
        }

        /// <remarks />
        [DataMember(Name = "RevisedMaxKeepAliveCount", IsRequired = false, Order = 4)]
        public uint RevisedMaxKeepAliveCount
        {
            get { return m_revisedMaxKeepAliveCount;  }
            set { m_revisedMaxKeepAliveCount = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ModifySubscriptionResponse; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ModifySubscriptionResponse_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ModifySubscriptionResponse_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("ResponseHeader", ResponseHeader, typeof(ResponseHeader));
            encoder.WriteDouble("RevisedPublishingInterval", RevisedPublishingInterval);
            encoder.WriteUInt32("RevisedLifetimeCount", RevisedLifetimeCount);
            encoder.WriteUInt32("RevisedMaxKeepAliveCount", RevisedMaxKeepAliveCount);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ResponseHeader = (ResponseHeader)decoder.ReadEncodeable("ResponseHeader", typeof(ResponseHeader));
            RevisedPublishingInterval = decoder.ReadDouble("RevisedPublishingInterval");
            RevisedLifetimeCount = decoder.ReadUInt32("RevisedLifetimeCount");
            RevisedMaxKeepAliveCount = decoder.ReadUInt32("RevisedMaxKeepAliveCount");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ModifySubscriptionResponse value = encodeable as ModifySubscriptionResponse;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_responseHeader, value.m_responseHeader)) return false;
            if (!Utils.IsEqual(m_revisedPublishingInterval, value.m_revisedPublishingInterval)) return false;
            if (!Utils.IsEqual(m_revisedLifetimeCount, value.m_revisedLifetimeCount)) return false;
            if (!Utils.IsEqual(m_revisedMaxKeepAliveCount, value.m_revisedMaxKeepAliveCount)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (ModifySubscriptionResponse)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ModifySubscriptionResponse clone = (ModifySubscriptionResponse)base.MemberwiseClone();

            clone.m_responseHeader = (ResponseHeader)Utils.Clone(this.m_responseHeader);
            clone.m_revisedPublishingInterval = (double)Utils.Clone(this.m_revisedPublishingInterval);
            clone.m_revisedLifetimeCount = (uint)Utils.Clone(this.m_revisedLifetimeCount);
            clone.m_revisedMaxKeepAliveCount = (uint)Utils.Clone(this.m_revisedMaxKeepAliveCount);

            return clone;
        }
        #endregion

        #region Private Fields
        private ResponseHeader m_responseHeader;
        private double m_revisedPublishingInterval;
        private uint m_revisedLifetimeCount;
        private uint m_revisedMaxKeepAliveCount;
        #endregion
    }
    #endif
    #endregion

    #region SetPublishingModeRequest Class
    #if (!OPCUA_EXCLUDE_SetPublishingModeRequest)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class SetPublishingModeRequest : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public SetPublishingModeRequest()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_requestHeader = new RequestHeader();
            m_publishingEnabled = true;
            m_subscriptionIds = new UInt32Collection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RequestHeader", IsRequired = false, Order = 1)]
        public RequestHeader RequestHeader
        {
            get
            {
                return m_requestHeader;
            }

            set
            {
                m_requestHeader = value;

                if (value == null)
                {
                    m_requestHeader = new RequestHeader();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "PublishingEnabled", IsRequired = false, Order = 2)]
        public bool PublishingEnabled
        {
            get { return m_publishingEnabled;  }
            set { m_publishingEnabled = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "SubscriptionIds", IsRequired = false, Order = 3)]
        public UInt32Collection SubscriptionIds
        {
            get
            {
                return m_subscriptionIds;
            }

            set
            {
                m_subscriptionIds = value;

                if (value == null)
                {
                    m_subscriptionIds = new UInt32Collection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.SetPublishingModeRequest; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.SetPublishingModeRequest_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.SetPublishingModeRequest_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("RequestHeader", RequestHeader, typeof(RequestHeader));
            encoder.WriteBoolean("PublishingEnabled", PublishingEnabled);
            encoder.WriteUInt32Array("SubscriptionIds", SubscriptionIds);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            RequestHeader = (RequestHeader)decoder.ReadEncodeable("RequestHeader", typeof(RequestHeader));
            PublishingEnabled = decoder.ReadBoolean("PublishingEnabled");
            SubscriptionIds = decoder.ReadUInt32Array("SubscriptionIds");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            SetPublishingModeRequest value = encodeable as SetPublishingModeRequest;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_requestHeader, value.m_requestHeader)) return false;
            if (!Utils.IsEqual(m_publishingEnabled, value.m_publishingEnabled)) return false;
            if (!Utils.IsEqual(m_subscriptionIds, value.m_subscriptionIds)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (SetPublishingModeRequest)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            SetPublishingModeRequest clone = (SetPublishingModeRequest)base.MemberwiseClone();

            clone.m_requestHeader = (RequestHeader)Utils.Clone(this.m_requestHeader);
            clone.m_publishingEnabled = (bool)Utils.Clone(this.m_publishingEnabled);
            clone.m_subscriptionIds = (UInt32Collection)Utils.Clone(this.m_subscriptionIds);

            return clone;
        }
        #endregion

        #region Private Fields
        private RequestHeader m_requestHeader;
        private bool m_publishingEnabled;
        private UInt32Collection m_subscriptionIds;
        #endregion
    }
    #endif
    #endregion

    #region SetPublishingModeResponse Class
    #if (!OPCUA_EXCLUDE_SetPublishingModeResponse)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class SetPublishingModeResponse : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public SetPublishingModeResponse()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_responseHeader = new ResponseHeader();
            m_results = new StatusCodeCollection();
            m_diagnosticInfos = new DiagnosticInfoCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ResponseHeader", IsRequired = false, Order = 1)]
        public ResponseHeader ResponseHeader
        {
            get
            {
                return m_responseHeader;
            }

            set
            {
                m_responseHeader = value;

                if (value == null)
                {
                    m_responseHeader = new ResponseHeader();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "Results", IsRequired = false, Order = 2)]
        public StatusCodeCollection Results
        {
            get
            {
                return m_results;
            }

            set
            {
                m_results = value;

                if (value == null)
                {
                    m_results = new StatusCodeCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "DiagnosticInfos", IsRequired = false, Order = 3)]
        public DiagnosticInfoCollection DiagnosticInfos
        {
            get
            {
                return m_diagnosticInfos;
            }

            set
            {
                m_diagnosticInfos = value;

                if (value == null)
                {
                    m_diagnosticInfos = new DiagnosticInfoCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.SetPublishingModeResponse; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.SetPublishingModeResponse_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.SetPublishingModeResponse_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("ResponseHeader", ResponseHeader, typeof(ResponseHeader));
            encoder.WriteStatusCodeArray("Results", Results);
            encoder.WriteDiagnosticInfoArray("DiagnosticInfos", DiagnosticInfos);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ResponseHeader = (ResponseHeader)decoder.ReadEncodeable("ResponseHeader", typeof(ResponseHeader));
            Results = decoder.ReadStatusCodeArray("Results");
            DiagnosticInfos = decoder.ReadDiagnosticInfoArray("DiagnosticInfos");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            SetPublishingModeResponse value = encodeable as SetPublishingModeResponse;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_responseHeader, value.m_responseHeader)) return false;
            if (!Utils.IsEqual(m_results, value.m_results)) return false;
            if (!Utils.IsEqual(m_diagnosticInfos, value.m_diagnosticInfos)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (SetPublishingModeResponse)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            SetPublishingModeResponse clone = (SetPublishingModeResponse)base.MemberwiseClone();

            clone.m_responseHeader = (ResponseHeader)Utils.Clone(this.m_responseHeader);
            clone.m_results = (StatusCodeCollection)Utils.Clone(this.m_results);
            clone.m_diagnosticInfos = (DiagnosticInfoCollection)Utils.Clone(this.m_diagnosticInfos);

            return clone;
        }
        #endregion

        #region Private Fields
        private ResponseHeader m_responseHeader;
        private StatusCodeCollection m_results;
        private DiagnosticInfoCollection m_diagnosticInfos;
        #endregion
    }
    #endif
    #endregion

    #region NotificationMessage Class
    #if (!OPCUA_EXCLUDE_NotificationMessage)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class NotificationMessage : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public NotificationMessage()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_sequenceNumber = (uint)0;
            m_publishTime = DateTime.MinValue;
            m_notificationData = new ExtensionObjectCollection();
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "SequenceNumber", IsRequired = false, Order = 1)]
        public uint SequenceNumber
        {
            get { return m_sequenceNumber;  }
            set { m_sequenceNumber = value; }
        }

        /// <remarks />
        [DataMember(Name = "PublishTime", IsRequired = false, Order = 2)]
        public DateTime PublishTime
        {
            get { return m_publishTime;  }
            set { m_publishTime = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "NotificationData", IsRequired = false, Order = 3)]
        public ExtensionObjectCollection NotificationData
        {
            get
            {
                return m_notificationData;
            }

            set
            {
                m_notificationData = value;

                if (value == null)
                {
                    m_notificationData = new ExtensionObjectCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.NotificationMessage; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.NotificationMessage_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.NotificationMessage_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteUInt32("SequenceNumber", SequenceNumber);
            encoder.WriteDateTime("PublishTime", PublishTime);
            encoder.WriteExtensionObjectArray("NotificationData", NotificationData);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            SequenceNumber = decoder.ReadUInt32("SequenceNumber");
            PublishTime = decoder.ReadDateTime("PublishTime");
            NotificationData = decoder.ReadExtensionObjectArray("NotificationData");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            NotificationMessage value = encodeable as NotificationMessage;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_sequenceNumber, value.m_sequenceNumber)) return false;
            if (!Utils.IsEqual(m_publishTime, value.m_publishTime)) return false;
            if (!Utils.IsEqual(m_notificationData, value.m_notificationData)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (NotificationMessage)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            NotificationMessage clone = (NotificationMessage)base.MemberwiseClone();

            clone.m_sequenceNumber = (uint)Utils.Clone(this.m_sequenceNumber);
            clone.m_publishTime = (DateTime)Utils.Clone(this.m_publishTime);
            clone.m_notificationData = (ExtensionObjectCollection)Utils.Clone(this.m_notificationData);

            return clone;
        }
        #endregion

        #region Private Fields
        private uint m_sequenceNumber;
        private DateTime m_publishTime;
        private ExtensionObjectCollection m_notificationData;
        #endregion
    }
    #endif
    #endregion

    #region NotificationData Class
    #if (!OPCUA_EXCLUDE_NotificationData)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class NotificationData : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public NotificationData()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
        }
        #endregion

        #region Public Properties
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.NotificationData; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.NotificationData_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.NotificationData_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);


            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            NotificationData value = encodeable as NotificationData;

            if (value == null)
            {
                return false;
            }


            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (NotificationData)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            NotificationData clone = (NotificationData)base.MemberwiseClone();


            return clone;
        }
        #endregion

        #region Private Fields
        #endregion
    }
    #endif
    #endregion

    #region DataChangeNotification Class
    #if (!OPCUA_EXCLUDE_DataChangeNotification)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class DataChangeNotification : NotificationData
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public DataChangeNotification()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_monitoredItems = new MonitoredItemNotificationCollection();
            m_diagnosticInfos = new DiagnosticInfoCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "MonitoredItems", IsRequired = false, Order = 1)]
        public MonitoredItemNotificationCollection MonitoredItems
        {
            get
            {
                return m_monitoredItems;
            }

            set
            {
                m_monitoredItems = value;

                if (value == null)
                {
                    m_monitoredItems = new MonitoredItemNotificationCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "DiagnosticInfos", IsRequired = false, Order = 2)]
        public DiagnosticInfoCollection DiagnosticInfos
        {
            get
            {
                return m_diagnosticInfos;
            }

            set
            {
                m_diagnosticInfos = value;

                if (value == null)
                {
                    m_diagnosticInfos = new DiagnosticInfoCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.DataChangeNotification; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.DataChangeNotification_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.DataChangeNotification_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeableArray("MonitoredItems", MonitoredItems.ToArray(), typeof(MonitoredItemNotification));
            encoder.WriteDiagnosticInfoArray("DiagnosticInfos", DiagnosticInfos);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            MonitoredItems = (MonitoredItemNotificationCollection)decoder.ReadEncodeableArray("MonitoredItems", typeof(MonitoredItemNotification));
            DiagnosticInfos = decoder.ReadDiagnosticInfoArray("DiagnosticInfos");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            DataChangeNotification value = encodeable as DataChangeNotification;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_monitoredItems, value.m_monitoredItems)) return false;
            if (!Utils.IsEqual(m_diagnosticInfos, value.m_diagnosticInfos)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (DataChangeNotification)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            DataChangeNotification clone = (DataChangeNotification)base.MemberwiseClone();

            clone.m_monitoredItems = (MonitoredItemNotificationCollection)Utils.Clone(this.m_monitoredItems);
            clone.m_diagnosticInfos = (DiagnosticInfoCollection)Utils.Clone(this.m_diagnosticInfos);

            return clone;
        }
        #endregion

        #region Private Fields
        private MonitoredItemNotificationCollection m_monitoredItems;
        private DiagnosticInfoCollection m_diagnosticInfos;
        #endregion
    }
    #endif
    #endregion

    #region MonitoredItemNotification Class
    #if (!OPCUA_EXCLUDE_MonitoredItemNotification)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class MonitoredItemNotification : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public MonitoredItemNotification()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_clientHandle = (uint)0;
            m_value = new DataValue();
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "ClientHandle", IsRequired = false, Order = 1)]
        public uint ClientHandle
        {
            get { return m_clientHandle;  }
            set { m_clientHandle = value; }
        }

        /// <remarks />
        [DataMember(Name = "Value", IsRequired = false, Order = 2)]
        public DataValue Value
        {
            get { return m_value;  }
            set { m_value = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.MonitoredItemNotification; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.MonitoredItemNotification_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.MonitoredItemNotification_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteUInt32("ClientHandle", ClientHandle);
            encoder.WriteDataValue("Value", Value);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ClientHandle = decoder.ReadUInt32("ClientHandle");
            Value = decoder.ReadDataValue("Value");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            MonitoredItemNotification value = encodeable as MonitoredItemNotification;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_clientHandle, value.m_clientHandle)) return false;
            if (!Utils.IsEqual(m_value, value.m_value)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (MonitoredItemNotification)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            MonitoredItemNotification clone = (MonitoredItemNotification)base.MemberwiseClone();

            clone.m_clientHandle = (uint)Utils.Clone(this.m_clientHandle);
            clone.m_value = (DataValue)Utils.Clone(this.m_value);

            return clone;
        }
        #endregion

        #region Private Fields
        private uint m_clientHandle;
        private DataValue m_value;
        #endregion
    }

    #region MonitoredItemNotificationCollection Class
    /// <summary>
    /// A collection of MonitoredItemNotification objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfMonitoredItemNotification", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "MonitoredItemNotification")]
    #if !NET_STANDARD
    public partial class MonitoredItemNotificationCollection : List<MonitoredItemNotification>, ICloneable
    #else
    public partial class MonitoredItemNotificationCollection : List<MonitoredItemNotification>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public MonitoredItemNotificationCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public MonitoredItemNotificationCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public MonitoredItemNotificationCollection(IEnumerable<MonitoredItemNotification> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator MonitoredItemNotificationCollection(MonitoredItemNotification[] values)
        {
            if (values != null)
            {
                return new MonitoredItemNotificationCollection(values);
            }

            return new MonitoredItemNotificationCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator MonitoredItemNotification[](MonitoredItemNotificationCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (MonitoredItemNotificationCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            MonitoredItemNotificationCollection clone = new MonitoredItemNotificationCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((MonitoredItemNotification)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region EventNotificationList Class
    #if (!OPCUA_EXCLUDE_EventNotificationList)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class EventNotificationList : NotificationData
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public EventNotificationList()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_events = new EventFieldListCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "Events", IsRequired = false, Order = 1)]
        public EventFieldListCollection Events
        {
            get
            {
                return m_events;
            }

            set
            {
                m_events = value;

                if (value == null)
                {
                    m_events = new EventFieldListCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.EventNotificationList; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.EventNotificationList_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.EventNotificationList_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeableArray("Events", Events.ToArray(), typeof(EventFieldList));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            Events = (EventFieldListCollection)decoder.ReadEncodeableArray("Events", typeof(EventFieldList));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            EventNotificationList value = encodeable as EventNotificationList;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_events, value.m_events)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (EventNotificationList)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            EventNotificationList clone = (EventNotificationList)base.MemberwiseClone();

            clone.m_events = (EventFieldListCollection)Utils.Clone(this.m_events);

            return clone;
        }
        #endregion

        #region Private Fields
        private EventFieldListCollection m_events;
        #endregion
    }
    #endif
    #endregion

    #region EventFieldList Class
    #if (!OPCUA_EXCLUDE_EventFieldList)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class EventFieldList : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public EventFieldList()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_clientHandle = (uint)0;
            m_eventFields = new VariantCollection();
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "ClientHandle", IsRequired = false, Order = 1)]
        public uint ClientHandle
        {
            get { return m_clientHandle;  }
            set { m_clientHandle = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "EventFields", IsRequired = false, Order = 2)]
        public VariantCollection EventFields
        {
            get
            {
                return m_eventFields;
            }

            set
            {
                m_eventFields = value;

                if (value == null)
                {
                    m_eventFields = new VariantCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.EventFieldList; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.EventFieldList_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.EventFieldList_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteUInt32("ClientHandle", ClientHandle);
            encoder.WriteVariantArray("EventFields", EventFields);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ClientHandle = decoder.ReadUInt32("ClientHandle");
            EventFields = decoder.ReadVariantArray("EventFields");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            EventFieldList value = encodeable as EventFieldList;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_clientHandle, value.m_clientHandle)) return false;
            if (!Utils.IsEqual(m_eventFields, value.m_eventFields)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (EventFieldList)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            EventFieldList clone = (EventFieldList)base.MemberwiseClone();

            clone.m_clientHandle = (uint)Utils.Clone(this.m_clientHandle);
            clone.m_eventFields = (VariantCollection)Utils.Clone(this.m_eventFields);

            return clone;
        }
        #endregion

        #region Private Fields
        private uint m_clientHandle;
        private VariantCollection m_eventFields;
        #endregion
    }

    #region EventFieldListCollection Class
    /// <summary>
    /// A collection of EventFieldList objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfEventFieldList", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "EventFieldList")]
    #if !NET_STANDARD
    public partial class EventFieldListCollection : List<EventFieldList>, ICloneable
    #else
    public partial class EventFieldListCollection : List<EventFieldList>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public EventFieldListCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public EventFieldListCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public EventFieldListCollection(IEnumerable<EventFieldList> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator EventFieldListCollection(EventFieldList[] values)
        {
            if (values != null)
            {
                return new EventFieldListCollection(values);
            }

            return new EventFieldListCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator EventFieldList[](EventFieldListCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (EventFieldListCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            EventFieldListCollection clone = new EventFieldListCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((EventFieldList)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region HistoryEventFieldList Class
    #if (!OPCUA_EXCLUDE_HistoryEventFieldList)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class HistoryEventFieldList : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public HistoryEventFieldList()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_eventFields = new VariantCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "EventFields", IsRequired = false, Order = 1)]
        public VariantCollection EventFields
        {
            get
            {
                return m_eventFields;
            }

            set
            {
                m_eventFields = value;

                if (value == null)
                {
                    m_eventFields = new VariantCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.HistoryEventFieldList; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.HistoryEventFieldList_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.HistoryEventFieldList_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteVariantArray("EventFields", EventFields);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            EventFields = decoder.ReadVariantArray("EventFields");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            HistoryEventFieldList value = encodeable as HistoryEventFieldList;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_eventFields, value.m_eventFields)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (HistoryEventFieldList)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            HistoryEventFieldList clone = (HistoryEventFieldList)base.MemberwiseClone();

            clone.m_eventFields = (VariantCollection)Utils.Clone(this.m_eventFields);

            return clone;
        }
        #endregion

        #region Private Fields
        private VariantCollection m_eventFields;
        #endregion
    }

    #region HistoryEventFieldListCollection Class
    /// <summary>
    /// A collection of HistoryEventFieldList objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfHistoryEventFieldList", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "HistoryEventFieldList")]
    #if !NET_STANDARD
    public partial class HistoryEventFieldListCollection : List<HistoryEventFieldList>, ICloneable
    #else
    public partial class HistoryEventFieldListCollection : List<HistoryEventFieldList>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public HistoryEventFieldListCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public HistoryEventFieldListCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public HistoryEventFieldListCollection(IEnumerable<HistoryEventFieldList> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator HistoryEventFieldListCollection(HistoryEventFieldList[] values)
        {
            if (values != null)
            {
                return new HistoryEventFieldListCollection(values);
            }

            return new HistoryEventFieldListCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator HistoryEventFieldList[](HistoryEventFieldListCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (HistoryEventFieldListCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            HistoryEventFieldListCollection clone = new HistoryEventFieldListCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((HistoryEventFieldList)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region StatusChangeNotification Class
    #if (!OPCUA_EXCLUDE_StatusChangeNotification)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class StatusChangeNotification : NotificationData
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public StatusChangeNotification()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_status = StatusCodes.Good;
            m_diagnosticInfo = null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "Status", IsRequired = false, Order = 1)]
        public StatusCode Status
        {
            get { return m_status;  }
            set { m_status = value; }
        }

        /// <remarks />
        [DataMember(Name = "DiagnosticInfo", IsRequired = false, Order = 2)]
        public DiagnosticInfo DiagnosticInfo
        {
            get { return m_diagnosticInfo;  }
            set { m_diagnosticInfo = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public override ExpandedNodeId TypeId
        {
            get { return DataTypeIds.StatusChangeNotification; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public override ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.StatusChangeNotification_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public override ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.StatusChangeNotification_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public override void Encode(IEncoder encoder)
        {
            base.Encode(encoder);

            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteStatusCode("Status", Status);
            encoder.WriteDiagnosticInfo("DiagnosticInfo", DiagnosticInfo);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public override void Decode(IDecoder decoder)
        {
            base.Decode(decoder);

            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            Status = decoder.ReadStatusCode("Status");
            DiagnosticInfo = decoder.ReadDiagnosticInfo("DiagnosticInfo");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public override bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            StatusChangeNotification value = encodeable as StatusChangeNotification;

            if (value == null)
            {
                return false;
            }

            if (!base.IsEqual(encodeable)) return false;
            if (!Utils.IsEqual(m_status, value.m_status)) return false;
            if (!Utils.IsEqual(m_diagnosticInfo, value.m_diagnosticInfo)) return false;

            return true;
        }    

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public override object Clone()
        {
            return (StatusChangeNotification)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            StatusChangeNotification clone = (StatusChangeNotification)base.MemberwiseClone();

            clone.m_status = (StatusCode)Utils.Clone(this.m_status);
            clone.m_diagnosticInfo = (DiagnosticInfo)Utils.Clone(this.m_diagnosticInfo);

            return clone;
        }
        #endregion

        #region Private Fields
        private StatusCode m_status;
        private DiagnosticInfo m_diagnosticInfo;
        #endregion
    }
    #endif
    #endregion

    #region SubscriptionAcknowledgement Class
    #if (!OPCUA_EXCLUDE_SubscriptionAcknowledgement)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class SubscriptionAcknowledgement : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public SubscriptionAcknowledgement()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_subscriptionId = (uint)0;
            m_sequenceNumber = (uint)0;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "SubscriptionId", IsRequired = false, Order = 1)]
        public uint SubscriptionId
        {
            get { return m_subscriptionId;  }
            set { m_subscriptionId = value; }
        }

        /// <remarks />
        [DataMember(Name = "SequenceNumber", IsRequired = false, Order = 2)]
        public uint SequenceNumber
        {
            get { return m_sequenceNumber;  }
            set { m_sequenceNumber = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.SubscriptionAcknowledgement; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.SubscriptionAcknowledgement_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.SubscriptionAcknowledgement_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteUInt32("SubscriptionId", SubscriptionId);
            encoder.WriteUInt32("SequenceNumber", SequenceNumber);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            SubscriptionId = decoder.ReadUInt32("SubscriptionId");
            SequenceNumber = decoder.ReadUInt32("SequenceNumber");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            SubscriptionAcknowledgement value = encodeable as SubscriptionAcknowledgement;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_subscriptionId, value.m_subscriptionId)) return false;
            if (!Utils.IsEqual(m_sequenceNumber, value.m_sequenceNumber)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (SubscriptionAcknowledgement)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            SubscriptionAcknowledgement clone = (SubscriptionAcknowledgement)base.MemberwiseClone();

            clone.m_subscriptionId = (uint)Utils.Clone(this.m_subscriptionId);
            clone.m_sequenceNumber = (uint)Utils.Clone(this.m_sequenceNumber);

            return clone;
        }
        #endregion

        #region Private Fields
        private uint m_subscriptionId;
        private uint m_sequenceNumber;
        #endregion
    }

    #region SubscriptionAcknowledgementCollection Class
    /// <summary>
    /// A collection of SubscriptionAcknowledgement objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfSubscriptionAcknowledgement", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "SubscriptionAcknowledgement")]
    #if !NET_STANDARD
    public partial class SubscriptionAcknowledgementCollection : List<SubscriptionAcknowledgement>, ICloneable
    #else
    public partial class SubscriptionAcknowledgementCollection : List<SubscriptionAcknowledgement>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public SubscriptionAcknowledgementCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public SubscriptionAcknowledgementCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public SubscriptionAcknowledgementCollection(IEnumerable<SubscriptionAcknowledgement> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator SubscriptionAcknowledgementCollection(SubscriptionAcknowledgement[] values)
        {
            if (values != null)
            {
                return new SubscriptionAcknowledgementCollection(values);
            }

            return new SubscriptionAcknowledgementCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator SubscriptionAcknowledgement[](SubscriptionAcknowledgementCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (SubscriptionAcknowledgementCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            SubscriptionAcknowledgementCollection clone = new SubscriptionAcknowledgementCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((SubscriptionAcknowledgement)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region PublishRequest Class
    #if (!OPCUA_EXCLUDE_PublishRequest)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class PublishRequest : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public PublishRequest()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_requestHeader = new RequestHeader();
            m_subscriptionAcknowledgements = new SubscriptionAcknowledgementCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RequestHeader", IsRequired = false, Order = 1)]
        public RequestHeader RequestHeader
        {
            get
            {
                return m_requestHeader;
            }

            set
            {
                m_requestHeader = value;

                if (value == null)
                {
                    m_requestHeader = new RequestHeader();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "SubscriptionAcknowledgements", IsRequired = false, Order = 2)]
        public SubscriptionAcknowledgementCollection SubscriptionAcknowledgements
        {
            get
            {
                return m_subscriptionAcknowledgements;
            }

            set
            {
                m_subscriptionAcknowledgements = value;

                if (value == null)
                {
                    m_subscriptionAcknowledgements = new SubscriptionAcknowledgementCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.PublishRequest; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.PublishRequest_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.PublishRequest_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("RequestHeader", RequestHeader, typeof(RequestHeader));
            encoder.WriteEncodeableArray("SubscriptionAcknowledgements", SubscriptionAcknowledgements.ToArray(), typeof(SubscriptionAcknowledgement));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            RequestHeader = (RequestHeader)decoder.ReadEncodeable("RequestHeader", typeof(RequestHeader));
            SubscriptionAcknowledgements = (SubscriptionAcknowledgementCollection)decoder.ReadEncodeableArray("SubscriptionAcknowledgements", typeof(SubscriptionAcknowledgement));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            PublishRequest value = encodeable as PublishRequest;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_requestHeader, value.m_requestHeader)) return false;
            if (!Utils.IsEqual(m_subscriptionAcknowledgements, value.m_subscriptionAcknowledgements)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (PublishRequest)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            PublishRequest clone = (PublishRequest)base.MemberwiseClone();

            clone.m_requestHeader = (RequestHeader)Utils.Clone(this.m_requestHeader);
            clone.m_subscriptionAcknowledgements = (SubscriptionAcknowledgementCollection)Utils.Clone(this.m_subscriptionAcknowledgements);

            return clone;
        }
        #endregion

        #region Private Fields
        private RequestHeader m_requestHeader;
        private SubscriptionAcknowledgementCollection m_subscriptionAcknowledgements;
        #endregion
    }
    #endif
    #endregion

    #region PublishResponse Class
    #if (!OPCUA_EXCLUDE_PublishResponse)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class PublishResponse : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public PublishResponse()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_responseHeader = new ResponseHeader();
            m_subscriptionId = (uint)0;
            m_availableSequenceNumbers = new UInt32Collection();
            m_moreNotifications = true;
            m_notificationMessage = new NotificationMessage();
            m_results = new StatusCodeCollection();
            m_diagnosticInfos = new DiagnosticInfoCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ResponseHeader", IsRequired = false, Order = 1)]
        public ResponseHeader ResponseHeader
        {
            get
            {
                return m_responseHeader;
            }

            set
            {
                m_responseHeader = value;

                if (value == null)
                {
                    m_responseHeader = new ResponseHeader();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "SubscriptionId", IsRequired = false, Order = 2)]
        public uint SubscriptionId
        {
            get { return m_subscriptionId;  }
            set { m_subscriptionId = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "AvailableSequenceNumbers", IsRequired = false, Order = 3)]
        public UInt32Collection AvailableSequenceNumbers
        {
            get
            {
                return m_availableSequenceNumbers;
            }

            set
            {
                m_availableSequenceNumbers = value;

                if (value == null)
                {
                    m_availableSequenceNumbers = new UInt32Collection();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "MoreNotifications", IsRequired = false, Order = 4)]
        public bool MoreNotifications
        {
            get { return m_moreNotifications;  }
            set { m_moreNotifications = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "NotificationMessage", IsRequired = false, Order = 5)]
        public NotificationMessage NotificationMessage
        {
            get
            {
                return m_notificationMessage;
            }

            set
            {
                m_notificationMessage = value;

                if (value == null)
                {
                    m_notificationMessage = new NotificationMessage();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "Results", IsRequired = false, Order = 6)]
        public StatusCodeCollection Results
        {
            get
            {
                return m_results;
            }

            set
            {
                m_results = value;

                if (value == null)
                {
                    m_results = new StatusCodeCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "DiagnosticInfos", IsRequired = false, Order = 7)]
        public DiagnosticInfoCollection DiagnosticInfos
        {
            get
            {
                return m_diagnosticInfos;
            }

            set
            {
                m_diagnosticInfos = value;

                if (value == null)
                {
                    m_diagnosticInfos = new DiagnosticInfoCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.PublishResponse; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.PublishResponse_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.PublishResponse_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("ResponseHeader", ResponseHeader, typeof(ResponseHeader));
            encoder.WriteUInt32("SubscriptionId", SubscriptionId);
            encoder.WriteUInt32Array("AvailableSequenceNumbers", AvailableSequenceNumbers);
            encoder.WriteBoolean("MoreNotifications", MoreNotifications);
            encoder.WriteEncodeable("NotificationMessage", NotificationMessage, typeof(NotificationMessage));
            encoder.WriteStatusCodeArray("Results", Results);
            encoder.WriteDiagnosticInfoArray("DiagnosticInfos", DiagnosticInfos);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ResponseHeader = (ResponseHeader)decoder.ReadEncodeable("ResponseHeader", typeof(ResponseHeader));
            SubscriptionId = decoder.ReadUInt32("SubscriptionId");
            AvailableSequenceNumbers = decoder.ReadUInt32Array("AvailableSequenceNumbers");
            MoreNotifications = decoder.ReadBoolean("MoreNotifications");
            NotificationMessage = (NotificationMessage)decoder.ReadEncodeable("NotificationMessage", typeof(NotificationMessage));
            Results = decoder.ReadStatusCodeArray("Results");
            DiagnosticInfos = decoder.ReadDiagnosticInfoArray("DiagnosticInfos");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            PublishResponse value = encodeable as PublishResponse;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_responseHeader, value.m_responseHeader)) return false;
            if (!Utils.IsEqual(m_subscriptionId, value.m_subscriptionId)) return false;
            if (!Utils.IsEqual(m_availableSequenceNumbers, value.m_availableSequenceNumbers)) return false;
            if (!Utils.IsEqual(m_moreNotifications, value.m_moreNotifications)) return false;
            if (!Utils.IsEqual(m_notificationMessage, value.m_notificationMessage)) return false;
            if (!Utils.IsEqual(m_results, value.m_results)) return false;
            if (!Utils.IsEqual(m_diagnosticInfos, value.m_diagnosticInfos)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (PublishResponse)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            PublishResponse clone = (PublishResponse)base.MemberwiseClone();

            clone.m_responseHeader = (ResponseHeader)Utils.Clone(this.m_responseHeader);
            clone.m_subscriptionId = (uint)Utils.Clone(this.m_subscriptionId);
            clone.m_availableSequenceNumbers = (UInt32Collection)Utils.Clone(this.m_availableSequenceNumbers);
            clone.m_moreNotifications = (bool)Utils.Clone(this.m_moreNotifications);
            clone.m_notificationMessage = (NotificationMessage)Utils.Clone(this.m_notificationMessage);
            clone.m_results = (StatusCodeCollection)Utils.Clone(this.m_results);
            clone.m_diagnosticInfos = (DiagnosticInfoCollection)Utils.Clone(this.m_diagnosticInfos);

            return clone;
        }
        #endregion

        #region Private Fields
        private ResponseHeader m_responseHeader;
        private uint m_subscriptionId;
        private UInt32Collection m_availableSequenceNumbers;
        private bool m_moreNotifications;
        private NotificationMessage m_notificationMessage;
        private StatusCodeCollection m_results;
        private DiagnosticInfoCollection m_diagnosticInfos;
        #endregion
    }
    #endif
    #endregion

    #region RepublishRequest Class
    #if (!OPCUA_EXCLUDE_RepublishRequest)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class RepublishRequest : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public RepublishRequest()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_requestHeader = new RequestHeader();
            m_subscriptionId = (uint)0;
            m_retransmitSequenceNumber = (uint)0;
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RequestHeader", IsRequired = false, Order = 1)]
        public RequestHeader RequestHeader
        {
            get
            {
                return m_requestHeader;
            }

            set
            {
                m_requestHeader = value;

                if (value == null)
                {
                    m_requestHeader = new RequestHeader();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "SubscriptionId", IsRequired = false, Order = 2)]
        public uint SubscriptionId
        {
            get { return m_subscriptionId;  }
            set { m_subscriptionId = value; }
        }

        /// <remarks />
        [DataMember(Name = "RetransmitSequenceNumber", IsRequired = false, Order = 3)]
        public uint RetransmitSequenceNumber
        {
            get { return m_retransmitSequenceNumber;  }
            set { m_retransmitSequenceNumber = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.RepublishRequest; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.RepublishRequest_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.RepublishRequest_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("RequestHeader", RequestHeader, typeof(RequestHeader));
            encoder.WriteUInt32("SubscriptionId", SubscriptionId);
            encoder.WriteUInt32("RetransmitSequenceNumber", RetransmitSequenceNumber);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            RequestHeader = (RequestHeader)decoder.ReadEncodeable("RequestHeader", typeof(RequestHeader));
            SubscriptionId = decoder.ReadUInt32("SubscriptionId");
            RetransmitSequenceNumber = decoder.ReadUInt32("RetransmitSequenceNumber");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            RepublishRequest value = encodeable as RepublishRequest;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_requestHeader, value.m_requestHeader)) return false;
            if (!Utils.IsEqual(m_subscriptionId, value.m_subscriptionId)) return false;
            if (!Utils.IsEqual(m_retransmitSequenceNumber, value.m_retransmitSequenceNumber)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (RepublishRequest)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            RepublishRequest clone = (RepublishRequest)base.MemberwiseClone();

            clone.m_requestHeader = (RequestHeader)Utils.Clone(this.m_requestHeader);
            clone.m_subscriptionId = (uint)Utils.Clone(this.m_subscriptionId);
            clone.m_retransmitSequenceNumber = (uint)Utils.Clone(this.m_retransmitSequenceNumber);

            return clone;
        }
        #endregion

        #region Private Fields
        private RequestHeader m_requestHeader;
        private uint m_subscriptionId;
        private uint m_retransmitSequenceNumber;
        #endregion
    }
    #endif
    #endregion

    #region RepublishResponse Class
    #if (!OPCUA_EXCLUDE_RepublishResponse)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class RepublishResponse : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public RepublishResponse()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_responseHeader = new ResponseHeader();
            m_notificationMessage = new NotificationMessage();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ResponseHeader", IsRequired = false, Order = 1)]
        public ResponseHeader ResponseHeader
        {
            get
            {
                return m_responseHeader;
            }

            set
            {
                m_responseHeader = value;

                if (value == null)
                {
                    m_responseHeader = new ResponseHeader();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "NotificationMessage", IsRequired = false, Order = 2)]
        public NotificationMessage NotificationMessage
        {
            get
            {
                return m_notificationMessage;
            }

            set
            {
                m_notificationMessage = value;

                if (value == null)
                {
                    m_notificationMessage = new NotificationMessage();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.RepublishResponse; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.RepublishResponse_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.RepublishResponse_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("ResponseHeader", ResponseHeader, typeof(ResponseHeader));
            encoder.WriteEncodeable("NotificationMessage", NotificationMessage, typeof(NotificationMessage));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ResponseHeader = (ResponseHeader)decoder.ReadEncodeable("ResponseHeader", typeof(ResponseHeader));
            NotificationMessage = (NotificationMessage)decoder.ReadEncodeable("NotificationMessage", typeof(NotificationMessage));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            RepublishResponse value = encodeable as RepublishResponse;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_responseHeader, value.m_responseHeader)) return false;
            if (!Utils.IsEqual(m_notificationMessage, value.m_notificationMessage)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (RepublishResponse)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            RepublishResponse clone = (RepublishResponse)base.MemberwiseClone();

            clone.m_responseHeader = (ResponseHeader)Utils.Clone(this.m_responseHeader);
            clone.m_notificationMessage = (NotificationMessage)Utils.Clone(this.m_notificationMessage);

            return clone;
        }
        #endregion

        #region Private Fields
        private ResponseHeader m_responseHeader;
        private NotificationMessage m_notificationMessage;
        #endregion
    }
    #endif
    #endregion

    #region TransferResult Class
    #if (!OPCUA_EXCLUDE_TransferResult)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class TransferResult : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public TransferResult()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_statusCode = StatusCodes.Good;
            m_availableSequenceNumbers = new UInt32Collection();
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "StatusCode", IsRequired = false, Order = 1)]
        public StatusCode StatusCode
        {
            get { return m_statusCode;  }
            set { m_statusCode = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "AvailableSequenceNumbers", IsRequired = false, Order = 2)]
        public UInt32Collection AvailableSequenceNumbers
        {
            get
            {
                return m_availableSequenceNumbers;
            }

            set
            {
                m_availableSequenceNumbers = value;

                if (value == null)
                {
                    m_availableSequenceNumbers = new UInt32Collection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.TransferResult; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.TransferResult_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.TransferResult_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteStatusCode("StatusCode", StatusCode);
            encoder.WriteUInt32Array("AvailableSequenceNumbers", AvailableSequenceNumbers);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            StatusCode = decoder.ReadStatusCode("StatusCode");
            AvailableSequenceNumbers = decoder.ReadUInt32Array("AvailableSequenceNumbers");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            TransferResult value = encodeable as TransferResult;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_statusCode, value.m_statusCode)) return false;
            if (!Utils.IsEqual(m_availableSequenceNumbers, value.m_availableSequenceNumbers)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (TransferResult)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            TransferResult clone = (TransferResult)base.MemberwiseClone();

            clone.m_statusCode = (StatusCode)Utils.Clone(this.m_statusCode);
            clone.m_availableSequenceNumbers = (UInt32Collection)Utils.Clone(this.m_availableSequenceNumbers);

            return clone;
        }
        #endregion

        #region Private Fields
        private StatusCode m_statusCode;
        private UInt32Collection m_availableSequenceNumbers;
        #endregion
    }

    #region TransferResultCollection Class
    /// <summary>
    /// A collection of TransferResult objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfTransferResult", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "TransferResult")]
    #if !NET_STANDARD
    public partial class TransferResultCollection : List<TransferResult>, ICloneable
    #else
    public partial class TransferResultCollection : List<TransferResult>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public TransferResultCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public TransferResultCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public TransferResultCollection(IEnumerable<TransferResult> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator TransferResultCollection(TransferResult[] values)
        {
            if (values != null)
            {
                return new TransferResultCollection(values);
            }

            return new TransferResultCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator TransferResult[](TransferResultCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (TransferResultCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            TransferResultCollection clone = new TransferResultCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((TransferResult)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region TransferSubscriptionsRequest Class
    #if (!OPCUA_EXCLUDE_TransferSubscriptionsRequest)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class TransferSubscriptionsRequest : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public TransferSubscriptionsRequest()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_requestHeader = new RequestHeader();
            m_subscriptionIds = new UInt32Collection();
            m_sendInitialValues = true;
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RequestHeader", IsRequired = false, Order = 1)]
        public RequestHeader RequestHeader
        {
            get
            {
                return m_requestHeader;
            }

            set
            {
                m_requestHeader = value;

                if (value == null)
                {
                    m_requestHeader = new RequestHeader();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "SubscriptionIds", IsRequired = false, Order = 2)]
        public UInt32Collection SubscriptionIds
        {
            get
            {
                return m_subscriptionIds;
            }

            set
            {
                m_subscriptionIds = value;

                if (value == null)
                {
                    m_subscriptionIds = new UInt32Collection();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "SendInitialValues", IsRequired = false, Order = 3)]
        public bool SendInitialValues
        {
            get { return m_sendInitialValues;  }
            set { m_sendInitialValues = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.TransferSubscriptionsRequest; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.TransferSubscriptionsRequest_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.TransferSubscriptionsRequest_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("RequestHeader", RequestHeader, typeof(RequestHeader));
            encoder.WriteUInt32Array("SubscriptionIds", SubscriptionIds);
            encoder.WriteBoolean("SendInitialValues", SendInitialValues);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            RequestHeader = (RequestHeader)decoder.ReadEncodeable("RequestHeader", typeof(RequestHeader));
            SubscriptionIds = decoder.ReadUInt32Array("SubscriptionIds");
            SendInitialValues = decoder.ReadBoolean("SendInitialValues");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            TransferSubscriptionsRequest value = encodeable as TransferSubscriptionsRequest;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_requestHeader, value.m_requestHeader)) return false;
            if (!Utils.IsEqual(m_subscriptionIds, value.m_subscriptionIds)) return false;
            if (!Utils.IsEqual(m_sendInitialValues, value.m_sendInitialValues)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (TransferSubscriptionsRequest)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            TransferSubscriptionsRequest clone = (TransferSubscriptionsRequest)base.MemberwiseClone();

            clone.m_requestHeader = (RequestHeader)Utils.Clone(this.m_requestHeader);
            clone.m_subscriptionIds = (UInt32Collection)Utils.Clone(this.m_subscriptionIds);
            clone.m_sendInitialValues = (bool)Utils.Clone(this.m_sendInitialValues);

            return clone;
        }
        #endregion

        #region Private Fields
        private RequestHeader m_requestHeader;
        private UInt32Collection m_subscriptionIds;
        private bool m_sendInitialValues;
        #endregion
    }
    #endif
    #endregion

    #region TransferSubscriptionsResponse Class
    #if (!OPCUA_EXCLUDE_TransferSubscriptionsResponse)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class TransferSubscriptionsResponse : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public TransferSubscriptionsResponse()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_responseHeader = new ResponseHeader();
            m_results = new TransferResultCollection();
            m_diagnosticInfos = new DiagnosticInfoCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ResponseHeader", IsRequired = false, Order = 1)]
        public ResponseHeader ResponseHeader
        {
            get
            {
                return m_responseHeader;
            }

            set
            {
                m_responseHeader = value;

                if (value == null)
                {
                    m_responseHeader = new ResponseHeader();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "Results", IsRequired = false, Order = 2)]
        public TransferResultCollection Results
        {
            get
            {
                return m_results;
            }

            set
            {
                m_results = value;

                if (value == null)
                {
                    m_results = new TransferResultCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "DiagnosticInfos", IsRequired = false, Order = 3)]
        public DiagnosticInfoCollection DiagnosticInfos
        {
            get
            {
                return m_diagnosticInfos;
            }

            set
            {
                m_diagnosticInfos = value;

                if (value == null)
                {
                    m_diagnosticInfos = new DiagnosticInfoCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.TransferSubscriptionsResponse; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.TransferSubscriptionsResponse_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.TransferSubscriptionsResponse_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("ResponseHeader", ResponseHeader, typeof(ResponseHeader));
            encoder.WriteEncodeableArray("Results", Results.ToArray(), typeof(TransferResult));
            encoder.WriteDiagnosticInfoArray("DiagnosticInfos", DiagnosticInfos);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ResponseHeader = (ResponseHeader)decoder.ReadEncodeable("ResponseHeader", typeof(ResponseHeader));
            Results = (TransferResultCollection)decoder.ReadEncodeableArray("Results", typeof(TransferResult));
            DiagnosticInfos = decoder.ReadDiagnosticInfoArray("DiagnosticInfos");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            TransferSubscriptionsResponse value = encodeable as TransferSubscriptionsResponse;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_responseHeader, value.m_responseHeader)) return false;
            if (!Utils.IsEqual(m_results, value.m_results)) return false;
            if (!Utils.IsEqual(m_diagnosticInfos, value.m_diagnosticInfos)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (TransferSubscriptionsResponse)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            TransferSubscriptionsResponse clone = (TransferSubscriptionsResponse)base.MemberwiseClone();

            clone.m_responseHeader = (ResponseHeader)Utils.Clone(this.m_responseHeader);
            clone.m_results = (TransferResultCollection)Utils.Clone(this.m_results);
            clone.m_diagnosticInfos = (DiagnosticInfoCollection)Utils.Clone(this.m_diagnosticInfos);

            return clone;
        }
        #endregion

        #region Private Fields
        private ResponseHeader m_responseHeader;
        private TransferResultCollection m_results;
        private DiagnosticInfoCollection m_diagnosticInfos;
        #endregion
    }
    #endif
    #endregion

    #region DeleteSubscriptionsRequest Class
    #if (!OPCUA_EXCLUDE_DeleteSubscriptionsRequest)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class DeleteSubscriptionsRequest : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public DeleteSubscriptionsRequest()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_requestHeader = new RequestHeader();
            m_subscriptionIds = new UInt32Collection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RequestHeader", IsRequired = false, Order = 1)]
        public RequestHeader RequestHeader
        {
            get
            {
                return m_requestHeader;
            }

            set
            {
                m_requestHeader = value;

                if (value == null)
                {
                    m_requestHeader = new RequestHeader();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "SubscriptionIds", IsRequired = false, Order = 2)]
        public UInt32Collection SubscriptionIds
        {
            get
            {
                return m_subscriptionIds;
            }

            set
            {
                m_subscriptionIds = value;

                if (value == null)
                {
                    m_subscriptionIds = new UInt32Collection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.DeleteSubscriptionsRequest; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.DeleteSubscriptionsRequest_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.DeleteSubscriptionsRequest_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("RequestHeader", RequestHeader, typeof(RequestHeader));
            encoder.WriteUInt32Array("SubscriptionIds", SubscriptionIds);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            RequestHeader = (RequestHeader)decoder.ReadEncodeable("RequestHeader", typeof(RequestHeader));
            SubscriptionIds = decoder.ReadUInt32Array("SubscriptionIds");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            DeleteSubscriptionsRequest value = encodeable as DeleteSubscriptionsRequest;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_requestHeader, value.m_requestHeader)) return false;
            if (!Utils.IsEqual(m_subscriptionIds, value.m_subscriptionIds)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (DeleteSubscriptionsRequest)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            DeleteSubscriptionsRequest clone = (DeleteSubscriptionsRequest)base.MemberwiseClone();

            clone.m_requestHeader = (RequestHeader)Utils.Clone(this.m_requestHeader);
            clone.m_subscriptionIds = (UInt32Collection)Utils.Clone(this.m_subscriptionIds);

            return clone;
        }
        #endregion

        #region Private Fields
        private RequestHeader m_requestHeader;
        private UInt32Collection m_subscriptionIds;
        #endregion
    }
    #endif
    #endregion

    #region DeleteSubscriptionsResponse Class
    #if (!OPCUA_EXCLUDE_DeleteSubscriptionsResponse)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class DeleteSubscriptionsResponse : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public DeleteSubscriptionsResponse()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_responseHeader = new ResponseHeader();
            m_results = new StatusCodeCollection();
            m_diagnosticInfos = new DiagnosticInfoCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ResponseHeader", IsRequired = false, Order = 1)]
        public ResponseHeader ResponseHeader
        {
            get
            {
                return m_responseHeader;
            }

            set
            {
                m_responseHeader = value;

                if (value == null)
                {
                    m_responseHeader = new ResponseHeader();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "Results", IsRequired = false, Order = 2)]
        public StatusCodeCollection Results
        {
            get
            {
                return m_results;
            }

            set
            {
                m_results = value;

                if (value == null)
                {
                    m_results = new StatusCodeCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "DiagnosticInfos", IsRequired = false, Order = 3)]
        public DiagnosticInfoCollection DiagnosticInfos
        {
            get
            {
                return m_diagnosticInfos;
            }

            set
            {
                m_diagnosticInfos = value;

                if (value == null)
                {
                    m_diagnosticInfos = new DiagnosticInfoCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.DeleteSubscriptionsResponse; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.DeleteSubscriptionsResponse_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.DeleteSubscriptionsResponse_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("ResponseHeader", ResponseHeader, typeof(ResponseHeader));
            encoder.WriteStatusCodeArray("Results", Results);
            encoder.WriteDiagnosticInfoArray("DiagnosticInfos", DiagnosticInfos);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ResponseHeader = (ResponseHeader)decoder.ReadEncodeable("ResponseHeader", typeof(ResponseHeader));
            Results = decoder.ReadStatusCodeArray("Results");
            DiagnosticInfos = decoder.ReadDiagnosticInfoArray("DiagnosticInfos");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            DeleteSubscriptionsResponse value = encodeable as DeleteSubscriptionsResponse;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_responseHeader, value.m_responseHeader)) return false;
            if (!Utils.IsEqual(m_results, value.m_results)) return false;
            if (!Utils.IsEqual(m_diagnosticInfos, value.m_diagnosticInfos)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (DeleteSubscriptionsResponse)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            DeleteSubscriptionsResponse clone = (DeleteSubscriptionsResponse)base.MemberwiseClone();

            clone.m_responseHeader = (ResponseHeader)Utils.Clone(this.m_responseHeader);
            clone.m_results = (StatusCodeCollection)Utils.Clone(this.m_results);
            clone.m_diagnosticInfos = (DiagnosticInfoCollection)Utils.Clone(this.m_diagnosticInfos);

            return clone;
        }
        #endregion

        #region Private Fields
        private ResponseHeader m_responseHeader;
        private StatusCodeCollection m_results;
        private DiagnosticInfoCollection m_diagnosticInfos;
        #endregion
    }
    #endif
    #endregion

    #region BuildInfo Class
    #if (!OPCUA_EXCLUDE_BuildInfo)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class BuildInfo : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public BuildInfo()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_productUri = null;
            m_manufacturerName = null;
            m_productName = null;
            m_softwareVersion = null;
            m_buildNumber = null;
            m_buildDate = DateTime.MinValue;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "ProductUri", IsRequired = false, Order = 1)]
        public string ProductUri
        {
            get { return m_productUri;  }
            set { m_productUri = value; }
        }

        /// <remarks />
        [DataMember(Name = "ManufacturerName", IsRequired = false, Order = 2)]
        public string ManufacturerName
        {
            get { return m_manufacturerName;  }
            set { m_manufacturerName = value; }
        }

        /// <remarks />
        [DataMember(Name = "ProductName", IsRequired = false, Order = 3)]
        public string ProductName
        {
            get { return m_productName;  }
            set { m_productName = value; }
        }

        /// <remarks />
        [DataMember(Name = "SoftwareVersion", IsRequired = false, Order = 4)]
        public string SoftwareVersion
        {
            get { return m_softwareVersion;  }
            set { m_softwareVersion = value; }
        }

        /// <remarks />
        [DataMember(Name = "BuildNumber", IsRequired = false, Order = 5)]
        public string BuildNumber
        {
            get { return m_buildNumber;  }
            set { m_buildNumber = value; }
        }

        /// <remarks />
        [DataMember(Name = "BuildDate", IsRequired = false, Order = 6)]
        public DateTime BuildDate
        {
            get { return m_buildDate;  }
            set { m_buildDate = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.BuildInfo; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.BuildInfo_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.BuildInfo_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteString("ProductUri", ProductUri);
            encoder.WriteString("ManufacturerName", ManufacturerName);
            encoder.WriteString("ProductName", ProductName);
            encoder.WriteString("SoftwareVersion", SoftwareVersion);
            encoder.WriteString("BuildNumber", BuildNumber);
            encoder.WriteDateTime("BuildDate", BuildDate);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ProductUri = decoder.ReadString("ProductUri");
            ManufacturerName = decoder.ReadString("ManufacturerName");
            ProductName = decoder.ReadString("ProductName");
            SoftwareVersion = decoder.ReadString("SoftwareVersion");
            BuildNumber = decoder.ReadString("BuildNumber");
            BuildDate = decoder.ReadDateTime("BuildDate");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            BuildInfo value = encodeable as BuildInfo;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_productUri, value.m_productUri)) return false;
            if (!Utils.IsEqual(m_manufacturerName, value.m_manufacturerName)) return false;
            if (!Utils.IsEqual(m_productName, value.m_productName)) return false;
            if (!Utils.IsEqual(m_softwareVersion, value.m_softwareVersion)) return false;
            if (!Utils.IsEqual(m_buildNumber, value.m_buildNumber)) return false;
            if (!Utils.IsEqual(m_buildDate, value.m_buildDate)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (BuildInfo)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            BuildInfo clone = (BuildInfo)base.MemberwiseClone();

            clone.m_productUri = (string)Utils.Clone(this.m_productUri);
            clone.m_manufacturerName = (string)Utils.Clone(this.m_manufacturerName);
            clone.m_productName = (string)Utils.Clone(this.m_productName);
            clone.m_softwareVersion = (string)Utils.Clone(this.m_softwareVersion);
            clone.m_buildNumber = (string)Utils.Clone(this.m_buildNumber);
            clone.m_buildDate = (DateTime)Utils.Clone(this.m_buildDate);

            return clone;
        }
        #endregion

        #region Private Fields
        private string m_productUri;
        private string m_manufacturerName;
        private string m_productName;
        private string m_softwareVersion;
        private string m_buildNumber;
        private DateTime m_buildDate;
        #endregion
    }
    #endif
    #endregion

    #region RedundancySupport Enumeration
    #if (!OPCUA_EXCLUDE_RedundancySupport)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public enum RedundancySupport
    {
        /// <remarks />
        [EnumMember(Value = "None_0")]
        None = 0,

        /// <remarks />
        [EnumMember(Value = "Cold_1")]
        Cold = 1,

        /// <remarks />
        [EnumMember(Value = "Warm_2")]
        Warm = 2,

        /// <remarks />
        [EnumMember(Value = "Hot_3")]
        Hot = 3,

        /// <remarks />
        [EnumMember(Value = "Transparent_4")]
        Transparent = 4,

        /// <remarks />
        [EnumMember(Value = "HotAndMirrored_5")]
        HotAndMirrored = 5,
    }
    #endif
    #endregion

    #region ServerState Enumeration
    #if (!OPCUA_EXCLUDE_ServerState)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public enum ServerState
    {
        /// <remarks />
        [EnumMember(Value = "Running_0")]
        Running = 0,

        /// <remarks />
        [EnumMember(Value = "Failed_1")]
        Failed = 1,

        /// <remarks />
        [EnumMember(Value = "NoConfiguration_2")]
        NoConfiguration = 2,

        /// <remarks />
        [EnumMember(Value = "Suspended_3")]
        Suspended = 3,

        /// <remarks />
        [EnumMember(Value = "Shutdown_4")]
        Shutdown = 4,

        /// <remarks />
        [EnumMember(Value = "Test_5")]
        Test = 5,

        /// <remarks />
        [EnumMember(Value = "CommunicationFault_6")]
        CommunicationFault = 6,

        /// <remarks />
        [EnumMember(Value = "Unknown_7")]
        Unknown = 7,
    }
    #endif
    #endregion

    #region RedundantServerDataType Class
    #if (!OPCUA_EXCLUDE_RedundantServerDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class RedundantServerDataType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public RedundantServerDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_serverId = null;
            m_serviceLevel = (byte)0;
            m_serverState = ServerState.Running;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "ServerId", IsRequired = false, Order = 1)]
        public string ServerId
        {
            get { return m_serverId;  }
            set { m_serverId = value; }
        }

        /// <remarks />
        [DataMember(Name = "ServiceLevel", IsRequired = false, Order = 2)]
        public byte ServiceLevel
        {
            get { return m_serviceLevel;  }
            set { m_serviceLevel = value; }
        }

        /// <remarks />
        [DataMember(Name = "ServerState", IsRequired = false, Order = 3)]
        public ServerState ServerState
        {
            get { return m_serverState;  }
            set { m_serverState = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.RedundantServerDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.RedundantServerDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.RedundantServerDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteString("ServerId", ServerId);
            encoder.WriteByte("ServiceLevel", ServiceLevel);
            encoder.WriteEnumerated("ServerState", ServerState);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ServerId = decoder.ReadString("ServerId");
            ServiceLevel = decoder.ReadByte("ServiceLevel");
            ServerState = (ServerState)decoder.ReadEnumerated("ServerState", typeof(ServerState));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            RedundantServerDataType value = encodeable as RedundantServerDataType;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_serverId, value.m_serverId)) return false;
            if (!Utils.IsEqual(m_serviceLevel, value.m_serviceLevel)) return false;
            if (!Utils.IsEqual(m_serverState, value.m_serverState)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (RedundantServerDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            RedundantServerDataType clone = (RedundantServerDataType)base.MemberwiseClone();

            clone.m_serverId = (string)Utils.Clone(this.m_serverId);
            clone.m_serviceLevel = (byte)Utils.Clone(this.m_serviceLevel);
            clone.m_serverState = (ServerState)Utils.Clone(this.m_serverState);

            return clone;
        }
        #endregion

        #region Private Fields
        private string m_serverId;
        private byte m_serviceLevel;
        private ServerState m_serverState;
        #endregion
    }

    #region RedundantServerDataTypeCollection Class
    /// <summary>
    /// A collection of RedundantServerDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfRedundantServerDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "RedundantServerDataType")]
    #if !NET_STANDARD
    public partial class RedundantServerDataTypeCollection : List<RedundantServerDataType>, ICloneable
    #else
    public partial class RedundantServerDataTypeCollection : List<RedundantServerDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public RedundantServerDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public RedundantServerDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public RedundantServerDataTypeCollection(IEnumerable<RedundantServerDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator RedundantServerDataTypeCollection(RedundantServerDataType[] values)
        {
            if (values != null)
            {
                return new RedundantServerDataTypeCollection(values);
            }

            return new RedundantServerDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator RedundantServerDataType[](RedundantServerDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (RedundantServerDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            RedundantServerDataTypeCollection clone = new RedundantServerDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((RedundantServerDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region EndpointUrlListDataType Class
    #if (!OPCUA_EXCLUDE_EndpointUrlListDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class EndpointUrlListDataType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public EndpointUrlListDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_endpointUrlList = new StringCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "EndpointUrlList", IsRequired = false, Order = 1)]
        public StringCollection EndpointUrlList
        {
            get
            {
                return m_endpointUrlList;
            }

            set
            {
                m_endpointUrlList = value;

                if (value == null)
                {
                    m_endpointUrlList = new StringCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.EndpointUrlListDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.EndpointUrlListDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.EndpointUrlListDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteStringArray("EndpointUrlList", EndpointUrlList);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            EndpointUrlList = decoder.ReadStringArray("EndpointUrlList");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            EndpointUrlListDataType value = encodeable as EndpointUrlListDataType;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_endpointUrlList, value.m_endpointUrlList)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (EndpointUrlListDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            EndpointUrlListDataType clone = (EndpointUrlListDataType)base.MemberwiseClone();

            clone.m_endpointUrlList = (StringCollection)Utils.Clone(this.m_endpointUrlList);

            return clone;
        }
        #endregion

        #region Private Fields
        private StringCollection m_endpointUrlList;
        #endregion
    }

    #region EndpointUrlListDataTypeCollection Class
    /// <summary>
    /// A collection of EndpointUrlListDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfEndpointUrlListDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "EndpointUrlListDataType")]
    #if !NET_STANDARD
    public partial class EndpointUrlListDataTypeCollection : List<EndpointUrlListDataType>, ICloneable
    #else
    public partial class EndpointUrlListDataTypeCollection : List<EndpointUrlListDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public EndpointUrlListDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public EndpointUrlListDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public EndpointUrlListDataTypeCollection(IEnumerable<EndpointUrlListDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator EndpointUrlListDataTypeCollection(EndpointUrlListDataType[] values)
        {
            if (values != null)
            {
                return new EndpointUrlListDataTypeCollection(values);
            }

            return new EndpointUrlListDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator EndpointUrlListDataType[](EndpointUrlListDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (EndpointUrlListDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            EndpointUrlListDataTypeCollection clone = new EndpointUrlListDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((EndpointUrlListDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region NetworkGroupDataType Class
    #if (!OPCUA_EXCLUDE_NetworkGroupDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class NetworkGroupDataType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public NetworkGroupDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_serverUri = null;
            m_networkPaths = new EndpointUrlListDataTypeCollection();
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "ServerUri", IsRequired = false, Order = 1)]
        public string ServerUri
        {
            get { return m_serverUri;  }
            set { m_serverUri = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "NetworkPaths", IsRequired = false, Order = 2)]
        public EndpointUrlListDataTypeCollection NetworkPaths
        {
            get
            {
                return m_networkPaths;
            }

            set
            {
                m_networkPaths = value;

                if (value == null)
                {
                    m_networkPaths = new EndpointUrlListDataTypeCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.NetworkGroupDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.NetworkGroupDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.NetworkGroupDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteString("ServerUri", ServerUri);
            encoder.WriteEncodeableArray("NetworkPaths", NetworkPaths.ToArray(), typeof(EndpointUrlListDataType));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ServerUri = decoder.ReadString("ServerUri");
            NetworkPaths = (EndpointUrlListDataTypeCollection)decoder.ReadEncodeableArray("NetworkPaths", typeof(EndpointUrlListDataType));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            NetworkGroupDataType value = encodeable as NetworkGroupDataType;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_serverUri, value.m_serverUri)) return false;
            if (!Utils.IsEqual(m_networkPaths, value.m_networkPaths)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (NetworkGroupDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            NetworkGroupDataType clone = (NetworkGroupDataType)base.MemberwiseClone();

            clone.m_serverUri = (string)Utils.Clone(this.m_serverUri);
            clone.m_networkPaths = (EndpointUrlListDataTypeCollection)Utils.Clone(this.m_networkPaths);

            return clone;
        }
        #endregion

        #region Private Fields
        private string m_serverUri;
        private EndpointUrlListDataTypeCollection m_networkPaths;
        #endregion
    }

    #region NetworkGroupDataTypeCollection Class
    /// <summary>
    /// A collection of NetworkGroupDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfNetworkGroupDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "NetworkGroupDataType")]
    #if !NET_STANDARD
    public partial class NetworkGroupDataTypeCollection : List<NetworkGroupDataType>, ICloneable
    #else
    public partial class NetworkGroupDataTypeCollection : List<NetworkGroupDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public NetworkGroupDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public NetworkGroupDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public NetworkGroupDataTypeCollection(IEnumerable<NetworkGroupDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator NetworkGroupDataTypeCollection(NetworkGroupDataType[] values)
        {
            if (values != null)
            {
                return new NetworkGroupDataTypeCollection(values);
            }

            return new NetworkGroupDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator NetworkGroupDataType[](NetworkGroupDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (NetworkGroupDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            NetworkGroupDataTypeCollection clone = new NetworkGroupDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((NetworkGroupDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region SamplingIntervalDiagnosticsDataType Class
    #if (!OPCUA_EXCLUDE_SamplingIntervalDiagnosticsDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class SamplingIntervalDiagnosticsDataType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public SamplingIntervalDiagnosticsDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_samplingInterval = (double)0;
            m_monitoredItemCount = (uint)0;
            m_maxMonitoredItemCount = (uint)0;
            m_disabledMonitoredItemCount = (uint)0;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "SamplingInterval", IsRequired = false, Order = 1)]
        public double SamplingInterval
        {
            get { return m_samplingInterval;  }
            set { m_samplingInterval = value; }
        }

        /// <remarks />
        [DataMember(Name = "MonitoredItemCount", IsRequired = false, Order = 2)]
        public uint MonitoredItemCount
        {
            get { return m_monitoredItemCount;  }
            set { m_monitoredItemCount = value; }
        }

        /// <remarks />
        [DataMember(Name = "MaxMonitoredItemCount", IsRequired = false, Order = 3)]
        public uint MaxMonitoredItemCount
        {
            get { return m_maxMonitoredItemCount;  }
            set { m_maxMonitoredItemCount = value; }
        }

        /// <remarks />
        [DataMember(Name = "DisabledMonitoredItemCount", IsRequired = false, Order = 4)]
        public uint DisabledMonitoredItemCount
        {
            get { return m_disabledMonitoredItemCount;  }
            set { m_disabledMonitoredItemCount = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.SamplingIntervalDiagnosticsDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.SamplingIntervalDiagnosticsDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.SamplingIntervalDiagnosticsDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteDouble("SamplingInterval", SamplingInterval);
            encoder.WriteUInt32("MonitoredItemCount", MonitoredItemCount);
            encoder.WriteUInt32("MaxMonitoredItemCount", MaxMonitoredItemCount);
            encoder.WriteUInt32("DisabledMonitoredItemCount", DisabledMonitoredItemCount);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            SamplingInterval = decoder.ReadDouble("SamplingInterval");
            MonitoredItemCount = decoder.ReadUInt32("MonitoredItemCount");
            MaxMonitoredItemCount = decoder.ReadUInt32("MaxMonitoredItemCount");
            DisabledMonitoredItemCount = decoder.ReadUInt32("DisabledMonitoredItemCount");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            SamplingIntervalDiagnosticsDataType value = encodeable as SamplingIntervalDiagnosticsDataType;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_samplingInterval, value.m_samplingInterval)) return false;
            if (!Utils.IsEqual(m_monitoredItemCount, value.m_monitoredItemCount)) return false;
            if (!Utils.IsEqual(m_maxMonitoredItemCount, value.m_maxMonitoredItemCount)) return false;
            if (!Utils.IsEqual(m_disabledMonitoredItemCount, value.m_disabledMonitoredItemCount)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (SamplingIntervalDiagnosticsDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            SamplingIntervalDiagnosticsDataType clone = (SamplingIntervalDiagnosticsDataType)base.MemberwiseClone();

            clone.m_samplingInterval = (double)Utils.Clone(this.m_samplingInterval);
            clone.m_monitoredItemCount = (uint)Utils.Clone(this.m_monitoredItemCount);
            clone.m_maxMonitoredItemCount = (uint)Utils.Clone(this.m_maxMonitoredItemCount);
            clone.m_disabledMonitoredItemCount = (uint)Utils.Clone(this.m_disabledMonitoredItemCount);

            return clone;
        }
        #endregion

        #region Private Fields
        private double m_samplingInterval;
        private uint m_monitoredItemCount;
        private uint m_maxMonitoredItemCount;
        private uint m_disabledMonitoredItemCount;
        #endregion
    }

    #region SamplingIntervalDiagnosticsDataTypeCollection Class
    /// <summary>
    /// A collection of SamplingIntervalDiagnosticsDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfSamplingIntervalDiagnosticsDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "SamplingIntervalDiagnosticsDataType")]
    #if !NET_STANDARD
    public partial class SamplingIntervalDiagnosticsDataTypeCollection : List<SamplingIntervalDiagnosticsDataType>, ICloneable
    #else
    public partial class SamplingIntervalDiagnosticsDataTypeCollection : List<SamplingIntervalDiagnosticsDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public SamplingIntervalDiagnosticsDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public SamplingIntervalDiagnosticsDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public SamplingIntervalDiagnosticsDataTypeCollection(IEnumerable<SamplingIntervalDiagnosticsDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator SamplingIntervalDiagnosticsDataTypeCollection(SamplingIntervalDiagnosticsDataType[] values)
        {
            if (values != null)
            {
                return new SamplingIntervalDiagnosticsDataTypeCollection(values);
            }

            return new SamplingIntervalDiagnosticsDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator SamplingIntervalDiagnosticsDataType[](SamplingIntervalDiagnosticsDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (SamplingIntervalDiagnosticsDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            SamplingIntervalDiagnosticsDataTypeCollection clone = new SamplingIntervalDiagnosticsDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((SamplingIntervalDiagnosticsDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region ServerDiagnosticsSummaryDataType Class
    #if (!OPCUA_EXCLUDE_ServerDiagnosticsSummaryDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ServerDiagnosticsSummaryDataType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ServerDiagnosticsSummaryDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_serverViewCount = (uint)0;
            m_currentSessionCount = (uint)0;
            m_cumulatedSessionCount = (uint)0;
            m_securityRejectedSessionCount = (uint)0;
            m_rejectedSessionCount = (uint)0;
            m_sessionTimeoutCount = (uint)0;
            m_sessionAbortCount = (uint)0;
            m_currentSubscriptionCount = (uint)0;
            m_cumulatedSubscriptionCount = (uint)0;
            m_publishingIntervalCount = (uint)0;
            m_securityRejectedRequestsCount = (uint)0;
            m_rejectedRequestsCount = (uint)0;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "ServerViewCount", IsRequired = false, Order = 1)]
        public uint ServerViewCount
        {
            get { return m_serverViewCount;  }
            set { m_serverViewCount = value; }
        }

        /// <remarks />
        [DataMember(Name = "CurrentSessionCount", IsRequired = false, Order = 2)]
        public uint CurrentSessionCount
        {
            get { return m_currentSessionCount;  }
            set { m_currentSessionCount = value; }
        }

        /// <remarks />
        [DataMember(Name = "CumulatedSessionCount", IsRequired = false, Order = 3)]
        public uint CumulatedSessionCount
        {
            get { return m_cumulatedSessionCount;  }
            set { m_cumulatedSessionCount = value; }
        }

        /// <remarks />
        [DataMember(Name = "SecurityRejectedSessionCount", IsRequired = false, Order = 4)]
        public uint SecurityRejectedSessionCount
        {
            get { return m_securityRejectedSessionCount;  }
            set { m_securityRejectedSessionCount = value; }
        }

        /// <remarks />
        [DataMember(Name = "RejectedSessionCount", IsRequired = false, Order = 5)]
        public uint RejectedSessionCount
        {
            get { return m_rejectedSessionCount;  }
            set { m_rejectedSessionCount = value; }
        }

        /// <remarks />
        [DataMember(Name = "SessionTimeoutCount", IsRequired = false, Order = 6)]
        public uint SessionTimeoutCount
        {
            get { return m_sessionTimeoutCount;  }
            set { m_sessionTimeoutCount = value; }
        }

        /// <remarks />
        [DataMember(Name = "SessionAbortCount", IsRequired = false, Order = 7)]
        public uint SessionAbortCount
        {
            get { return m_sessionAbortCount;  }
            set { m_sessionAbortCount = value; }
        }

        /// <remarks />
        [DataMember(Name = "CurrentSubscriptionCount", IsRequired = false, Order = 8)]
        public uint CurrentSubscriptionCount
        {
            get { return m_currentSubscriptionCount;  }
            set { m_currentSubscriptionCount = value; }
        }

        /// <remarks />
        [DataMember(Name = "CumulatedSubscriptionCount", IsRequired = false, Order = 9)]
        public uint CumulatedSubscriptionCount
        {
            get { return m_cumulatedSubscriptionCount;  }
            set { m_cumulatedSubscriptionCount = value; }
        }

        /// <remarks />
        [DataMember(Name = "PublishingIntervalCount", IsRequired = false, Order = 10)]
        public uint PublishingIntervalCount
        {
            get { return m_publishingIntervalCount;  }
            set { m_publishingIntervalCount = value; }
        }

        /// <remarks />
        [DataMember(Name = "SecurityRejectedRequestsCount", IsRequired = false, Order = 11)]
        public uint SecurityRejectedRequestsCount
        {
            get { return m_securityRejectedRequestsCount;  }
            set { m_securityRejectedRequestsCount = value; }
        }

        /// <remarks />
        [DataMember(Name = "RejectedRequestsCount", IsRequired = false, Order = 12)]
        public uint RejectedRequestsCount
        {
            get { return m_rejectedRequestsCount;  }
            set { m_rejectedRequestsCount = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ServerDiagnosticsSummaryDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ServerDiagnosticsSummaryDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ServerDiagnosticsSummaryDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteUInt32("ServerViewCount", ServerViewCount);
            encoder.WriteUInt32("CurrentSessionCount", CurrentSessionCount);
            encoder.WriteUInt32("CumulatedSessionCount", CumulatedSessionCount);
            encoder.WriteUInt32("SecurityRejectedSessionCount", SecurityRejectedSessionCount);
            encoder.WriteUInt32("RejectedSessionCount", RejectedSessionCount);
            encoder.WriteUInt32("SessionTimeoutCount", SessionTimeoutCount);
            encoder.WriteUInt32("SessionAbortCount", SessionAbortCount);
            encoder.WriteUInt32("CurrentSubscriptionCount", CurrentSubscriptionCount);
            encoder.WriteUInt32("CumulatedSubscriptionCount", CumulatedSubscriptionCount);
            encoder.WriteUInt32("PublishingIntervalCount", PublishingIntervalCount);
            encoder.WriteUInt32("SecurityRejectedRequestsCount", SecurityRejectedRequestsCount);
            encoder.WriteUInt32("RejectedRequestsCount", RejectedRequestsCount);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            ServerViewCount = decoder.ReadUInt32("ServerViewCount");
            CurrentSessionCount = decoder.ReadUInt32("CurrentSessionCount");
            CumulatedSessionCount = decoder.ReadUInt32("CumulatedSessionCount");
            SecurityRejectedSessionCount = decoder.ReadUInt32("SecurityRejectedSessionCount");
            RejectedSessionCount = decoder.ReadUInt32("RejectedSessionCount");
            SessionTimeoutCount = decoder.ReadUInt32("SessionTimeoutCount");
            SessionAbortCount = decoder.ReadUInt32("SessionAbortCount");
            CurrentSubscriptionCount = decoder.ReadUInt32("CurrentSubscriptionCount");
            CumulatedSubscriptionCount = decoder.ReadUInt32("CumulatedSubscriptionCount");
            PublishingIntervalCount = decoder.ReadUInt32("PublishingIntervalCount");
            SecurityRejectedRequestsCount = decoder.ReadUInt32("SecurityRejectedRequestsCount");
            RejectedRequestsCount = decoder.ReadUInt32("RejectedRequestsCount");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ServerDiagnosticsSummaryDataType value = encodeable as ServerDiagnosticsSummaryDataType;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_serverViewCount, value.m_serverViewCount)) return false;
            if (!Utils.IsEqual(m_currentSessionCount, value.m_currentSessionCount)) return false;
            if (!Utils.IsEqual(m_cumulatedSessionCount, value.m_cumulatedSessionCount)) return false;
            if (!Utils.IsEqual(m_securityRejectedSessionCount, value.m_securityRejectedSessionCount)) return false;
            if (!Utils.IsEqual(m_rejectedSessionCount, value.m_rejectedSessionCount)) return false;
            if (!Utils.IsEqual(m_sessionTimeoutCount, value.m_sessionTimeoutCount)) return false;
            if (!Utils.IsEqual(m_sessionAbortCount, value.m_sessionAbortCount)) return false;
            if (!Utils.IsEqual(m_currentSubscriptionCount, value.m_currentSubscriptionCount)) return false;
            if (!Utils.IsEqual(m_cumulatedSubscriptionCount, value.m_cumulatedSubscriptionCount)) return false;
            if (!Utils.IsEqual(m_publishingIntervalCount, value.m_publishingIntervalCount)) return false;
            if (!Utils.IsEqual(m_securityRejectedRequestsCount, value.m_securityRejectedRequestsCount)) return false;
            if (!Utils.IsEqual(m_rejectedRequestsCount, value.m_rejectedRequestsCount)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (ServerDiagnosticsSummaryDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ServerDiagnosticsSummaryDataType clone = (ServerDiagnosticsSummaryDataType)base.MemberwiseClone();

            clone.m_serverViewCount = (uint)Utils.Clone(this.m_serverViewCount);
            clone.m_currentSessionCount = (uint)Utils.Clone(this.m_currentSessionCount);
            clone.m_cumulatedSessionCount = (uint)Utils.Clone(this.m_cumulatedSessionCount);
            clone.m_securityRejectedSessionCount = (uint)Utils.Clone(this.m_securityRejectedSessionCount);
            clone.m_rejectedSessionCount = (uint)Utils.Clone(this.m_rejectedSessionCount);
            clone.m_sessionTimeoutCount = (uint)Utils.Clone(this.m_sessionTimeoutCount);
            clone.m_sessionAbortCount = (uint)Utils.Clone(this.m_sessionAbortCount);
            clone.m_currentSubscriptionCount = (uint)Utils.Clone(this.m_currentSubscriptionCount);
            clone.m_cumulatedSubscriptionCount = (uint)Utils.Clone(this.m_cumulatedSubscriptionCount);
            clone.m_publishingIntervalCount = (uint)Utils.Clone(this.m_publishingIntervalCount);
            clone.m_securityRejectedRequestsCount = (uint)Utils.Clone(this.m_securityRejectedRequestsCount);
            clone.m_rejectedRequestsCount = (uint)Utils.Clone(this.m_rejectedRequestsCount);

            return clone;
        }
        #endregion

        #region Private Fields
        private uint m_serverViewCount;
        private uint m_currentSessionCount;
        private uint m_cumulatedSessionCount;
        private uint m_securityRejectedSessionCount;
        private uint m_rejectedSessionCount;
        private uint m_sessionTimeoutCount;
        private uint m_sessionAbortCount;
        private uint m_currentSubscriptionCount;
        private uint m_cumulatedSubscriptionCount;
        private uint m_publishingIntervalCount;
        private uint m_securityRejectedRequestsCount;
        private uint m_rejectedRequestsCount;
        #endregion
    }
    #endif
    #endregion

    #region ServerStatusDataType Class
    #if (!OPCUA_EXCLUDE_ServerStatusDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ServerStatusDataType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ServerStatusDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_startTime = DateTime.MinValue;
            m_currentTime = DateTime.MinValue;
            m_state = ServerState.Running;
            m_buildInfo = new BuildInfo();
            m_secondsTillShutdown = (uint)0;
            m_shutdownReason = null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "StartTime", IsRequired = false, Order = 1)]
        public DateTime StartTime
        {
            get { return m_startTime;  }
            set { m_startTime = value; }
        }

        /// <remarks />
        [DataMember(Name = "CurrentTime", IsRequired = false, Order = 2)]
        public DateTime CurrentTime
        {
            get { return m_currentTime;  }
            set { m_currentTime = value; }
        }

        /// <remarks />
        [DataMember(Name = "State", IsRequired = false, Order = 3)]
        public ServerState State
        {
            get { return m_state;  }
            set { m_state = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "BuildInfo", IsRequired = false, Order = 4)]
        public BuildInfo BuildInfo
        {
            get
            {
                return m_buildInfo;
            }

            set
            {
                m_buildInfo = value;

                if (value == null)
                {
                    m_buildInfo = new BuildInfo();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "SecondsTillShutdown", IsRequired = false, Order = 5)]
        public uint SecondsTillShutdown
        {
            get { return m_secondsTillShutdown;  }
            set { m_secondsTillShutdown = value; }
        }

        /// <remarks />
        [DataMember(Name = "ShutdownReason", IsRequired = false, Order = 6)]
        public LocalizedText ShutdownReason
        {
            get { return m_shutdownReason;  }
            set { m_shutdownReason = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ServerStatusDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ServerStatusDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ServerStatusDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteDateTime("StartTime", StartTime);
            encoder.WriteDateTime("CurrentTime", CurrentTime);
            encoder.WriteEnumerated("State", State);
            encoder.WriteEncodeable("BuildInfo", BuildInfo, typeof(BuildInfo));
            encoder.WriteUInt32("SecondsTillShutdown", SecondsTillShutdown);
            encoder.WriteLocalizedText("ShutdownReason", ShutdownReason);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            StartTime = decoder.ReadDateTime("StartTime");
            CurrentTime = decoder.ReadDateTime("CurrentTime");
            State = (ServerState)decoder.ReadEnumerated("State", typeof(ServerState));
            BuildInfo = (BuildInfo)decoder.ReadEncodeable("BuildInfo", typeof(BuildInfo));
            SecondsTillShutdown = decoder.ReadUInt32("SecondsTillShutdown");
            ShutdownReason = decoder.ReadLocalizedText("ShutdownReason");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ServerStatusDataType value = encodeable as ServerStatusDataType;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_startTime, value.m_startTime)) return false;
            if (!Utils.IsEqual(m_currentTime, value.m_currentTime)) return false;
            if (!Utils.IsEqual(m_state, value.m_state)) return false;
            if (!Utils.IsEqual(m_buildInfo, value.m_buildInfo)) return false;
            if (!Utils.IsEqual(m_secondsTillShutdown, value.m_secondsTillShutdown)) return false;
            if (!Utils.IsEqual(m_shutdownReason, value.m_shutdownReason)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (ServerStatusDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ServerStatusDataType clone = (ServerStatusDataType)base.MemberwiseClone();

            clone.m_startTime = (DateTime)Utils.Clone(this.m_startTime);
            clone.m_currentTime = (DateTime)Utils.Clone(this.m_currentTime);
            clone.m_state = (ServerState)Utils.Clone(this.m_state);
            clone.m_buildInfo = (BuildInfo)Utils.Clone(this.m_buildInfo);
            clone.m_secondsTillShutdown = (uint)Utils.Clone(this.m_secondsTillShutdown);
            clone.m_shutdownReason = (LocalizedText)Utils.Clone(this.m_shutdownReason);

            return clone;
        }
        #endregion

        #region Private Fields
        private DateTime m_startTime;
        private DateTime m_currentTime;
        private ServerState m_state;
        private BuildInfo m_buildInfo;
        private uint m_secondsTillShutdown;
        private LocalizedText m_shutdownReason;
        #endregion
    }
    #endif
    #endregion

    #region SessionDiagnosticsDataType Class
    #if (!OPCUA_EXCLUDE_SessionDiagnosticsDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class SessionDiagnosticsDataType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public SessionDiagnosticsDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_sessionId = null;
            m_sessionName = null;
            m_clientDescription = new ApplicationDescription();
            m_serverUri = null;
            m_endpointUrl = null;
            m_localeIds = new StringCollection();
            m_actualSessionTimeout = (double)0;
            m_maxResponseMessageSize = (uint)0;
            m_clientConnectionTime = DateTime.MinValue;
            m_clientLastContactTime = DateTime.MinValue;
            m_currentSubscriptionsCount = (uint)0;
            m_currentMonitoredItemsCount = (uint)0;
            m_currentPublishRequestsInQueue = (uint)0;
            m_totalRequestCount = new ServiceCounterDataType();
            m_unauthorizedRequestCount = (uint)0;
            m_readCount = new ServiceCounterDataType();
            m_historyReadCount = new ServiceCounterDataType();
            m_writeCount = new ServiceCounterDataType();
            m_historyUpdateCount = new ServiceCounterDataType();
            m_callCount = new ServiceCounterDataType();
            m_createMonitoredItemsCount = new ServiceCounterDataType();
            m_modifyMonitoredItemsCount = new ServiceCounterDataType();
            m_setMonitoringModeCount = new ServiceCounterDataType();
            m_setTriggeringCount = new ServiceCounterDataType();
            m_deleteMonitoredItemsCount = new ServiceCounterDataType();
            m_createSubscriptionCount = new ServiceCounterDataType();
            m_modifySubscriptionCount = new ServiceCounterDataType();
            m_setPublishingModeCount = new ServiceCounterDataType();
            m_publishCount = new ServiceCounterDataType();
            m_republishCount = new ServiceCounterDataType();
            m_transferSubscriptionsCount = new ServiceCounterDataType();
            m_deleteSubscriptionsCount = new ServiceCounterDataType();
            m_addNodesCount = new ServiceCounterDataType();
            m_addReferencesCount = new ServiceCounterDataType();
            m_deleteNodesCount = new ServiceCounterDataType();
            m_deleteReferencesCount = new ServiceCounterDataType();
            m_browseCount = new ServiceCounterDataType();
            m_browseNextCount = new ServiceCounterDataType();
            m_translateBrowsePathsToNodeIdsCount = new ServiceCounterDataType();
            m_queryFirstCount = new ServiceCounterDataType();
            m_queryNextCount = new ServiceCounterDataType();
            m_registerNodesCount = new ServiceCounterDataType();
            m_unregisterNodesCount = new ServiceCounterDataType();
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "SessionId", IsRequired = false, Order = 1)]
        public NodeId SessionId
        {
            get { return m_sessionId;  }
            set { m_sessionId = value; }
        }

        /// <remarks />
        [DataMember(Name = "SessionName", IsRequired = false, Order = 2)]
        public string SessionName
        {
            get { return m_sessionName;  }
            set { m_sessionName = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ClientDescription", IsRequired = false, Order = 3)]
        public ApplicationDescription ClientDescription
        {
            get
            {
                return m_clientDescription;
            }

            set
            {
                m_clientDescription = value;

                if (value == null)
                {
                    m_clientDescription = new ApplicationDescription();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "ServerUri", IsRequired = false, Order = 4)]
        public string ServerUri
        {
            get { return m_serverUri;  }
            set { m_serverUri = value; }
        }

        /// <remarks />
        [DataMember(Name = "EndpointUrl", IsRequired = false, Order = 5)]
        public string EndpointUrl
        {
            get { return m_endpointUrl;  }
            set { m_endpointUrl = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "LocaleIds", IsRequired = false, Order = 6)]
        public StringCollection LocaleIds
        {
            get
            {
                return m_localeIds;
            }

            set
            {
                m_localeIds = value;

                if (value == null)
                {
                    m_localeIds = new StringCollection();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "ActualSessionTimeout", IsRequired = false, Order = 7)]
        public double ActualSessionTimeout
        {
            get { return m_actualSessionTimeout;  }
            set { m_actualSessionTimeout = value; }
        }

        /// <remarks />
        [DataMember(Name = "MaxResponseMessageSize", IsRequired = false, Order = 8)]
        public uint MaxResponseMessageSize
        {
            get { return m_maxResponseMessageSize;  }
            set { m_maxResponseMessageSize = value; }
        }

        /// <remarks />
        [DataMember(Name = "ClientConnectionTime", IsRequired = false, Order = 9)]
        public DateTime ClientConnectionTime
        {
            get { return m_clientConnectionTime;  }
            set { m_clientConnectionTime = value; }
        }

        /// <remarks />
        [DataMember(Name = "ClientLastContactTime", IsRequired = false, Order = 10)]
        public DateTime ClientLastContactTime
        {
            get { return m_clientLastContactTime;  }
            set { m_clientLastContactTime = value; }
        }

        /// <remarks />
        [DataMember(Name = "CurrentSubscriptionsCount", IsRequired = false, Order = 11)]
        public uint CurrentSubscriptionsCount
        {
            get { return m_currentSubscriptionsCount;  }
            set { m_currentSubscriptionsCount = value; }
        }

        /// <remarks />
        [DataMember(Name = "CurrentMonitoredItemsCount", IsRequired = false, Order = 12)]
        public uint CurrentMonitoredItemsCount
        {
            get { return m_currentMonitoredItemsCount;  }
            set { m_currentMonitoredItemsCount = value; }
        }

        /// <remarks />
        [DataMember(Name = "CurrentPublishRequestsInQueue", IsRequired = false, Order = 13)]
        public uint CurrentPublishRequestsInQueue
        {
            get { return m_currentPublishRequestsInQueue;  }
            set { m_currentPublishRequestsInQueue = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "TotalRequestCount", IsRequired = false, Order = 14)]
        public ServiceCounterDataType TotalRequestCount
        {
            get
            {
                return m_totalRequestCount;
            }

            set
            {
                m_totalRequestCount = value;

                if (value == null)
                {
                    m_totalRequestCount = new ServiceCounterDataType();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "UnauthorizedRequestCount", IsRequired = false, Order = 15)]
        public uint UnauthorizedRequestCount
        {
            get { return m_unauthorizedRequestCount;  }
            set { m_unauthorizedRequestCount = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ReadCount", IsRequired = false, Order = 16)]
        public ServiceCounterDataType ReadCount
        {
            get
            {
                return m_readCount;
            }

            set
            {
                m_readCount = value;

                if (value == null)
                {
                    m_readCount = new ServiceCounterDataType();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "HistoryReadCount", IsRequired = false, Order = 17)]
        public ServiceCounterDataType HistoryReadCount
        {
            get
            {
                return m_historyReadCount;
            }

            set
            {
                m_historyReadCount = value;

                if (value == null)
                {
                    m_historyReadCount = new ServiceCounterDataType();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "WriteCount", IsRequired = false, Order = 18)]
        public ServiceCounterDataType WriteCount
        {
            get
            {
                return m_writeCount;
            }

            set
            {
                m_writeCount = value;

                if (value == null)
                {
                    m_writeCount = new ServiceCounterDataType();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "HistoryUpdateCount", IsRequired = false, Order = 19)]
        public ServiceCounterDataType HistoryUpdateCount
        {
            get
            {
                return m_historyUpdateCount;
            }

            set
            {
                m_historyUpdateCount = value;

                if (value == null)
                {
                    m_historyUpdateCount = new ServiceCounterDataType();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "CallCount", IsRequired = false, Order = 20)]
        public ServiceCounterDataType CallCount
        {
            get
            {
                return m_callCount;
            }

            set
            {
                m_callCount = value;

                if (value == null)
                {
                    m_callCount = new ServiceCounterDataType();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "CreateMonitoredItemsCount", IsRequired = false, Order = 21)]
        public ServiceCounterDataType CreateMonitoredItemsCount
        {
            get
            {
                return m_createMonitoredItemsCount;
            }

            set
            {
                m_createMonitoredItemsCount = value;

                if (value == null)
                {
                    m_createMonitoredItemsCount = new ServiceCounterDataType();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ModifyMonitoredItemsCount", IsRequired = false, Order = 22)]
        public ServiceCounterDataType ModifyMonitoredItemsCount
        {
            get
            {
                return m_modifyMonitoredItemsCount;
            }

            set
            {
                m_modifyMonitoredItemsCount = value;

                if (value == null)
                {
                    m_modifyMonitoredItemsCount = new ServiceCounterDataType();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "SetMonitoringModeCount", IsRequired = false, Order = 23)]
        public ServiceCounterDataType SetMonitoringModeCount
        {
            get
            {
                return m_setMonitoringModeCount;
            }

            set
            {
                m_setMonitoringModeCount = value;

                if (value == null)
                {
                    m_setMonitoringModeCount = new ServiceCounterDataType();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "SetTriggeringCount", IsRequired = false, Order = 24)]
        public ServiceCounterDataType SetTriggeringCount
        {
            get
            {
                return m_setTriggeringCount;
            }

            set
            {
                m_setTriggeringCount = value;

                if (value == null)
                {
                    m_setTriggeringCount = new ServiceCounterDataType();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "DeleteMonitoredItemsCount", IsRequired = false, Order = 25)]
        public ServiceCounterDataType DeleteMonitoredItemsCount
        {
            get
            {
                return m_deleteMonitoredItemsCount;
            }

            set
            {
                m_deleteMonitoredItemsCount = value;

                if (value == null)
                {
                    m_deleteMonitoredItemsCount = new ServiceCounterDataType();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "CreateSubscriptionCount", IsRequired = false, Order = 26)]
        public ServiceCounterDataType CreateSubscriptionCount
        {
            get
            {
                return m_createSubscriptionCount;
            }

            set
            {
                m_createSubscriptionCount = value;

                if (value == null)
                {
                    m_createSubscriptionCount = new ServiceCounterDataType();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ModifySubscriptionCount", IsRequired = false, Order = 27)]
        public ServiceCounterDataType ModifySubscriptionCount
        {
            get
            {
                return m_modifySubscriptionCount;
            }

            set
            {
                m_modifySubscriptionCount = value;

                if (value == null)
                {
                    m_modifySubscriptionCount = new ServiceCounterDataType();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "SetPublishingModeCount", IsRequired = false, Order = 28)]
        public ServiceCounterDataType SetPublishingModeCount
        {
            get
            {
                return m_setPublishingModeCount;
            }

            set
            {
                m_setPublishingModeCount = value;

                if (value == null)
                {
                    m_setPublishingModeCount = new ServiceCounterDataType();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "PublishCount", IsRequired = false, Order = 29)]
        public ServiceCounterDataType PublishCount
        {
            get
            {
                return m_publishCount;
            }

            set
            {
                m_publishCount = value;

                if (value == null)
                {
                    m_publishCount = new ServiceCounterDataType();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RepublishCount", IsRequired = false, Order = 30)]
        public ServiceCounterDataType RepublishCount
        {
            get
            {
                return m_republishCount;
            }

            set
            {
                m_republishCount = value;

                if (value == null)
                {
                    m_republishCount = new ServiceCounterDataType();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "TransferSubscriptionsCount", IsRequired = false, Order = 31)]
        public ServiceCounterDataType TransferSubscriptionsCount
        {
            get
            {
                return m_transferSubscriptionsCount;
            }

            set
            {
                m_transferSubscriptionsCount = value;

                if (value == null)
                {
                    m_transferSubscriptionsCount = new ServiceCounterDataType();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "DeleteSubscriptionsCount", IsRequired = false, Order = 32)]
        public ServiceCounterDataType DeleteSubscriptionsCount
        {
            get
            {
                return m_deleteSubscriptionsCount;
            }

            set
            {
                m_deleteSubscriptionsCount = value;

                if (value == null)
                {
                    m_deleteSubscriptionsCount = new ServiceCounterDataType();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "AddNodesCount", IsRequired = false, Order = 33)]
        public ServiceCounterDataType AddNodesCount
        {
            get
            {
                return m_addNodesCount;
            }

            set
            {
                m_addNodesCount = value;

                if (value == null)
                {
                    m_addNodesCount = new ServiceCounterDataType();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "AddReferencesCount", IsRequired = false, Order = 34)]
        public ServiceCounterDataType AddReferencesCount
        {
            get
            {
                return m_addReferencesCount;
            }

            set
            {
                m_addReferencesCount = value;

                if (value == null)
                {
                    m_addReferencesCount = new ServiceCounterDataType();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "DeleteNodesCount", IsRequired = false, Order = 35)]
        public ServiceCounterDataType DeleteNodesCount
        {
            get
            {
                return m_deleteNodesCount;
            }

            set
            {
                m_deleteNodesCount = value;

                if (value == null)
                {
                    m_deleteNodesCount = new ServiceCounterDataType();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "DeleteReferencesCount", IsRequired = false, Order = 36)]
        public ServiceCounterDataType DeleteReferencesCount
        {
            get
            {
                return m_deleteReferencesCount;
            }

            set
            {
                m_deleteReferencesCount = value;

                if (value == null)
                {
                    m_deleteReferencesCount = new ServiceCounterDataType();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "BrowseCount", IsRequired = false, Order = 37)]
        public ServiceCounterDataType BrowseCount
        {
            get
            {
                return m_browseCount;
            }

            set
            {
                m_browseCount = value;

                if (value == null)
                {
                    m_browseCount = new ServiceCounterDataType();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "BrowseNextCount", IsRequired = false, Order = 38)]
        public ServiceCounterDataType BrowseNextCount
        {
            get
            {
                return m_browseNextCount;
            }

            set
            {
                m_browseNextCount = value;

                if (value == null)
                {
                    m_browseNextCount = new ServiceCounterDataType();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "TranslateBrowsePathsToNodeIdsCount", IsRequired = false, Order = 39)]
        public ServiceCounterDataType TranslateBrowsePathsToNodeIdsCount
        {
            get
            {
                return m_translateBrowsePathsToNodeIdsCount;
            }

            set
            {
                m_translateBrowsePathsToNodeIdsCount = value;

                if (value == null)
                {
                    m_translateBrowsePathsToNodeIdsCount = new ServiceCounterDataType();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "QueryFirstCount", IsRequired = false, Order = 40)]
        public ServiceCounterDataType QueryFirstCount
        {
            get
            {
                return m_queryFirstCount;
            }

            set
            {
                m_queryFirstCount = value;

                if (value == null)
                {
                    m_queryFirstCount = new ServiceCounterDataType();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "QueryNextCount", IsRequired = false, Order = 41)]
        public ServiceCounterDataType QueryNextCount
        {
            get
            {
                return m_queryNextCount;
            }

            set
            {
                m_queryNextCount = value;

                if (value == null)
                {
                    m_queryNextCount = new ServiceCounterDataType();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "RegisterNodesCount", IsRequired = false, Order = 42)]
        public ServiceCounterDataType RegisterNodesCount
        {
            get
            {
                return m_registerNodesCount;
            }

            set
            {
                m_registerNodesCount = value;

                if (value == null)
                {
                    m_registerNodesCount = new ServiceCounterDataType();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "UnregisterNodesCount", IsRequired = false, Order = 43)]
        public ServiceCounterDataType UnregisterNodesCount
        {
            get
            {
                return m_unregisterNodesCount;
            }

            set
            {
                m_unregisterNodesCount = value;

                if (value == null)
                {
                    m_unregisterNodesCount = new ServiceCounterDataType();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.SessionDiagnosticsDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.SessionDiagnosticsDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.SessionDiagnosticsDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteNodeId("SessionId", SessionId);
            encoder.WriteString("SessionName", SessionName);
            encoder.WriteEncodeable("ClientDescription", ClientDescription, typeof(ApplicationDescription));
            encoder.WriteString("ServerUri", ServerUri);
            encoder.WriteString("EndpointUrl", EndpointUrl);
            encoder.WriteStringArray("LocaleIds", LocaleIds);
            encoder.WriteDouble("ActualSessionTimeout", ActualSessionTimeout);
            encoder.WriteUInt32("MaxResponseMessageSize", MaxResponseMessageSize);
            encoder.WriteDateTime("ClientConnectionTime", ClientConnectionTime);
            encoder.WriteDateTime("ClientLastContactTime", ClientLastContactTime);
            encoder.WriteUInt32("CurrentSubscriptionsCount", CurrentSubscriptionsCount);
            encoder.WriteUInt32("CurrentMonitoredItemsCount", CurrentMonitoredItemsCount);
            encoder.WriteUInt32("CurrentPublishRequestsInQueue", CurrentPublishRequestsInQueue);
            encoder.WriteEncodeable("TotalRequestCount", TotalRequestCount, typeof(ServiceCounterDataType));
            encoder.WriteUInt32("UnauthorizedRequestCount", UnauthorizedRequestCount);
            encoder.WriteEncodeable("ReadCount", ReadCount, typeof(ServiceCounterDataType));
            encoder.WriteEncodeable("HistoryReadCount", HistoryReadCount, typeof(ServiceCounterDataType));
            encoder.WriteEncodeable("WriteCount", WriteCount, typeof(ServiceCounterDataType));
            encoder.WriteEncodeable("HistoryUpdateCount", HistoryUpdateCount, typeof(ServiceCounterDataType));
            encoder.WriteEncodeable("CallCount", CallCount, typeof(ServiceCounterDataType));
            encoder.WriteEncodeable("CreateMonitoredItemsCount", CreateMonitoredItemsCount, typeof(ServiceCounterDataType));
            encoder.WriteEncodeable("ModifyMonitoredItemsCount", ModifyMonitoredItemsCount, typeof(ServiceCounterDataType));
            encoder.WriteEncodeable("SetMonitoringModeCount", SetMonitoringModeCount, typeof(ServiceCounterDataType));
            encoder.WriteEncodeable("SetTriggeringCount", SetTriggeringCount, typeof(ServiceCounterDataType));
            encoder.WriteEncodeable("DeleteMonitoredItemsCount", DeleteMonitoredItemsCount, typeof(ServiceCounterDataType));
            encoder.WriteEncodeable("CreateSubscriptionCount", CreateSubscriptionCount, typeof(ServiceCounterDataType));
            encoder.WriteEncodeable("ModifySubscriptionCount", ModifySubscriptionCount, typeof(ServiceCounterDataType));
            encoder.WriteEncodeable("SetPublishingModeCount", SetPublishingModeCount, typeof(ServiceCounterDataType));
            encoder.WriteEncodeable("PublishCount", PublishCount, typeof(ServiceCounterDataType));
            encoder.WriteEncodeable("RepublishCount", RepublishCount, typeof(ServiceCounterDataType));
            encoder.WriteEncodeable("TransferSubscriptionsCount", TransferSubscriptionsCount, typeof(ServiceCounterDataType));
            encoder.WriteEncodeable("DeleteSubscriptionsCount", DeleteSubscriptionsCount, typeof(ServiceCounterDataType));
            encoder.WriteEncodeable("AddNodesCount", AddNodesCount, typeof(ServiceCounterDataType));
            encoder.WriteEncodeable("AddReferencesCount", AddReferencesCount, typeof(ServiceCounterDataType));
            encoder.WriteEncodeable("DeleteNodesCount", DeleteNodesCount, typeof(ServiceCounterDataType));
            encoder.WriteEncodeable("DeleteReferencesCount", DeleteReferencesCount, typeof(ServiceCounterDataType));
            encoder.WriteEncodeable("BrowseCount", BrowseCount, typeof(ServiceCounterDataType));
            encoder.WriteEncodeable("BrowseNextCount", BrowseNextCount, typeof(ServiceCounterDataType));
            encoder.WriteEncodeable("TranslateBrowsePathsToNodeIdsCount", TranslateBrowsePathsToNodeIdsCount, typeof(ServiceCounterDataType));
            encoder.WriteEncodeable("QueryFirstCount", QueryFirstCount, typeof(ServiceCounterDataType));
            encoder.WriteEncodeable("QueryNextCount", QueryNextCount, typeof(ServiceCounterDataType));
            encoder.WriteEncodeable("RegisterNodesCount", RegisterNodesCount, typeof(ServiceCounterDataType));
            encoder.WriteEncodeable("UnregisterNodesCount", UnregisterNodesCount, typeof(ServiceCounterDataType));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            SessionId = decoder.ReadNodeId("SessionId");
            SessionName = decoder.ReadString("SessionName");
            ClientDescription = (ApplicationDescription)decoder.ReadEncodeable("ClientDescription", typeof(ApplicationDescription));
            ServerUri = decoder.ReadString("ServerUri");
            EndpointUrl = decoder.ReadString("EndpointUrl");
            LocaleIds = decoder.ReadStringArray("LocaleIds");
            ActualSessionTimeout = decoder.ReadDouble("ActualSessionTimeout");
            MaxResponseMessageSize = decoder.ReadUInt32("MaxResponseMessageSize");
            ClientConnectionTime = decoder.ReadDateTime("ClientConnectionTime");
            ClientLastContactTime = decoder.ReadDateTime("ClientLastContactTime");
            CurrentSubscriptionsCount = decoder.ReadUInt32("CurrentSubscriptionsCount");
            CurrentMonitoredItemsCount = decoder.ReadUInt32("CurrentMonitoredItemsCount");
            CurrentPublishRequestsInQueue = decoder.ReadUInt32("CurrentPublishRequestsInQueue");
            TotalRequestCount = (ServiceCounterDataType)decoder.ReadEncodeable("TotalRequestCount", typeof(ServiceCounterDataType));
            UnauthorizedRequestCount = decoder.ReadUInt32("UnauthorizedRequestCount");
            ReadCount = (ServiceCounterDataType)decoder.ReadEncodeable("ReadCount", typeof(ServiceCounterDataType));
            HistoryReadCount = (ServiceCounterDataType)decoder.ReadEncodeable("HistoryReadCount", typeof(ServiceCounterDataType));
            WriteCount = (ServiceCounterDataType)decoder.ReadEncodeable("WriteCount", typeof(ServiceCounterDataType));
            HistoryUpdateCount = (ServiceCounterDataType)decoder.ReadEncodeable("HistoryUpdateCount", typeof(ServiceCounterDataType));
            CallCount = (ServiceCounterDataType)decoder.ReadEncodeable("CallCount", typeof(ServiceCounterDataType));
            CreateMonitoredItemsCount = (ServiceCounterDataType)decoder.ReadEncodeable("CreateMonitoredItemsCount", typeof(ServiceCounterDataType));
            ModifyMonitoredItemsCount = (ServiceCounterDataType)decoder.ReadEncodeable("ModifyMonitoredItemsCount", typeof(ServiceCounterDataType));
            SetMonitoringModeCount = (ServiceCounterDataType)decoder.ReadEncodeable("SetMonitoringModeCount", typeof(ServiceCounterDataType));
            SetTriggeringCount = (ServiceCounterDataType)decoder.ReadEncodeable("SetTriggeringCount", typeof(ServiceCounterDataType));
            DeleteMonitoredItemsCount = (ServiceCounterDataType)decoder.ReadEncodeable("DeleteMonitoredItemsCount", typeof(ServiceCounterDataType));
            CreateSubscriptionCount = (ServiceCounterDataType)decoder.ReadEncodeable("CreateSubscriptionCount", typeof(ServiceCounterDataType));
            ModifySubscriptionCount = (ServiceCounterDataType)decoder.ReadEncodeable("ModifySubscriptionCount", typeof(ServiceCounterDataType));
            SetPublishingModeCount = (ServiceCounterDataType)decoder.ReadEncodeable("SetPublishingModeCount", typeof(ServiceCounterDataType));
            PublishCount = (ServiceCounterDataType)decoder.ReadEncodeable("PublishCount", typeof(ServiceCounterDataType));
            RepublishCount = (ServiceCounterDataType)decoder.ReadEncodeable("RepublishCount", typeof(ServiceCounterDataType));
            TransferSubscriptionsCount = (ServiceCounterDataType)decoder.ReadEncodeable("TransferSubscriptionsCount", typeof(ServiceCounterDataType));
            DeleteSubscriptionsCount = (ServiceCounterDataType)decoder.ReadEncodeable("DeleteSubscriptionsCount", typeof(ServiceCounterDataType));
            AddNodesCount = (ServiceCounterDataType)decoder.ReadEncodeable("AddNodesCount", typeof(ServiceCounterDataType));
            AddReferencesCount = (ServiceCounterDataType)decoder.ReadEncodeable("AddReferencesCount", typeof(ServiceCounterDataType));
            DeleteNodesCount = (ServiceCounterDataType)decoder.ReadEncodeable("DeleteNodesCount", typeof(ServiceCounterDataType));
            DeleteReferencesCount = (ServiceCounterDataType)decoder.ReadEncodeable("DeleteReferencesCount", typeof(ServiceCounterDataType));
            BrowseCount = (ServiceCounterDataType)decoder.ReadEncodeable("BrowseCount", typeof(ServiceCounterDataType));
            BrowseNextCount = (ServiceCounterDataType)decoder.ReadEncodeable("BrowseNextCount", typeof(ServiceCounterDataType));
            TranslateBrowsePathsToNodeIdsCount = (ServiceCounterDataType)decoder.ReadEncodeable("TranslateBrowsePathsToNodeIdsCount", typeof(ServiceCounterDataType));
            QueryFirstCount = (ServiceCounterDataType)decoder.ReadEncodeable("QueryFirstCount", typeof(ServiceCounterDataType));
            QueryNextCount = (ServiceCounterDataType)decoder.ReadEncodeable("QueryNextCount", typeof(ServiceCounterDataType));
            RegisterNodesCount = (ServiceCounterDataType)decoder.ReadEncodeable("RegisterNodesCount", typeof(ServiceCounterDataType));
            UnregisterNodesCount = (ServiceCounterDataType)decoder.ReadEncodeable("UnregisterNodesCount", typeof(ServiceCounterDataType));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            SessionDiagnosticsDataType value = encodeable as SessionDiagnosticsDataType;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_sessionId, value.m_sessionId)) return false;
            if (!Utils.IsEqual(m_sessionName, value.m_sessionName)) return false;
            if (!Utils.IsEqual(m_clientDescription, value.m_clientDescription)) return false;
            if (!Utils.IsEqual(m_serverUri, value.m_serverUri)) return false;
            if (!Utils.IsEqual(m_endpointUrl, value.m_endpointUrl)) return false;
            if (!Utils.IsEqual(m_localeIds, value.m_localeIds)) return false;
            if (!Utils.IsEqual(m_actualSessionTimeout, value.m_actualSessionTimeout)) return false;
            if (!Utils.IsEqual(m_maxResponseMessageSize, value.m_maxResponseMessageSize)) return false;
            if (!Utils.IsEqual(m_clientConnectionTime, value.m_clientConnectionTime)) return false;
            if (!Utils.IsEqual(m_clientLastContactTime, value.m_clientLastContactTime)) return false;
            if (!Utils.IsEqual(m_currentSubscriptionsCount, value.m_currentSubscriptionsCount)) return false;
            if (!Utils.IsEqual(m_currentMonitoredItemsCount, value.m_currentMonitoredItemsCount)) return false;
            if (!Utils.IsEqual(m_currentPublishRequestsInQueue, value.m_currentPublishRequestsInQueue)) return false;
            if (!Utils.IsEqual(m_totalRequestCount, value.m_totalRequestCount)) return false;
            if (!Utils.IsEqual(m_unauthorizedRequestCount, value.m_unauthorizedRequestCount)) return false;
            if (!Utils.IsEqual(m_readCount, value.m_readCount)) return false;
            if (!Utils.IsEqual(m_historyReadCount, value.m_historyReadCount)) return false;
            if (!Utils.IsEqual(m_writeCount, value.m_writeCount)) return false;
            if (!Utils.IsEqual(m_historyUpdateCount, value.m_historyUpdateCount)) return false;
            if (!Utils.IsEqual(m_callCount, value.m_callCount)) return false;
            if (!Utils.IsEqual(m_createMonitoredItemsCount, value.m_createMonitoredItemsCount)) return false;
            if (!Utils.IsEqual(m_modifyMonitoredItemsCount, value.m_modifyMonitoredItemsCount)) return false;
            if (!Utils.IsEqual(m_setMonitoringModeCount, value.m_setMonitoringModeCount)) return false;
            if (!Utils.IsEqual(m_setTriggeringCount, value.m_setTriggeringCount)) return false;
            if (!Utils.IsEqual(m_deleteMonitoredItemsCount, value.m_deleteMonitoredItemsCount)) return false;
            if (!Utils.IsEqual(m_createSubscriptionCount, value.m_createSubscriptionCount)) return false;
            if (!Utils.IsEqual(m_modifySubscriptionCount, value.m_modifySubscriptionCount)) return false;
            if (!Utils.IsEqual(m_setPublishingModeCount, value.m_setPublishingModeCount)) return false;
            if (!Utils.IsEqual(m_publishCount, value.m_publishCount)) return false;
            if (!Utils.IsEqual(m_republishCount, value.m_republishCount)) return false;
            if (!Utils.IsEqual(m_transferSubscriptionsCount, value.m_transferSubscriptionsCount)) return false;
            if (!Utils.IsEqual(m_deleteSubscriptionsCount, value.m_deleteSubscriptionsCount)) return false;
            if (!Utils.IsEqual(m_addNodesCount, value.m_addNodesCount)) return false;
            if (!Utils.IsEqual(m_addReferencesCount, value.m_addReferencesCount)) return false;
            if (!Utils.IsEqual(m_deleteNodesCount, value.m_deleteNodesCount)) return false;
            if (!Utils.IsEqual(m_deleteReferencesCount, value.m_deleteReferencesCount)) return false;
            if (!Utils.IsEqual(m_browseCount, value.m_browseCount)) return false;
            if (!Utils.IsEqual(m_browseNextCount, value.m_browseNextCount)) return false;
            if (!Utils.IsEqual(m_translateBrowsePathsToNodeIdsCount, value.m_translateBrowsePathsToNodeIdsCount)) return false;
            if (!Utils.IsEqual(m_queryFirstCount, value.m_queryFirstCount)) return false;
            if (!Utils.IsEqual(m_queryNextCount, value.m_queryNextCount)) return false;
            if (!Utils.IsEqual(m_registerNodesCount, value.m_registerNodesCount)) return false;
            if (!Utils.IsEqual(m_unregisterNodesCount, value.m_unregisterNodesCount)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (SessionDiagnosticsDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            SessionDiagnosticsDataType clone = (SessionDiagnosticsDataType)base.MemberwiseClone();

            clone.m_sessionId = (NodeId)Utils.Clone(this.m_sessionId);
            clone.m_sessionName = (string)Utils.Clone(this.m_sessionName);
            clone.m_clientDescription = (ApplicationDescription)Utils.Clone(this.m_clientDescription);
            clone.m_serverUri = (string)Utils.Clone(this.m_serverUri);
            clone.m_endpointUrl = (string)Utils.Clone(this.m_endpointUrl);
            clone.m_localeIds = (StringCollection)Utils.Clone(this.m_localeIds);
            clone.m_actualSessionTimeout = (double)Utils.Clone(this.m_actualSessionTimeout);
            clone.m_maxResponseMessageSize = (uint)Utils.Clone(this.m_maxResponseMessageSize);
            clone.m_clientConnectionTime = (DateTime)Utils.Clone(this.m_clientConnectionTime);
            clone.m_clientLastContactTime = (DateTime)Utils.Clone(this.m_clientLastContactTime);
            clone.m_currentSubscriptionsCount = (uint)Utils.Clone(this.m_currentSubscriptionsCount);
            clone.m_currentMonitoredItemsCount = (uint)Utils.Clone(this.m_currentMonitoredItemsCount);
            clone.m_currentPublishRequestsInQueue = (uint)Utils.Clone(this.m_currentPublishRequestsInQueue);
            clone.m_totalRequestCount = (ServiceCounterDataType)Utils.Clone(this.m_totalRequestCount);
            clone.m_unauthorizedRequestCount = (uint)Utils.Clone(this.m_unauthorizedRequestCount);
            clone.m_readCount = (ServiceCounterDataType)Utils.Clone(this.m_readCount);
            clone.m_historyReadCount = (ServiceCounterDataType)Utils.Clone(this.m_historyReadCount);
            clone.m_writeCount = (ServiceCounterDataType)Utils.Clone(this.m_writeCount);
            clone.m_historyUpdateCount = (ServiceCounterDataType)Utils.Clone(this.m_historyUpdateCount);
            clone.m_callCount = (ServiceCounterDataType)Utils.Clone(this.m_callCount);
            clone.m_createMonitoredItemsCount = (ServiceCounterDataType)Utils.Clone(this.m_createMonitoredItemsCount);
            clone.m_modifyMonitoredItemsCount = (ServiceCounterDataType)Utils.Clone(this.m_modifyMonitoredItemsCount);
            clone.m_setMonitoringModeCount = (ServiceCounterDataType)Utils.Clone(this.m_setMonitoringModeCount);
            clone.m_setTriggeringCount = (ServiceCounterDataType)Utils.Clone(this.m_setTriggeringCount);
            clone.m_deleteMonitoredItemsCount = (ServiceCounterDataType)Utils.Clone(this.m_deleteMonitoredItemsCount);
            clone.m_createSubscriptionCount = (ServiceCounterDataType)Utils.Clone(this.m_createSubscriptionCount);
            clone.m_modifySubscriptionCount = (ServiceCounterDataType)Utils.Clone(this.m_modifySubscriptionCount);
            clone.m_setPublishingModeCount = (ServiceCounterDataType)Utils.Clone(this.m_setPublishingModeCount);
            clone.m_publishCount = (ServiceCounterDataType)Utils.Clone(this.m_publishCount);
            clone.m_republishCount = (ServiceCounterDataType)Utils.Clone(this.m_republishCount);
            clone.m_transferSubscriptionsCount = (ServiceCounterDataType)Utils.Clone(this.m_transferSubscriptionsCount);
            clone.m_deleteSubscriptionsCount = (ServiceCounterDataType)Utils.Clone(this.m_deleteSubscriptionsCount);
            clone.m_addNodesCount = (ServiceCounterDataType)Utils.Clone(this.m_addNodesCount);
            clone.m_addReferencesCount = (ServiceCounterDataType)Utils.Clone(this.m_addReferencesCount);
            clone.m_deleteNodesCount = (ServiceCounterDataType)Utils.Clone(this.m_deleteNodesCount);
            clone.m_deleteReferencesCount = (ServiceCounterDataType)Utils.Clone(this.m_deleteReferencesCount);
            clone.m_browseCount = (ServiceCounterDataType)Utils.Clone(this.m_browseCount);
            clone.m_browseNextCount = (ServiceCounterDataType)Utils.Clone(this.m_browseNextCount);
            clone.m_translateBrowsePathsToNodeIdsCount = (ServiceCounterDataType)Utils.Clone(this.m_translateBrowsePathsToNodeIdsCount);
            clone.m_queryFirstCount = (ServiceCounterDataType)Utils.Clone(this.m_queryFirstCount);
            clone.m_queryNextCount = (ServiceCounterDataType)Utils.Clone(this.m_queryNextCount);
            clone.m_registerNodesCount = (ServiceCounterDataType)Utils.Clone(this.m_registerNodesCount);
            clone.m_unregisterNodesCount = (ServiceCounterDataType)Utils.Clone(this.m_unregisterNodesCount);

            return clone;
        }
        #endregion

        #region Private Fields
        private NodeId m_sessionId;
        private string m_sessionName;
        private ApplicationDescription m_clientDescription;
        private string m_serverUri;
        private string m_endpointUrl;
        private StringCollection m_localeIds;
        private double m_actualSessionTimeout;
        private uint m_maxResponseMessageSize;
        private DateTime m_clientConnectionTime;
        private DateTime m_clientLastContactTime;
        private uint m_currentSubscriptionsCount;
        private uint m_currentMonitoredItemsCount;
        private uint m_currentPublishRequestsInQueue;
        private ServiceCounterDataType m_totalRequestCount;
        private uint m_unauthorizedRequestCount;
        private ServiceCounterDataType m_readCount;
        private ServiceCounterDataType m_historyReadCount;
        private ServiceCounterDataType m_writeCount;
        private ServiceCounterDataType m_historyUpdateCount;
        private ServiceCounterDataType m_callCount;
        private ServiceCounterDataType m_createMonitoredItemsCount;
        private ServiceCounterDataType m_modifyMonitoredItemsCount;
        private ServiceCounterDataType m_setMonitoringModeCount;
        private ServiceCounterDataType m_setTriggeringCount;
        private ServiceCounterDataType m_deleteMonitoredItemsCount;
        private ServiceCounterDataType m_createSubscriptionCount;
        private ServiceCounterDataType m_modifySubscriptionCount;
        private ServiceCounterDataType m_setPublishingModeCount;
        private ServiceCounterDataType m_publishCount;
        private ServiceCounterDataType m_republishCount;
        private ServiceCounterDataType m_transferSubscriptionsCount;
        private ServiceCounterDataType m_deleteSubscriptionsCount;
        private ServiceCounterDataType m_addNodesCount;
        private ServiceCounterDataType m_addReferencesCount;
        private ServiceCounterDataType m_deleteNodesCount;
        private ServiceCounterDataType m_deleteReferencesCount;
        private ServiceCounterDataType m_browseCount;
        private ServiceCounterDataType m_browseNextCount;
        private ServiceCounterDataType m_translateBrowsePathsToNodeIdsCount;
        private ServiceCounterDataType m_queryFirstCount;
        private ServiceCounterDataType m_queryNextCount;
        private ServiceCounterDataType m_registerNodesCount;
        private ServiceCounterDataType m_unregisterNodesCount;
        #endregion
    }

    #region SessionDiagnosticsDataTypeCollection Class
    /// <summary>
    /// A collection of SessionDiagnosticsDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfSessionDiagnosticsDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "SessionDiagnosticsDataType")]
    #if !NET_STANDARD
    public partial class SessionDiagnosticsDataTypeCollection : List<SessionDiagnosticsDataType>, ICloneable
    #else
    public partial class SessionDiagnosticsDataTypeCollection : List<SessionDiagnosticsDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public SessionDiagnosticsDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public SessionDiagnosticsDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public SessionDiagnosticsDataTypeCollection(IEnumerable<SessionDiagnosticsDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator SessionDiagnosticsDataTypeCollection(SessionDiagnosticsDataType[] values)
        {
            if (values != null)
            {
                return new SessionDiagnosticsDataTypeCollection(values);
            }

            return new SessionDiagnosticsDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator SessionDiagnosticsDataType[](SessionDiagnosticsDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (SessionDiagnosticsDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            SessionDiagnosticsDataTypeCollection clone = new SessionDiagnosticsDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((SessionDiagnosticsDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region SessionSecurityDiagnosticsDataType Class
    #if (!OPCUA_EXCLUDE_SessionSecurityDiagnosticsDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class SessionSecurityDiagnosticsDataType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public SessionSecurityDiagnosticsDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_sessionId = null;
            m_clientUserIdOfSession = null;
            m_clientUserIdHistory = new StringCollection();
            m_authenticationMechanism = null;
            m_encoding = null;
            m_transportProtocol = null;
            m_securityMode = MessageSecurityMode.Invalid;
            m_securityPolicyUri = null;
            m_clientCertificate = null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "SessionId", IsRequired = false, Order = 1)]
        public NodeId SessionId
        {
            get { return m_sessionId;  }
            set { m_sessionId = value; }
        }

        /// <remarks />
        [DataMember(Name = "ClientUserIdOfSession", IsRequired = false, Order = 2)]
        public string ClientUserIdOfSession
        {
            get { return m_clientUserIdOfSession;  }
            set { m_clientUserIdOfSession = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "ClientUserIdHistory", IsRequired = false, Order = 3)]
        public StringCollection ClientUserIdHistory
        {
            get
            {
                return m_clientUserIdHistory;
            }

            set
            {
                m_clientUserIdHistory = value;

                if (value == null)
                {
                    m_clientUserIdHistory = new StringCollection();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "AuthenticationMechanism", IsRequired = false, Order = 4)]
        public string AuthenticationMechanism
        {
            get { return m_authenticationMechanism;  }
            set { m_authenticationMechanism = value; }
        }

        /// <remarks />
        [DataMember(Name = "Encoding", IsRequired = false, Order = 5)]
        public string Encoding
        {
            get { return m_encoding;  }
            set { m_encoding = value; }
        }

        /// <remarks />
        [DataMember(Name = "TransportProtocol", IsRequired = false, Order = 6)]
        public string TransportProtocol
        {
            get { return m_transportProtocol;  }
            set { m_transportProtocol = value; }
        }

        /// <remarks />
        [DataMember(Name = "SecurityMode", IsRequired = false, Order = 7)]
        public MessageSecurityMode SecurityMode
        {
            get { return m_securityMode;  }
            set { m_securityMode = value; }
        }

        /// <remarks />
        [DataMember(Name = "SecurityPolicyUri", IsRequired = false, Order = 8)]
        public string SecurityPolicyUri
        {
            get { return m_securityPolicyUri;  }
            set { m_securityPolicyUri = value; }
        }

        /// <remarks />
        [DataMember(Name = "ClientCertificate", IsRequired = false, Order = 9)]
        public byte[] ClientCertificate
        {
            get { return m_clientCertificate;  }
            set { m_clientCertificate = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.SessionSecurityDiagnosticsDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.SessionSecurityDiagnosticsDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.SessionSecurityDiagnosticsDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteNodeId("SessionId", SessionId);
            encoder.WriteString("ClientUserIdOfSession", ClientUserIdOfSession);
            encoder.WriteStringArray("ClientUserIdHistory", ClientUserIdHistory);
            encoder.WriteString("AuthenticationMechanism", AuthenticationMechanism);
            encoder.WriteString("Encoding", Encoding);
            encoder.WriteString("TransportProtocol", TransportProtocol);
            encoder.WriteEnumerated("SecurityMode", SecurityMode);
            encoder.WriteString("SecurityPolicyUri", SecurityPolicyUri);
            encoder.WriteByteString("ClientCertificate", ClientCertificate);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            SessionId = decoder.ReadNodeId("SessionId");
            ClientUserIdOfSession = decoder.ReadString("ClientUserIdOfSession");
            ClientUserIdHistory = decoder.ReadStringArray("ClientUserIdHistory");
            AuthenticationMechanism = decoder.ReadString("AuthenticationMechanism");
            Encoding = decoder.ReadString("Encoding");
            TransportProtocol = decoder.ReadString("TransportProtocol");
            SecurityMode = (MessageSecurityMode)decoder.ReadEnumerated("SecurityMode", typeof(MessageSecurityMode));
            SecurityPolicyUri = decoder.ReadString("SecurityPolicyUri");
            ClientCertificate = decoder.ReadByteString("ClientCertificate");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            SessionSecurityDiagnosticsDataType value = encodeable as SessionSecurityDiagnosticsDataType;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_sessionId, value.m_sessionId)) return false;
            if (!Utils.IsEqual(m_clientUserIdOfSession, value.m_clientUserIdOfSession)) return false;
            if (!Utils.IsEqual(m_clientUserIdHistory, value.m_clientUserIdHistory)) return false;
            if (!Utils.IsEqual(m_authenticationMechanism, value.m_authenticationMechanism)) return false;
            if (!Utils.IsEqual(m_encoding, value.m_encoding)) return false;
            if (!Utils.IsEqual(m_transportProtocol, value.m_transportProtocol)) return false;
            if (!Utils.IsEqual(m_securityMode, value.m_securityMode)) return false;
            if (!Utils.IsEqual(m_securityPolicyUri, value.m_securityPolicyUri)) return false;
            if (!Utils.IsEqual(m_clientCertificate, value.m_clientCertificate)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (SessionSecurityDiagnosticsDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            SessionSecurityDiagnosticsDataType clone = (SessionSecurityDiagnosticsDataType)base.MemberwiseClone();

            clone.m_sessionId = (NodeId)Utils.Clone(this.m_sessionId);
            clone.m_clientUserIdOfSession = (string)Utils.Clone(this.m_clientUserIdOfSession);
            clone.m_clientUserIdHistory = (StringCollection)Utils.Clone(this.m_clientUserIdHistory);
            clone.m_authenticationMechanism = (string)Utils.Clone(this.m_authenticationMechanism);
            clone.m_encoding = (string)Utils.Clone(this.m_encoding);
            clone.m_transportProtocol = (string)Utils.Clone(this.m_transportProtocol);
            clone.m_securityMode = (MessageSecurityMode)Utils.Clone(this.m_securityMode);
            clone.m_securityPolicyUri = (string)Utils.Clone(this.m_securityPolicyUri);
            clone.m_clientCertificate = (byte[])Utils.Clone(this.m_clientCertificate);

            return clone;
        }
        #endregion

        #region Private Fields
        private NodeId m_sessionId;
        private string m_clientUserIdOfSession;
        private StringCollection m_clientUserIdHistory;
        private string m_authenticationMechanism;
        private string m_encoding;
        private string m_transportProtocol;
        private MessageSecurityMode m_securityMode;
        private string m_securityPolicyUri;
        private byte[] m_clientCertificate;
        #endregion
    }

    #region SessionSecurityDiagnosticsDataTypeCollection Class
    /// <summary>
    /// A collection of SessionSecurityDiagnosticsDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfSessionSecurityDiagnosticsDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "SessionSecurityDiagnosticsDataType")]
    #if !NET_STANDARD
    public partial class SessionSecurityDiagnosticsDataTypeCollection : List<SessionSecurityDiagnosticsDataType>, ICloneable
    #else
    public partial class SessionSecurityDiagnosticsDataTypeCollection : List<SessionSecurityDiagnosticsDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public SessionSecurityDiagnosticsDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public SessionSecurityDiagnosticsDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public SessionSecurityDiagnosticsDataTypeCollection(IEnumerable<SessionSecurityDiagnosticsDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator SessionSecurityDiagnosticsDataTypeCollection(SessionSecurityDiagnosticsDataType[] values)
        {
            if (values != null)
            {
                return new SessionSecurityDiagnosticsDataTypeCollection(values);
            }

            return new SessionSecurityDiagnosticsDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator SessionSecurityDiagnosticsDataType[](SessionSecurityDiagnosticsDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (SessionSecurityDiagnosticsDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            SessionSecurityDiagnosticsDataTypeCollection clone = new SessionSecurityDiagnosticsDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((SessionSecurityDiagnosticsDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region ServiceCounterDataType Class
    #if (!OPCUA_EXCLUDE_ServiceCounterDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ServiceCounterDataType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ServiceCounterDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_totalCount = (uint)0;
            m_errorCount = (uint)0;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "TotalCount", IsRequired = false, Order = 1)]
        public uint TotalCount
        {
            get { return m_totalCount;  }
            set { m_totalCount = value; }
        }

        /// <remarks />
        [DataMember(Name = "ErrorCount", IsRequired = false, Order = 2)]
        public uint ErrorCount
        {
            get { return m_errorCount;  }
            set { m_errorCount = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ServiceCounterDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ServiceCounterDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ServiceCounterDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteUInt32("TotalCount", TotalCount);
            encoder.WriteUInt32("ErrorCount", ErrorCount);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            TotalCount = decoder.ReadUInt32("TotalCount");
            ErrorCount = decoder.ReadUInt32("ErrorCount");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ServiceCounterDataType value = encodeable as ServiceCounterDataType;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_totalCount, value.m_totalCount)) return false;
            if (!Utils.IsEqual(m_errorCount, value.m_errorCount)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (ServiceCounterDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ServiceCounterDataType clone = (ServiceCounterDataType)base.MemberwiseClone();

            clone.m_totalCount = (uint)Utils.Clone(this.m_totalCount);
            clone.m_errorCount = (uint)Utils.Clone(this.m_errorCount);

            return clone;
        }
        #endregion

        #region Private Fields
        private uint m_totalCount;
        private uint m_errorCount;
        #endregion
    }
    #endif
    #endregion

    #region StatusResult Class
    #if (!OPCUA_EXCLUDE_StatusResult)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class StatusResult : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public StatusResult()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_statusCode = StatusCodes.Good;
            m_diagnosticInfo = null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "StatusCode", IsRequired = false, Order = 1)]
        public StatusCode StatusCode
        {
            get { return m_statusCode;  }
            set { m_statusCode = value; }
        }

        /// <remarks />
        [DataMember(Name = "DiagnosticInfo", IsRequired = false, Order = 2)]
        public DiagnosticInfo DiagnosticInfo
        {
            get { return m_diagnosticInfo;  }
            set { m_diagnosticInfo = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.StatusResult; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.StatusResult_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.StatusResult_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteStatusCode("StatusCode", StatusCode);
            encoder.WriteDiagnosticInfo("DiagnosticInfo", DiagnosticInfo);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            StatusCode = decoder.ReadStatusCode("StatusCode");
            DiagnosticInfo = decoder.ReadDiagnosticInfo("DiagnosticInfo");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            StatusResult value = encodeable as StatusResult;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_statusCode, value.m_statusCode)) return false;
            if (!Utils.IsEqual(m_diagnosticInfo, value.m_diagnosticInfo)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (StatusResult)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            StatusResult clone = (StatusResult)base.MemberwiseClone();

            clone.m_statusCode = (StatusCode)Utils.Clone(this.m_statusCode);
            clone.m_diagnosticInfo = (DiagnosticInfo)Utils.Clone(this.m_diagnosticInfo);

            return clone;
        }
        #endregion

        #region Private Fields
        private StatusCode m_statusCode;
        private DiagnosticInfo m_diagnosticInfo;
        #endregion
    }

    #region StatusResultCollection Class
    /// <summary>
    /// A collection of StatusResult objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfStatusResult", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "StatusResult")]
    #if !NET_STANDARD
    public partial class StatusResultCollection : List<StatusResult>, ICloneable
    #else
    public partial class StatusResultCollection : List<StatusResult>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public StatusResultCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public StatusResultCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public StatusResultCollection(IEnumerable<StatusResult> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator StatusResultCollection(StatusResult[] values)
        {
            if (values != null)
            {
                return new StatusResultCollection(values);
            }

            return new StatusResultCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator StatusResult[](StatusResultCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (StatusResultCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            StatusResultCollection clone = new StatusResultCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((StatusResult)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region SubscriptionDiagnosticsDataType Class
    #if (!OPCUA_EXCLUDE_SubscriptionDiagnosticsDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class SubscriptionDiagnosticsDataType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public SubscriptionDiagnosticsDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_sessionId = null;
            m_subscriptionId = (uint)0;
            m_priority = (byte)0;
            m_publishingInterval = (double)0;
            m_maxKeepAliveCount = (uint)0;
            m_maxLifetimeCount = (uint)0;
            m_maxNotificationsPerPublish = (uint)0;
            m_publishingEnabled = true;
            m_modifyCount = (uint)0;
            m_enableCount = (uint)0;
            m_disableCount = (uint)0;
            m_republishRequestCount = (uint)0;
            m_republishMessageRequestCount = (uint)0;
            m_republishMessageCount = (uint)0;
            m_transferRequestCount = (uint)0;
            m_transferredToAltClientCount = (uint)0;
            m_transferredToSameClientCount = (uint)0;
            m_publishRequestCount = (uint)0;
            m_dataChangeNotificationsCount = (uint)0;
            m_eventNotificationsCount = (uint)0;
            m_notificationsCount = (uint)0;
            m_latePublishRequestCount = (uint)0;
            m_currentKeepAliveCount = (uint)0;
            m_currentLifetimeCount = (uint)0;
            m_unacknowledgedMessageCount = (uint)0;
            m_discardedMessageCount = (uint)0;
            m_monitoredItemCount = (uint)0;
            m_disabledMonitoredItemCount = (uint)0;
            m_monitoringQueueOverflowCount = (uint)0;
            m_nextSequenceNumber = (uint)0;
            m_eventQueueOverFlowCount = (uint)0;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "SessionId", IsRequired = false, Order = 1)]
        public NodeId SessionId
        {
            get { return m_sessionId;  }
            set { m_sessionId = value; }
        }

        /// <remarks />
        [DataMember(Name = "SubscriptionId", IsRequired = false, Order = 2)]
        public uint SubscriptionId
        {
            get { return m_subscriptionId;  }
            set { m_subscriptionId = value; }
        }

        /// <remarks />
        [DataMember(Name = "Priority", IsRequired = false, Order = 3)]
        public byte Priority
        {
            get { return m_priority;  }
            set { m_priority = value; }
        }

        /// <remarks />
        [DataMember(Name = "PublishingInterval", IsRequired = false, Order = 4)]
        public double PublishingInterval
        {
            get { return m_publishingInterval;  }
            set { m_publishingInterval = value; }
        }

        /// <remarks />
        [DataMember(Name = "MaxKeepAliveCount", IsRequired = false, Order = 5)]
        public uint MaxKeepAliveCount
        {
            get { return m_maxKeepAliveCount;  }
            set { m_maxKeepAliveCount = value; }
        }

        /// <remarks />
        [DataMember(Name = "MaxLifetimeCount", IsRequired = false, Order = 6)]
        public uint MaxLifetimeCount
        {
            get { return m_maxLifetimeCount;  }
            set { m_maxLifetimeCount = value; }
        }

        /// <remarks />
        [DataMember(Name = "MaxNotificationsPerPublish", IsRequired = false, Order = 7)]
        public uint MaxNotificationsPerPublish
        {
            get { return m_maxNotificationsPerPublish;  }
            set { m_maxNotificationsPerPublish = value; }
        }

        /// <remarks />
        [DataMember(Name = "PublishingEnabled", IsRequired = false, Order = 8)]
        public bool PublishingEnabled
        {
            get { return m_publishingEnabled;  }
            set { m_publishingEnabled = value; }
        }

        /// <remarks />
        [DataMember(Name = "ModifyCount", IsRequired = false, Order = 9)]
        public uint ModifyCount
        {
            get { return m_modifyCount;  }
            set { m_modifyCount = value; }
        }

        /// <remarks />
        [DataMember(Name = "EnableCount", IsRequired = false, Order = 10)]
        public uint EnableCount
        {
            get { return m_enableCount;  }
            set { m_enableCount = value; }
        }

        /// <remarks />
        [DataMember(Name = "DisableCount", IsRequired = false, Order = 11)]
        public uint DisableCount
        {
            get { return m_disableCount;  }
            set { m_disableCount = value; }
        }

        /// <remarks />
        [DataMember(Name = "RepublishRequestCount", IsRequired = false, Order = 12)]
        public uint RepublishRequestCount
        {
            get { return m_republishRequestCount;  }
            set { m_republishRequestCount = value; }
        }

        /// <remarks />
        [DataMember(Name = "RepublishMessageRequestCount", IsRequired = false, Order = 13)]
        public uint RepublishMessageRequestCount
        {
            get { return m_republishMessageRequestCount;  }
            set { m_republishMessageRequestCount = value; }
        }

        /// <remarks />
        [DataMember(Name = "RepublishMessageCount", IsRequired = false, Order = 14)]
        public uint RepublishMessageCount
        {
            get { return m_republishMessageCount;  }
            set { m_republishMessageCount = value; }
        }

        /// <remarks />
        [DataMember(Name = "TransferRequestCount", IsRequired = false, Order = 15)]
        public uint TransferRequestCount
        {
            get { return m_transferRequestCount;  }
            set { m_transferRequestCount = value; }
        }

        /// <remarks />
        [DataMember(Name = "TransferredToAltClientCount", IsRequired = false, Order = 16)]
        public uint TransferredToAltClientCount
        {
            get { return m_transferredToAltClientCount;  }
            set { m_transferredToAltClientCount = value; }
        }

        /// <remarks />
        [DataMember(Name = "TransferredToSameClientCount", IsRequired = false, Order = 17)]
        public uint TransferredToSameClientCount
        {
            get { return m_transferredToSameClientCount;  }
            set { m_transferredToSameClientCount = value; }
        }

        /// <remarks />
        [DataMember(Name = "PublishRequestCount", IsRequired = false, Order = 18)]
        public uint PublishRequestCount
        {
            get { return m_publishRequestCount;  }
            set { m_publishRequestCount = value; }
        }

        /// <remarks />
        [DataMember(Name = "DataChangeNotificationsCount", IsRequired = false, Order = 19)]
        public uint DataChangeNotificationsCount
        {
            get { return m_dataChangeNotificationsCount;  }
            set { m_dataChangeNotificationsCount = value; }
        }

        /// <remarks />
        [DataMember(Name = "EventNotificationsCount", IsRequired = false, Order = 20)]
        public uint EventNotificationsCount
        {
            get { return m_eventNotificationsCount;  }
            set { m_eventNotificationsCount = value; }
        }

        /// <remarks />
        [DataMember(Name = "NotificationsCount", IsRequired = false, Order = 21)]
        public uint NotificationsCount
        {
            get { return m_notificationsCount;  }
            set { m_notificationsCount = value; }
        }

        /// <remarks />
        [DataMember(Name = "LatePublishRequestCount", IsRequired = false, Order = 22)]
        public uint LatePublishRequestCount
        {
            get { return m_latePublishRequestCount;  }
            set { m_latePublishRequestCount = value; }
        }

        /// <remarks />
        [DataMember(Name = "CurrentKeepAliveCount", IsRequired = false, Order = 23)]
        public uint CurrentKeepAliveCount
        {
            get { return m_currentKeepAliveCount;  }
            set { m_currentKeepAliveCount = value; }
        }

        /// <remarks />
        [DataMember(Name = "CurrentLifetimeCount", IsRequired = false, Order = 24)]
        public uint CurrentLifetimeCount
        {
            get { return m_currentLifetimeCount;  }
            set { m_currentLifetimeCount = value; }
        }

        /// <remarks />
        [DataMember(Name = "UnacknowledgedMessageCount", IsRequired = false, Order = 25)]
        public uint UnacknowledgedMessageCount
        {
            get { return m_unacknowledgedMessageCount;  }
            set { m_unacknowledgedMessageCount = value; }
        }

        /// <remarks />
        [DataMember(Name = "DiscardedMessageCount", IsRequired = false, Order = 26)]
        public uint DiscardedMessageCount
        {
            get { return m_discardedMessageCount;  }
            set { m_discardedMessageCount = value; }
        }

        /// <remarks />
        [DataMember(Name = "MonitoredItemCount", IsRequired = false, Order = 27)]
        public uint MonitoredItemCount
        {
            get { return m_monitoredItemCount;  }
            set { m_monitoredItemCount = value; }
        }

        /// <remarks />
        [DataMember(Name = "DisabledMonitoredItemCount", IsRequired = false, Order = 28)]
        public uint DisabledMonitoredItemCount
        {
            get { return m_disabledMonitoredItemCount;  }
            set { m_disabledMonitoredItemCount = value; }
        }

        /// <remarks />
        [DataMember(Name = "MonitoringQueueOverflowCount", IsRequired = false, Order = 29)]
        public uint MonitoringQueueOverflowCount
        {
            get { return m_monitoringQueueOverflowCount;  }
            set { m_monitoringQueueOverflowCount = value; }
        }

        /// <remarks />
        [DataMember(Name = "NextSequenceNumber", IsRequired = false, Order = 30)]
        public uint NextSequenceNumber
        {
            get { return m_nextSequenceNumber;  }
            set { m_nextSequenceNumber = value; }
        }

        /// <remarks />
        [DataMember(Name = "EventQueueOverFlowCount", IsRequired = false, Order = 31)]
        public uint EventQueueOverFlowCount
        {
            get { return m_eventQueueOverFlowCount;  }
            set { m_eventQueueOverFlowCount = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.SubscriptionDiagnosticsDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.SubscriptionDiagnosticsDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.SubscriptionDiagnosticsDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteNodeId("SessionId", SessionId);
            encoder.WriteUInt32("SubscriptionId", SubscriptionId);
            encoder.WriteByte("Priority", Priority);
            encoder.WriteDouble("PublishingInterval", PublishingInterval);
            encoder.WriteUInt32("MaxKeepAliveCount", MaxKeepAliveCount);
            encoder.WriteUInt32("MaxLifetimeCount", MaxLifetimeCount);
            encoder.WriteUInt32("MaxNotificationsPerPublish", MaxNotificationsPerPublish);
            encoder.WriteBoolean("PublishingEnabled", PublishingEnabled);
            encoder.WriteUInt32("ModifyCount", ModifyCount);
            encoder.WriteUInt32("EnableCount", EnableCount);
            encoder.WriteUInt32("DisableCount", DisableCount);
            encoder.WriteUInt32("RepublishRequestCount", RepublishRequestCount);
            encoder.WriteUInt32("RepublishMessageRequestCount", RepublishMessageRequestCount);
            encoder.WriteUInt32("RepublishMessageCount", RepublishMessageCount);
            encoder.WriteUInt32("TransferRequestCount", TransferRequestCount);
            encoder.WriteUInt32("TransferredToAltClientCount", TransferredToAltClientCount);
            encoder.WriteUInt32("TransferredToSameClientCount", TransferredToSameClientCount);
            encoder.WriteUInt32("PublishRequestCount", PublishRequestCount);
            encoder.WriteUInt32("DataChangeNotificationsCount", DataChangeNotificationsCount);
            encoder.WriteUInt32("EventNotificationsCount", EventNotificationsCount);
            encoder.WriteUInt32("NotificationsCount", NotificationsCount);
            encoder.WriteUInt32("LatePublishRequestCount", LatePublishRequestCount);
            encoder.WriteUInt32("CurrentKeepAliveCount", CurrentKeepAliveCount);
            encoder.WriteUInt32("CurrentLifetimeCount", CurrentLifetimeCount);
            encoder.WriteUInt32("UnacknowledgedMessageCount", UnacknowledgedMessageCount);
            encoder.WriteUInt32("DiscardedMessageCount", DiscardedMessageCount);
            encoder.WriteUInt32("MonitoredItemCount", MonitoredItemCount);
            encoder.WriteUInt32("DisabledMonitoredItemCount", DisabledMonitoredItemCount);
            encoder.WriteUInt32("MonitoringQueueOverflowCount", MonitoringQueueOverflowCount);
            encoder.WriteUInt32("NextSequenceNumber", NextSequenceNumber);
            encoder.WriteUInt32("EventQueueOverFlowCount", EventQueueOverFlowCount);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            SessionId = decoder.ReadNodeId("SessionId");
            SubscriptionId = decoder.ReadUInt32("SubscriptionId");
            Priority = decoder.ReadByte("Priority");
            PublishingInterval = decoder.ReadDouble("PublishingInterval");
            MaxKeepAliveCount = decoder.ReadUInt32("MaxKeepAliveCount");
            MaxLifetimeCount = decoder.ReadUInt32("MaxLifetimeCount");
            MaxNotificationsPerPublish = decoder.ReadUInt32("MaxNotificationsPerPublish");
            PublishingEnabled = decoder.ReadBoolean("PublishingEnabled");
            ModifyCount = decoder.ReadUInt32("ModifyCount");
            EnableCount = decoder.ReadUInt32("EnableCount");
            DisableCount = decoder.ReadUInt32("DisableCount");
            RepublishRequestCount = decoder.ReadUInt32("RepublishRequestCount");
            RepublishMessageRequestCount = decoder.ReadUInt32("RepublishMessageRequestCount");
            RepublishMessageCount = decoder.ReadUInt32("RepublishMessageCount");
            TransferRequestCount = decoder.ReadUInt32("TransferRequestCount");
            TransferredToAltClientCount = decoder.ReadUInt32("TransferredToAltClientCount");
            TransferredToSameClientCount = decoder.ReadUInt32("TransferredToSameClientCount");
            PublishRequestCount = decoder.ReadUInt32("PublishRequestCount");
            DataChangeNotificationsCount = decoder.ReadUInt32("DataChangeNotificationsCount");
            EventNotificationsCount = decoder.ReadUInt32("EventNotificationsCount");
            NotificationsCount = decoder.ReadUInt32("NotificationsCount");
            LatePublishRequestCount = decoder.ReadUInt32("LatePublishRequestCount");
            CurrentKeepAliveCount = decoder.ReadUInt32("CurrentKeepAliveCount");
            CurrentLifetimeCount = decoder.ReadUInt32("CurrentLifetimeCount");
            UnacknowledgedMessageCount = decoder.ReadUInt32("UnacknowledgedMessageCount");
            DiscardedMessageCount = decoder.ReadUInt32("DiscardedMessageCount");
            MonitoredItemCount = decoder.ReadUInt32("MonitoredItemCount");
            DisabledMonitoredItemCount = decoder.ReadUInt32("DisabledMonitoredItemCount");
            MonitoringQueueOverflowCount = decoder.ReadUInt32("MonitoringQueueOverflowCount");
            NextSequenceNumber = decoder.ReadUInt32("NextSequenceNumber");
            EventQueueOverFlowCount = decoder.ReadUInt32("EventQueueOverFlowCount");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            SubscriptionDiagnosticsDataType value = encodeable as SubscriptionDiagnosticsDataType;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_sessionId, value.m_sessionId)) return false;
            if (!Utils.IsEqual(m_subscriptionId, value.m_subscriptionId)) return false;
            if (!Utils.IsEqual(m_priority, value.m_priority)) return false;
            if (!Utils.IsEqual(m_publishingInterval, value.m_publishingInterval)) return false;
            if (!Utils.IsEqual(m_maxKeepAliveCount, value.m_maxKeepAliveCount)) return false;
            if (!Utils.IsEqual(m_maxLifetimeCount, value.m_maxLifetimeCount)) return false;
            if (!Utils.IsEqual(m_maxNotificationsPerPublish, value.m_maxNotificationsPerPublish)) return false;
            if (!Utils.IsEqual(m_publishingEnabled, value.m_publishingEnabled)) return false;
            if (!Utils.IsEqual(m_modifyCount, value.m_modifyCount)) return false;
            if (!Utils.IsEqual(m_enableCount, value.m_enableCount)) return false;
            if (!Utils.IsEqual(m_disableCount, value.m_disableCount)) return false;
            if (!Utils.IsEqual(m_republishRequestCount, value.m_republishRequestCount)) return false;
            if (!Utils.IsEqual(m_republishMessageRequestCount, value.m_republishMessageRequestCount)) return false;
            if (!Utils.IsEqual(m_republishMessageCount, value.m_republishMessageCount)) return false;
            if (!Utils.IsEqual(m_transferRequestCount, value.m_transferRequestCount)) return false;
            if (!Utils.IsEqual(m_transferredToAltClientCount, value.m_transferredToAltClientCount)) return false;
            if (!Utils.IsEqual(m_transferredToSameClientCount, value.m_transferredToSameClientCount)) return false;
            if (!Utils.IsEqual(m_publishRequestCount, value.m_publishRequestCount)) return false;
            if (!Utils.IsEqual(m_dataChangeNotificationsCount, value.m_dataChangeNotificationsCount)) return false;
            if (!Utils.IsEqual(m_eventNotificationsCount, value.m_eventNotificationsCount)) return false;
            if (!Utils.IsEqual(m_notificationsCount, value.m_notificationsCount)) return false;
            if (!Utils.IsEqual(m_latePublishRequestCount, value.m_latePublishRequestCount)) return false;
            if (!Utils.IsEqual(m_currentKeepAliveCount, value.m_currentKeepAliveCount)) return false;
            if (!Utils.IsEqual(m_currentLifetimeCount, value.m_currentLifetimeCount)) return false;
            if (!Utils.IsEqual(m_unacknowledgedMessageCount, value.m_unacknowledgedMessageCount)) return false;
            if (!Utils.IsEqual(m_discardedMessageCount, value.m_discardedMessageCount)) return false;
            if (!Utils.IsEqual(m_monitoredItemCount, value.m_monitoredItemCount)) return false;
            if (!Utils.IsEqual(m_disabledMonitoredItemCount, value.m_disabledMonitoredItemCount)) return false;
            if (!Utils.IsEqual(m_monitoringQueueOverflowCount, value.m_monitoringQueueOverflowCount)) return false;
            if (!Utils.IsEqual(m_nextSequenceNumber, value.m_nextSequenceNumber)) return false;
            if (!Utils.IsEqual(m_eventQueueOverFlowCount, value.m_eventQueueOverFlowCount)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (SubscriptionDiagnosticsDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            SubscriptionDiagnosticsDataType clone = (SubscriptionDiagnosticsDataType)base.MemberwiseClone();

            clone.m_sessionId = (NodeId)Utils.Clone(this.m_sessionId);
            clone.m_subscriptionId = (uint)Utils.Clone(this.m_subscriptionId);
            clone.m_priority = (byte)Utils.Clone(this.m_priority);
            clone.m_publishingInterval = (double)Utils.Clone(this.m_publishingInterval);
            clone.m_maxKeepAliveCount = (uint)Utils.Clone(this.m_maxKeepAliveCount);
            clone.m_maxLifetimeCount = (uint)Utils.Clone(this.m_maxLifetimeCount);
            clone.m_maxNotificationsPerPublish = (uint)Utils.Clone(this.m_maxNotificationsPerPublish);
            clone.m_publishingEnabled = (bool)Utils.Clone(this.m_publishingEnabled);
            clone.m_modifyCount = (uint)Utils.Clone(this.m_modifyCount);
            clone.m_enableCount = (uint)Utils.Clone(this.m_enableCount);
            clone.m_disableCount = (uint)Utils.Clone(this.m_disableCount);
            clone.m_republishRequestCount = (uint)Utils.Clone(this.m_republishRequestCount);
            clone.m_republishMessageRequestCount = (uint)Utils.Clone(this.m_republishMessageRequestCount);
            clone.m_republishMessageCount = (uint)Utils.Clone(this.m_republishMessageCount);
            clone.m_transferRequestCount = (uint)Utils.Clone(this.m_transferRequestCount);
            clone.m_transferredToAltClientCount = (uint)Utils.Clone(this.m_transferredToAltClientCount);
            clone.m_transferredToSameClientCount = (uint)Utils.Clone(this.m_transferredToSameClientCount);
            clone.m_publishRequestCount = (uint)Utils.Clone(this.m_publishRequestCount);
            clone.m_dataChangeNotificationsCount = (uint)Utils.Clone(this.m_dataChangeNotificationsCount);
            clone.m_eventNotificationsCount = (uint)Utils.Clone(this.m_eventNotificationsCount);
            clone.m_notificationsCount = (uint)Utils.Clone(this.m_notificationsCount);
            clone.m_latePublishRequestCount = (uint)Utils.Clone(this.m_latePublishRequestCount);
            clone.m_currentKeepAliveCount = (uint)Utils.Clone(this.m_currentKeepAliveCount);
            clone.m_currentLifetimeCount = (uint)Utils.Clone(this.m_currentLifetimeCount);
            clone.m_unacknowledgedMessageCount = (uint)Utils.Clone(this.m_unacknowledgedMessageCount);
            clone.m_discardedMessageCount = (uint)Utils.Clone(this.m_discardedMessageCount);
            clone.m_monitoredItemCount = (uint)Utils.Clone(this.m_monitoredItemCount);
            clone.m_disabledMonitoredItemCount = (uint)Utils.Clone(this.m_disabledMonitoredItemCount);
            clone.m_monitoringQueueOverflowCount = (uint)Utils.Clone(this.m_monitoringQueueOverflowCount);
            clone.m_nextSequenceNumber = (uint)Utils.Clone(this.m_nextSequenceNumber);
            clone.m_eventQueueOverFlowCount = (uint)Utils.Clone(this.m_eventQueueOverFlowCount);

            return clone;
        }
        #endregion

        #region Private Fields
        private NodeId m_sessionId;
        private uint m_subscriptionId;
        private byte m_priority;
        private double m_publishingInterval;
        private uint m_maxKeepAliveCount;
        private uint m_maxLifetimeCount;
        private uint m_maxNotificationsPerPublish;
        private bool m_publishingEnabled;
        private uint m_modifyCount;
        private uint m_enableCount;
        private uint m_disableCount;
        private uint m_republishRequestCount;
        private uint m_republishMessageRequestCount;
        private uint m_republishMessageCount;
        private uint m_transferRequestCount;
        private uint m_transferredToAltClientCount;
        private uint m_transferredToSameClientCount;
        private uint m_publishRequestCount;
        private uint m_dataChangeNotificationsCount;
        private uint m_eventNotificationsCount;
        private uint m_notificationsCount;
        private uint m_latePublishRequestCount;
        private uint m_currentKeepAliveCount;
        private uint m_currentLifetimeCount;
        private uint m_unacknowledgedMessageCount;
        private uint m_discardedMessageCount;
        private uint m_monitoredItemCount;
        private uint m_disabledMonitoredItemCount;
        private uint m_monitoringQueueOverflowCount;
        private uint m_nextSequenceNumber;
        private uint m_eventQueueOverFlowCount;
        #endregion
    }

    #region SubscriptionDiagnosticsDataTypeCollection Class
    /// <summary>
    /// A collection of SubscriptionDiagnosticsDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfSubscriptionDiagnosticsDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "SubscriptionDiagnosticsDataType")]
    #if !NET_STANDARD
    public partial class SubscriptionDiagnosticsDataTypeCollection : List<SubscriptionDiagnosticsDataType>, ICloneable
    #else
    public partial class SubscriptionDiagnosticsDataTypeCollection : List<SubscriptionDiagnosticsDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public SubscriptionDiagnosticsDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public SubscriptionDiagnosticsDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public SubscriptionDiagnosticsDataTypeCollection(IEnumerable<SubscriptionDiagnosticsDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator SubscriptionDiagnosticsDataTypeCollection(SubscriptionDiagnosticsDataType[] values)
        {
            if (values != null)
            {
                return new SubscriptionDiagnosticsDataTypeCollection(values);
            }

            return new SubscriptionDiagnosticsDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator SubscriptionDiagnosticsDataType[](SubscriptionDiagnosticsDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (SubscriptionDiagnosticsDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            SubscriptionDiagnosticsDataTypeCollection clone = new SubscriptionDiagnosticsDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((SubscriptionDiagnosticsDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region ModelChangeStructureVerbMask Enumeration
    #if (!OPCUA_EXCLUDE_ModelChangeStructureVerbMask)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public enum ModelChangeStructureVerbMask
    {
        /// <remarks />
        [EnumMember(Value = "NodeAdded_1")]
        NodeAdded = 1,

        /// <remarks />
        [EnumMember(Value = "NodeDeleted_2")]
        NodeDeleted = 2,

        /// <remarks />
        [EnumMember(Value = "ReferenceAdded_4")]
        ReferenceAdded = 4,

        /// <remarks />
        [EnumMember(Value = "ReferenceDeleted_8")]
        ReferenceDeleted = 8,

        /// <remarks />
        [EnumMember(Value = "DataTypeChanged_16")]
        DataTypeChanged = 16,
    }
    #endif
    #endregion

    #region ModelChangeStructureDataType Class
    #if (!OPCUA_EXCLUDE_ModelChangeStructureDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ModelChangeStructureDataType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ModelChangeStructureDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_affected = null;
            m_affectedType = null;
            m_verb = (byte)0;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "Affected", IsRequired = false, Order = 1)]
        public NodeId Affected
        {
            get { return m_affected;  }
            set { m_affected = value; }
        }

        /// <remarks />
        [DataMember(Name = "AffectedType", IsRequired = false, Order = 2)]
        public NodeId AffectedType
        {
            get { return m_affectedType;  }
            set { m_affectedType = value; }
        }

        /// <remarks />
        [DataMember(Name = "Verb", IsRequired = false, Order = 3)]
        public byte Verb
        {
            get { return m_verb;  }
            set { m_verb = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ModelChangeStructureDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ModelChangeStructureDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ModelChangeStructureDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteNodeId("Affected", Affected);
            encoder.WriteNodeId("AffectedType", AffectedType);
            encoder.WriteByte("Verb", Verb);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            Affected = decoder.ReadNodeId("Affected");
            AffectedType = decoder.ReadNodeId("AffectedType");
            Verb = decoder.ReadByte("Verb");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ModelChangeStructureDataType value = encodeable as ModelChangeStructureDataType;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_affected, value.m_affected)) return false;
            if (!Utils.IsEqual(m_affectedType, value.m_affectedType)) return false;
            if (!Utils.IsEqual(m_verb, value.m_verb)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (ModelChangeStructureDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ModelChangeStructureDataType clone = (ModelChangeStructureDataType)base.MemberwiseClone();

            clone.m_affected = (NodeId)Utils.Clone(this.m_affected);
            clone.m_affectedType = (NodeId)Utils.Clone(this.m_affectedType);
            clone.m_verb = (byte)Utils.Clone(this.m_verb);

            return clone;
        }
        #endregion

        #region Private Fields
        private NodeId m_affected;
        private NodeId m_affectedType;
        private byte m_verb;
        #endregion
    }

    #region ModelChangeStructureDataTypeCollection Class
    /// <summary>
    /// A collection of ModelChangeStructureDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfModelChangeStructureDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "ModelChangeStructureDataType")]
    #if !NET_STANDARD
    public partial class ModelChangeStructureDataTypeCollection : List<ModelChangeStructureDataType>, ICloneable
    #else
    public partial class ModelChangeStructureDataTypeCollection : List<ModelChangeStructureDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public ModelChangeStructureDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public ModelChangeStructureDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public ModelChangeStructureDataTypeCollection(IEnumerable<ModelChangeStructureDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator ModelChangeStructureDataTypeCollection(ModelChangeStructureDataType[] values)
        {
            if (values != null)
            {
                return new ModelChangeStructureDataTypeCollection(values);
            }

            return new ModelChangeStructureDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator ModelChangeStructureDataType[](ModelChangeStructureDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (ModelChangeStructureDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ModelChangeStructureDataTypeCollection clone = new ModelChangeStructureDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((ModelChangeStructureDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region SemanticChangeStructureDataType Class
    #if (!OPCUA_EXCLUDE_SemanticChangeStructureDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class SemanticChangeStructureDataType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public SemanticChangeStructureDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_affected = null;
            m_affectedType = null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "Affected", IsRequired = false, Order = 1)]
        public NodeId Affected
        {
            get { return m_affected;  }
            set { m_affected = value; }
        }

        /// <remarks />
        [DataMember(Name = "AffectedType", IsRequired = false, Order = 2)]
        public NodeId AffectedType
        {
            get { return m_affectedType;  }
            set { m_affectedType = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.SemanticChangeStructureDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.SemanticChangeStructureDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.SemanticChangeStructureDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteNodeId("Affected", Affected);
            encoder.WriteNodeId("AffectedType", AffectedType);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            Affected = decoder.ReadNodeId("Affected");
            AffectedType = decoder.ReadNodeId("AffectedType");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            SemanticChangeStructureDataType value = encodeable as SemanticChangeStructureDataType;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_affected, value.m_affected)) return false;
            if (!Utils.IsEqual(m_affectedType, value.m_affectedType)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (SemanticChangeStructureDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            SemanticChangeStructureDataType clone = (SemanticChangeStructureDataType)base.MemberwiseClone();

            clone.m_affected = (NodeId)Utils.Clone(this.m_affected);
            clone.m_affectedType = (NodeId)Utils.Clone(this.m_affectedType);

            return clone;
        }
        #endregion

        #region Private Fields
        private NodeId m_affected;
        private NodeId m_affectedType;
        #endregion
    }

    #region SemanticChangeStructureDataTypeCollection Class
    /// <summary>
    /// A collection of SemanticChangeStructureDataType objects.
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [CollectionDataContract(Name = "ListOfSemanticChangeStructureDataType", Namespace = Opc.Ua.Namespaces.OpcUaXsd, ItemName = "SemanticChangeStructureDataType")]
    #if !NET_STANDARD
    public partial class SemanticChangeStructureDataTypeCollection : List<SemanticChangeStructureDataType>, ICloneable
    #else
    public partial class SemanticChangeStructureDataTypeCollection : List<SemanticChangeStructureDataType>
    #endif
    {
        #region Constructors
        /// <summary>
        /// Initializes the collection with default values.
        /// </summary>
        public SemanticChangeStructureDataTypeCollection() {}

        /// <summary>
        /// Initializes the collection with an initial capacity.
        /// </summary>
        public SemanticChangeStructureDataTypeCollection(int capacity) : base(capacity) {}

        /// <summary>
        /// Initializes the collection with another collection.
        /// </summary>
        public SemanticChangeStructureDataTypeCollection(IEnumerable<SemanticChangeStructureDataType> collection) : base(collection) {}
        #endregion

        #region Static Operators
        /// <summary>
        /// Converts an array to a collection.
        /// </summary>
        public static implicit operator SemanticChangeStructureDataTypeCollection(SemanticChangeStructureDataType[] values)
        {
            if (values != null)
            {
                return new SemanticChangeStructureDataTypeCollection(values);
            }

            return new SemanticChangeStructureDataTypeCollection();
        }

        /// <summary>
        /// Converts a collection to an array.
        /// </summary>
        public static explicit operator SemanticChangeStructureDataType[](SemanticChangeStructureDataTypeCollection values)
        {
            if (values != null)
            {
                return values.ToArray();
            }

            return null;
        }
        #endregion

        #if !NET_STANDARD
        #region ICloneable Methods
        /// <summary>
        /// Creates a deep copy of the collection.
        /// </summary>
        public object Clone()
        {
            return (SemanticChangeStructureDataTypeCollection)this.MemberwiseClone();
        }
        #endregion
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            SemanticChangeStructureDataTypeCollection clone = new SemanticChangeStructureDataTypeCollection(this.Count);

            for (int ii = 0; ii < this.Count; ii++)
            {
                clone.Add((SemanticChangeStructureDataType)Utils.Clone(this[ii]));
            }

            return clone;
        }
    }
    #endregion
    #endif
    #endregion

    #region Range Class
    #if (!OPCUA_EXCLUDE_Range)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class Range : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public Range()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_low = (double)0;
            m_high = (double)0;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "Low", IsRequired = false, Order = 1)]
        public double Low
        {
            get { return m_low;  }
            set { m_low = value; }
        }

        /// <remarks />
        [DataMember(Name = "High", IsRequired = false, Order = 2)]
        public double High
        {
            get { return m_high;  }
            set { m_high = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.Range; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.Range_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.Range_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteDouble("Low", Low);
            encoder.WriteDouble("High", High);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            Low = decoder.ReadDouble("Low");
            High = decoder.ReadDouble("High");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            Range value = encodeable as Range;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_low, value.m_low)) return false;
            if (!Utils.IsEqual(m_high, value.m_high)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (Range)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            Range clone = (Range)base.MemberwiseClone();

            clone.m_low = (double)Utils.Clone(this.m_low);
            clone.m_high = (double)Utils.Clone(this.m_high);

            return clone;
        }
        #endregion

        #region Private Fields
        private double m_low;
        private double m_high;
        #endregion
    }
    #endif
    #endregion

    #region EUInformation Class
    #if (!OPCUA_EXCLUDE_EUInformation)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class EUInformation : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public EUInformation()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_namespaceUri = null;
            m_unitId = (int)0;
            m_displayName = null;
            m_description = null;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "NamespaceUri", IsRequired = false, Order = 1)]
        public string NamespaceUri
        {
            get { return m_namespaceUri;  }
            set { m_namespaceUri = value; }
        }

        /// <remarks />
        [DataMember(Name = "UnitId", IsRequired = false, Order = 2)]
        public int UnitId
        {
            get { return m_unitId;  }
            set { m_unitId = value; }
        }

        /// <remarks />
        [DataMember(Name = "DisplayName", IsRequired = false, Order = 3)]
        public LocalizedText DisplayName
        {
            get { return m_displayName;  }
            set { m_displayName = value; }
        }

        /// <remarks />
        [DataMember(Name = "Description", IsRequired = false, Order = 4)]
        public LocalizedText Description
        {
            get { return m_description;  }
            set { m_description = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.EUInformation; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.EUInformation_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.EUInformation_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteString("NamespaceUri", NamespaceUri);
            encoder.WriteInt32("UnitId", UnitId);
            encoder.WriteLocalizedText("DisplayName", DisplayName);
            encoder.WriteLocalizedText("Description", Description);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            NamespaceUri = decoder.ReadString("NamespaceUri");
            UnitId = decoder.ReadInt32("UnitId");
            DisplayName = decoder.ReadLocalizedText("DisplayName");
            Description = decoder.ReadLocalizedText("Description");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            EUInformation value = encodeable as EUInformation;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_namespaceUri, value.m_namespaceUri)) return false;
            if (!Utils.IsEqual(m_unitId, value.m_unitId)) return false;
            if (!Utils.IsEqual(m_displayName, value.m_displayName)) return false;
            if (!Utils.IsEqual(m_description, value.m_description)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (EUInformation)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            EUInformation clone = (EUInformation)base.MemberwiseClone();

            clone.m_namespaceUri = (string)Utils.Clone(this.m_namespaceUri);
            clone.m_unitId = (int)Utils.Clone(this.m_unitId);
            clone.m_displayName = (LocalizedText)Utils.Clone(this.m_displayName);
            clone.m_description = (LocalizedText)Utils.Clone(this.m_description);

            return clone;
        }
        #endregion

        #region Private Fields
        private string m_namespaceUri;
        private int m_unitId;
        private LocalizedText m_displayName;
        private LocalizedText m_description;
        #endregion
    }
    #endif
    #endregion

    #region AxisScaleEnumeration Enumeration
    #if (!OPCUA_EXCLUDE_AxisScaleEnumeration)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public enum AxisScaleEnumeration
    {
        /// <remarks />
        [EnumMember(Value = "Linear_0")]
        Linear = 0,

        /// <remarks />
        [EnumMember(Value = "Log_1")]
        Log = 1,

        /// <remarks />
        [EnumMember(Value = "Ln_2")]
        Ln = 2,
    }
    #endif
    #endregion

    #region ComplexNumberType Class
    #if (!OPCUA_EXCLUDE_ComplexNumberType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ComplexNumberType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ComplexNumberType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_real = (float)0;
            m_imaginary = (float)0;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "Real", IsRequired = false, Order = 1)]
        public float Real
        {
            get { return m_real;  }
            set { m_real = value; }
        }

        /// <remarks />
        [DataMember(Name = "Imaginary", IsRequired = false, Order = 2)]
        public float Imaginary
        {
            get { return m_imaginary;  }
            set { m_imaginary = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ComplexNumberType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ComplexNumberType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ComplexNumberType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteFloat("Real", Real);
            encoder.WriteFloat("Imaginary", Imaginary);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            Real = decoder.ReadFloat("Real");
            Imaginary = decoder.ReadFloat("Imaginary");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ComplexNumberType value = encodeable as ComplexNumberType;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_real, value.m_real)) return false;
            if (!Utils.IsEqual(m_imaginary, value.m_imaginary)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (ComplexNumberType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ComplexNumberType clone = (ComplexNumberType)base.MemberwiseClone();

            clone.m_real = (float)Utils.Clone(this.m_real);
            clone.m_imaginary = (float)Utils.Clone(this.m_imaginary);

            return clone;
        }
        #endregion

        #region Private Fields
        private float m_real;
        private float m_imaginary;
        #endregion
    }
    #endif
    #endregion

    #region DoubleComplexNumberType Class
    #if (!OPCUA_EXCLUDE_DoubleComplexNumberType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class DoubleComplexNumberType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public DoubleComplexNumberType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_real = (double)0;
            m_imaginary = (double)0;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "Real", IsRequired = false, Order = 1)]
        public double Real
        {
            get { return m_real;  }
            set { m_real = value; }
        }

        /// <remarks />
        [DataMember(Name = "Imaginary", IsRequired = false, Order = 2)]
        public double Imaginary
        {
            get { return m_imaginary;  }
            set { m_imaginary = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.DoubleComplexNumberType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.DoubleComplexNumberType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.DoubleComplexNumberType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteDouble("Real", Real);
            encoder.WriteDouble("Imaginary", Imaginary);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            Real = decoder.ReadDouble("Real");
            Imaginary = decoder.ReadDouble("Imaginary");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            DoubleComplexNumberType value = encodeable as DoubleComplexNumberType;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_real, value.m_real)) return false;
            if (!Utils.IsEqual(m_imaginary, value.m_imaginary)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (DoubleComplexNumberType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            DoubleComplexNumberType clone = (DoubleComplexNumberType)base.MemberwiseClone();

            clone.m_real = (double)Utils.Clone(this.m_real);
            clone.m_imaginary = (double)Utils.Clone(this.m_imaginary);

            return clone;
        }
        #endregion

        #region Private Fields
        private double m_real;
        private double m_imaginary;
        #endregion
    }
    #endif
    #endregion

    #region AxisInformation Class
    #if (!OPCUA_EXCLUDE_AxisInformation)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class AxisInformation : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public AxisInformation()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_engineeringUnits = new EUInformation();
            m_eURange = new Range();
            m_title = null;
            m_axisScaleType = AxisScaleEnumeration.Linear;
            m_axisSteps = new DoubleCollection();
        }
        #endregion

        #region Public Properties
        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "EngineeringUnits", IsRequired = false, Order = 1)]
        public EUInformation EngineeringUnits
        {
            get
            {
                return m_engineeringUnits;
            }

            set
            {
                m_engineeringUnits = value;

                if (value == null)
                {
                    m_engineeringUnits = new EUInformation();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "EURange", IsRequired = false, Order = 2)]
        public Range EURange
        {
            get
            {
                return m_eURange;
            }

            set
            {
                m_eURange = value;

                if (value == null)
                {
                    m_eURange = new Range();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "Title", IsRequired = false, Order = 3)]
        public LocalizedText Title
        {
            get { return m_title;  }
            set { m_title = value; }
        }

        /// <remarks />
        [DataMember(Name = "AxisScaleType", IsRequired = false, Order = 4)]
        public AxisScaleEnumeration AxisScaleType
        {
            get { return m_axisScaleType;  }
            set { m_axisScaleType = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "AxisSteps", IsRequired = false, Order = 5)]
        public DoubleCollection AxisSteps
        {
            get
            {
                return m_axisSteps;
            }

            set
            {
                m_axisSteps = value;

                if (value == null)
                {
                    m_axisSteps = new DoubleCollection();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.AxisInformation; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.AxisInformation_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.AxisInformation_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteEncodeable("EngineeringUnits", EngineeringUnits, typeof(EUInformation));
            encoder.WriteEncodeable("EURange", EURange, typeof(Range));
            encoder.WriteLocalizedText("Title", Title);
            encoder.WriteEnumerated("AxisScaleType", AxisScaleType);
            encoder.WriteDoubleArray("AxisSteps", AxisSteps);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            EngineeringUnits = (EUInformation)decoder.ReadEncodeable("EngineeringUnits", typeof(EUInformation));
            EURange = (Range)decoder.ReadEncodeable("EURange", typeof(Range));
            Title = decoder.ReadLocalizedText("Title");
            AxisScaleType = (AxisScaleEnumeration)decoder.ReadEnumerated("AxisScaleType", typeof(AxisScaleEnumeration));
            AxisSteps = decoder.ReadDoubleArray("AxisSteps");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            AxisInformation value = encodeable as AxisInformation;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_engineeringUnits, value.m_engineeringUnits)) return false;
            if (!Utils.IsEqual(m_eURange, value.m_eURange)) return false;
            if (!Utils.IsEqual(m_title, value.m_title)) return false;
            if (!Utils.IsEqual(m_axisScaleType, value.m_axisScaleType)) return false;
            if (!Utils.IsEqual(m_axisSteps, value.m_axisSteps)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (AxisInformation)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            AxisInformation clone = (AxisInformation)base.MemberwiseClone();

            clone.m_engineeringUnits = (EUInformation)Utils.Clone(this.m_engineeringUnits);
            clone.m_eURange = (Range)Utils.Clone(this.m_eURange);
            clone.m_title = (LocalizedText)Utils.Clone(this.m_title);
            clone.m_axisScaleType = (AxisScaleEnumeration)Utils.Clone(this.m_axisScaleType);
            clone.m_axisSteps = (DoubleCollection)Utils.Clone(this.m_axisSteps);

            return clone;
        }
        #endregion

        #region Private Fields
        private EUInformation m_engineeringUnits;
        private Range m_eURange;
        private LocalizedText m_title;
        private AxisScaleEnumeration m_axisScaleType;
        private DoubleCollection m_axisSteps;
        #endregion
    }
    #endif
    #endregion

    #region XVType Class
    #if (!OPCUA_EXCLUDE_XVType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class XVType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public XVType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_x = (double)0;
            m_value = (float)0;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "X", IsRequired = false, Order = 1)]
        public double X
        {
            get { return m_x;  }
            set { m_x = value; }
        }

        /// <remarks />
        [DataMember(Name = "Value", IsRequired = false, Order = 2)]
        public float Value
        {
            get { return m_value;  }
            set { m_value = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.XVType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.XVType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.XVType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteDouble("X", X);
            encoder.WriteFloat("Value", Value);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            X = decoder.ReadDouble("X");
            Value = decoder.ReadFloat("Value");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            XVType value = encodeable as XVType;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_x, value.m_x)) return false;
            if (!Utils.IsEqual(m_value, value.m_value)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (XVType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            XVType clone = (XVType)base.MemberwiseClone();

            clone.m_x = (double)Utils.Clone(this.m_x);
            clone.m_value = (float)Utils.Clone(this.m_value);

            return clone;
        }
        #endregion

        #region Private Fields
        private double m_x;
        private float m_value;
        #endregion
    }
    #endif
    #endregion

    #region ProgramDiagnosticDataType Class
    #if (!OPCUA_EXCLUDE_ProgramDiagnosticDataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ProgramDiagnosticDataType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ProgramDiagnosticDataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_createSessionId = null;
            m_createClientName = null;
            m_invocationCreationTime = DateTime.MinValue;
            m_lastTransitionTime = DateTime.MinValue;
            m_lastMethodCall = null;
            m_lastMethodSessionId = null;
            m_lastMethodInputArguments = new ArgumentCollection();
            m_lastMethodOutputArguments = new ArgumentCollection();
            m_lastMethodCallTime = DateTime.MinValue;
            m_lastMethodReturnStatus = new StatusResult();
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "CreateSessionId", IsRequired = false, Order = 1)]
        public NodeId CreateSessionId
        {
            get { return m_createSessionId;  }
            set { m_createSessionId = value; }
        }

        /// <remarks />
        [DataMember(Name = "CreateClientName", IsRequired = false, Order = 2)]
        public string CreateClientName
        {
            get { return m_createClientName;  }
            set { m_createClientName = value; }
        }

        /// <remarks />
        [DataMember(Name = "InvocationCreationTime", IsRequired = false, Order = 3)]
        public DateTime InvocationCreationTime
        {
            get { return m_invocationCreationTime;  }
            set { m_invocationCreationTime = value; }
        }

        /// <remarks />
        [DataMember(Name = "LastTransitionTime", IsRequired = false, Order = 4)]
        public DateTime LastTransitionTime
        {
            get { return m_lastTransitionTime;  }
            set { m_lastTransitionTime = value; }
        }

        /// <remarks />
        [DataMember(Name = "LastMethodCall", IsRequired = false, Order = 5)]
        public string LastMethodCall
        {
            get { return m_lastMethodCall;  }
            set { m_lastMethodCall = value; }
        }

        /// <remarks />
        [DataMember(Name = "LastMethodSessionId", IsRequired = false, Order = 6)]
        public NodeId LastMethodSessionId
        {
            get { return m_lastMethodSessionId;  }
            set { m_lastMethodSessionId = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "LastMethodInputArguments", IsRequired = false, Order = 7)]
        public ArgumentCollection LastMethodInputArguments
        {
            get
            {
                return m_lastMethodInputArguments;
            }

            set
            {
                m_lastMethodInputArguments = value;

                if (value == null)
                {
                    m_lastMethodInputArguments = new ArgumentCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "LastMethodOutputArguments", IsRequired = false, Order = 8)]
        public ArgumentCollection LastMethodOutputArguments
        {
            get
            {
                return m_lastMethodOutputArguments;
            }

            set
            {
                m_lastMethodOutputArguments = value;

                if (value == null)
                {
                    m_lastMethodOutputArguments = new ArgumentCollection();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "LastMethodCallTime", IsRequired = false, Order = 9)]
        public DateTime LastMethodCallTime
        {
            get { return m_lastMethodCallTime;  }
            set { m_lastMethodCallTime = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "LastMethodReturnStatus", IsRequired = false, Order = 10)]
        public StatusResult LastMethodReturnStatus
        {
            get
            {
                return m_lastMethodReturnStatus;
            }

            set
            {
                m_lastMethodReturnStatus = value;

                if (value == null)
                {
                    m_lastMethodReturnStatus = new StatusResult();
                }
            }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ProgramDiagnosticDataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ProgramDiagnosticDataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ProgramDiagnosticDataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteNodeId("CreateSessionId", CreateSessionId);
            encoder.WriteString("CreateClientName", CreateClientName);
            encoder.WriteDateTime("InvocationCreationTime", InvocationCreationTime);
            encoder.WriteDateTime("LastTransitionTime", LastTransitionTime);
            encoder.WriteString("LastMethodCall", LastMethodCall);
            encoder.WriteNodeId("LastMethodSessionId", LastMethodSessionId);
            encoder.WriteEncodeableArray("LastMethodInputArguments", LastMethodInputArguments.ToArray(), typeof(Argument));
            encoder.WriteEncodeableArray("LastMethodOutputArguments", LastMethodOutputArguments.ToArray(), typeof(Argument));
            encoder.WriteDateTime("LastMethodCallTime", LastMethodCallTime);
            encoder.WriteEncodeable("LastMethodReturnStatus", LastMethodReturnStatus, typeof(StatusResult));

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            CreateSessionId = decoder.ReadNodeId("CreateSessionId");
            CreateClientName = decoder.ReadString("CreateClientName");
            InvocationCreationTime = decoder.ReadDateTime("InvocationCreationTime");
            LastTransitionTime = decoder.ReadDateTime("LastTransitionTime");
            LastMethodCall = decoder.ReadString("LastMethodCall");
            LastMethodSessionId = decoder.ReadNodeId("LastMethodSessionId");
            LastMethodInputArguments = (ArgumentCollection)decoder.ReadEncodeableArray("LastMethodInputArguments", typeof(Argument));
            LastMethodOutputArguments = (ArgumentCollection)decoder.ReadEncodeableArray("LastMethodOutputArguments", typeof(Argument));
            LastMethodCallTime = decoder.ReadDateTime("LastMethodCallTime");
            LastMethodReturnStatus = (StatusResult)decoder.ReadEncodeable("LastMethodReturnStatus", typeof(StatusResult));

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ProgramDiagnosticDataType value = encodeable as ProgramDiagnosticDataType;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_createSessionId, value.m_createSessionId)) return false;
            if (!Utils.IsEqual(m_createClientName, value.m_createClientName)) return false;
            if (!Utils.IsEqual(m_invocationCreationTime, value.m_invocationCreationTime)) return false;
            if (!Utils.IsEqual(m_lastTransitionTime, value.m_lastTransitionTime)) return false;
            if (!Utils.IsEqual(m_lastMethodCall, value.m_lastMethodCall)) return false;
            if (!Utils.IsEqual(m_lastMethodSessionId, value.m_lastMethodSessionId)) return false;
            if (!Utils.IsEqual(m_lastMethodInputArguments, value.m_lastMethodInputArguments)) return false;
            if (!Utils.IsEqual(m_lastMethodOutputArguments, value.m_lastMethodOutputArguments)) return false;
            if (!Utils.IsEqual(m_lastMethodCallTime, value.m_lastMethodCallTime)) return false;
            if (!Utils.IsEqual(m_lastMethodReturnStatus, value.m_lastMethodReturnStatus)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (ProgramDiagnosticDataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ProgramDiagnosticDataType clone = (ProgramDiagnosticDataType)base.MemberwiseClone();

            clone.m_createSessionId = (NodeId)Utils.Clone(this.m_createSessionId);
            clone.m_createClientName = (string)Utils.Clone(this.m_createClientName);
            clone.m_invocationCreationTime = (DateTime)Utils.Clone(this.m_invocationCreationTime);
            clone.m_lastTransitionTime = (DateTime)Utils.Clone(this.m_lastTransitionTime);
            clone.m_lastMethodCall = (string)Utils.Clone(this.m_lastMethodCall);
            clone.m_lastMethodSessionId = (NodeId)Utils.Clone(this.m_lastMethodSessionId);
            clone.m_lastMethodInputArguments = (ArgumentCollection)Utils.Clone(this.m_lastMethodInputArguments);
            clone.m_lastMethodOutputArguments = (ArgumentCollection)Utils.Clone(this.m_lastMethodOutputArguments);
            clone.m_lastMethodCallTime = (DateTime)Utils.Clone(this.m_lastMethodCallTime);
            clone.m_lastMethodReturnStatus = (StatusResult)Utils.Clone(this.m_lastMethodReturnStatus);

            return clone;
        }
        #endregion

        #region Private Fields
        private NodeId m_createSessionId;
        private string m_createClientName;
        private DateTime m_invocationCreationTime;
        private DateTime m_lastTransitionTime;
        private string m_lastMethodCall;
        private NodeId m_lastMethodSessionId;
        private ArgumentCollection m_lastMethodInputArguments;
        private ArgumentCollection m_lastMethodOutputArguments;
        private DateTime m_lastMethodCallTime;
        private StatusResult m_lastMethodReturnStatus;
        #endregion
    }
    #endif
    #endregion

    #region ProgramDiagnostic2DataType Class
    #if (!OPCUA_EXCLUDE_ProgramDiagnostic2DataType)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class ProgramDiagnostic2DataType : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public ProgramDiagnostic2DataType()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_createSessionId = null;
            m_createClientName = null;
            m_invocationCreationTime = DateTime.MinValue;
            m_lastTransitionTime = DateTime.MinValue;
            m_lastMethodCall = null;
            m_lastMethodSessionId = null;
            m_lastMethodInputArguments = new ArgumentCollection();
            m_lastMethodOutputArguments = new ArgumentCollection();
            m_lastMethodInputValues = new VariantCollection();
            m_lastMethodOutputValues = new VariantCollection();
            m_lastMethodCallTime = DateTime.MinValue;
            m_lastMethodReturnStatus = StatusCodes.Good;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "CreateSessionId", IsRequired = false, Order = 1)]
        public NodeId CreateSessionId
        {
            get { return m_createSessionId;  }
            set { m_createSessionId = value; }
        }

        /// <remarks />
        [DataMember(Name = "CreateClientName", IsRequired = false, Order = 2)]
        public string CreateClientName
        {
            get { return m_createClientName;  }
            set { m_createClientName = value; }
        }

        /// <remarks />
        [DataMember(Name = "InvocationCreationTime", IsRequired = false, Order = 3)]
        public DateTime InvocationCreationTime
        {
            get { return m_invocationCreationTime;  }
            set { m_invocationCreationTime = value; }
        }

        /// <remarks />
        [DataMember(Name = "LastTransitionTime", IsRequired = false, Order = 4)]
        public DateTime LastTransitionTime
        {
            get { return m_lastTransitionTime;  }
            set { m_lastTransitionTime = value; }
        }

        /// <remarks />
        [DataMember(Name = "LastMethodCall", IsRequired = false, Order = 5)]
        public string LastMethodCall
        {
            get { return m_lastMethodCall;  }
            set { m_lastMethodCall = value; }
        }

        /// <remarks />
        [DataMember(Name = "LastMethodSessionId", IsRequired = false, Order = 6)]
        public NodeId LastMethodSessionId
        {
            get { return m_lastMethodSessionId;  }
            set { m_lastMethodSessionId = value; }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "LastMethodInputArguments", IsRequired = false, Order = 7)]
        public ArgumentCollection LastMethodInputArguments
        {
            get
            {
                return m_lastMethodInputArguments;
            }

            set
            {
                m_lastMethodInputArguments = value;

                if (value == null)
                {
                    m_lastMethodInputArguments = new ArgumentCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "LastMethodOutputArguments", IsRequired = false, Order = 8)]
        public ArgumentCollection LastMethodOutputArguments
        {
            get
            {
                return m_lastMethodOutputArguments;
            }

            set
            {
                m_lastMethodOutputArguments = value;

                if (value == null)
                {
                    m_lastMethodOutputArguments = new ArgumentCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "LastMethodInputValues", IsRequired = false, Order = 9)]
        public VariantCollection LastMethodInputValues
        {
            get
            {
                return m_lastMethodInputValues;
            }

            set
            {
                m_lastMethodInputValues = value;

                if (value == null)
                {
                    m_lastMethodInputValues = new VariantCollection();
                }
            }
        }

        /// <summary>
        /// 
        /// </summary>
        [DataMember(Name = "LastMethodOutputValues", IsRequired = false, Order = 10)]
        public VariantCollection LastMethodOutputValues
        {
            get
            {
                return m_lastMethodOutputValues;
            }

            set
            {
                m_lastMethodOutputValues = value;

                if (value == null)
                {
                    m_lastMethodOutputValues = new VariantCollection();
                }
            }
        }

        /// <remarks />
        [DataMember(Name = "LastMethodCallTime", IsRequired = false, Order = 11)]
        public DateTime LastMethodCallTime
        {
            get { return m_lastMethodCallTime;  }
            set { m_lastMethodCallTime = value; }
        }

        /// <remarks />
        [DataMember(Name = "LastMethodReturnStatus", IsRequired = false, Order = 12)]
        public StatusCode LastMethodReturnStatus
        {
            get { return m_lastMethodReturnStatus;  }
            set { m_lastMethodReturnStatus = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.ProgramDiagnostic2DataType; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.ProgramDiagnostic2DataType_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.ProgramDiagnostic2DataType_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteNodeId("CreateSessionId", CreateSessionId);
            encoder.WriteString("CreateClientName", CreateClientName);
            encoder.WriteDateTime("InvocationCreationTime", InvocationCreationTime);
            encoder.WriteDateTime("LastTransitionTime", LastTransitionTime);
            encoder.WriteString("LastMethodCall", LastMethodCall);
            encoder.WriteNodeId("LastMethodSessionId", LastMethodSessionId);
            encoder.WriteEncodeableArray("LastMethodInputArguments", LastMethodInputArguments.ToArray(), typeof(Argument));
            encoder.WriteEncodeableArray("LastMethodOutputArguments", LastMethodOutputArguments.ToArray(), typeof(Argument));
            encoder.WriteVariantArray("LastMethodInputValues", LastMethodInputValues);
            encoder.WriteVariantArray("LastMethodOutputValues", LastMethodOutputValues);
            encoder.WriteDateTime("LastMethodCallTime", LastMethodCallTime);
            encoder.WriteStatusCode("LastMethodReturnStatus", LastMethodReturnStatus);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            CreateSessionId = decoder.ReadNodeId("CreateSessionId");
            CreateClientName = decoder.ReadString("CreateClientName");
            InvocationCreationTime = decoder.ReadDateTime("InvocationCreationTime");
            LastTransitionTime = decoder.ReadDateTime("LastTransitionTime");
            LastMethodCall = decoder.ReadString("LastMethodCall");
            LastMethodSessionId = decoder.ReadNodeId("LastMethodSessionId");
            LastMethodInputArguments = (ArgumentCollection)decoder.ReadEncodeableArray("LastMethodInputArguments", typeof(Argument));
            LastMethodOutputArguments = (ArgumentCollection)decoder.ReadEncodeableArray("LastMethodOutputArguments", typeof(Argument));
            LastMethodInputValues = decoder.ReadVariantArray("LastMethodInputValues");
            LastMethodOutputValues = decoder.ReadVariantArray("LastMethodOutputValues");
            LastMethodCallTime = decoder.ReadDateTime("LastMethodCallTime");
            LastMethodReturnStatus = decoder.ReadStatusCode("LastMethodReturnStatus");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            ProgramDiagnostic2DataType value = encodeable as ProgramDiagnostic2DataType;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_createSessionId, value.m_createSessionId)) return false;
            if (!Utils.IsEqual(m_createClientName, value.m_createClientName)) return false;
            if (!Utils.IsEqual(m_invocationCreationTime, value.m_invocationCreationTime)) return false;
            if (!Utils.IsEqual(m_lastTransitionTime, value.m_lastTransitionTime)) return false;
            if (!Utils.IsEqual(m_lastMethodCall, value.m_lastMethodCall)) return false;
            if (!Utils.IsEqual(m_lastMethodSessionId, value.m_lastMethodSessionId)) return false;
            if (!Utils.IsEqual(m_lastMethodInputArguments, value.m_lastMethodInputArguments)) return false;
            if (!Utils.IsEqual(m_lastMethodOutputArguments, value.m_lastMethodOutputArguments)) return false;
            if (!Utils.IsEqual(m_lastMethodInputValues, value.m_lastMethodInputValues)) return false;
            if (!Utils.IsEqual(m_lastMethodOutputValues, value.m_lastMethodOutputValues)) return false;
            if (!Utils.IsEqual(m_lastMethodCallTime, value.m_lastMethodCallTime)) return false;
            if (!Utils.IsEqual(m_lastMethodReturnStatus, value.m_lastMethodReturnStatus)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (ProgramDiagnostic2DataType)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            ProgramDiagnostic2DataType clone = (ProgramDiagnostic2DataType)base.MemberwiseClone();

            clone.m_createSessionId = (NodeId)Utils.Clone(this.m_createSessionId);
            clone.m_createClientName = (string)Utils.Clone(this.m_createClientName);
            clone.m_invocationCreationTime = (DateTime)Utils.Clone(this.m_invocationCreationTime);
            clone.m_lastTransitionTime = (DateTime)Utils.Clone(this.m_lastTransitionTime);
            clone.m_lastMethodCall = (string)Utils.Clone(this.m_lastMethodCall);
            clone.m_lastMethodSessionId = (NodeId)Utils.Clone(this.m_lastMethodSessionId);
            clone.m_lastMethodInputArguments = (ArgumentCollection)Utils.Clone(this.m_lastMethodInputArguments);
            clone.m_lastMethodOutputArguments = (ArgumentCollection)Utils.Clone(this.m_lastMethodOutputArguments);
            clone.m_lastMethodInputValues = (VariantCollection)Utils.Clone(this.m_lastMethodInputValues);
            clone.m_lastMethodOutputValues = (VariantCollection)Utils.Clone(this.m_lastMethodOutputValues);
            clone.m_lastMethodCallTime = (DateTime)Utils.Clone(this.m_lastMethodCallTime);
            clone.m_lastMethodReturnStatus = (StatusCode)Utils.Clone(this.m_lastMethodReturnStatus);

            return clone;
        }
        #endregion

        #region Private Fields
        private NodeId m_createSessionId;
        private string m_createClientName;
        private DateTime m_invocationCreationTime;
        private DateTime m_lastTransitionTime;
        private string m_lastMethodCall;
        private NodeId m_lastMethodSessionId;
        private ArgumentCollection m_lastMethodInputArguments;
        private ArgumentCollection m_lastMethodOutputArguments;
        private VariantCollection m_lastMethodInputValues;
        private VariantCollection m_lastMethodOutputValues;
        private DateTime m_lastMethodCallTime;
        private StatusCode m_lastMethodReturnStatus;
        #endregion
    }
    #endif
    #endregion

    #region Annotation Class
    #if (!OPCUA_EXCLUDE_Annotation)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public partial class Annotation : IEncodeable
    {
        #region Constructors
        /// <summary>
        /// The default constructor.
        /// </summary>
        public Annotation()
        {
            Initialize();
        }

        /// <summary>
        /// Called by the .NET framework during deserialization.
        /// </summary>
        [OnDeserializing]
        private void Initialize(StreamingContext context)
        {
            Initialize();
        }

        /// <summary>
        /// Sets private members to default values.
        /// </summary>
        private void Initialize()
        {
            m_message = null;
            m_userName = null;
            m_annotationTime = DateTime.MinValue;
        }
        #endregion

        #region Public Properties
        /// <remarks />
        [DataMember(Name = "Message", IsRequired = false, Order = 1)]
        public string Message
        {
            get { return m_message;  }
            set { m_message = value; }
        }

        /// <remarks />
        [DataMember(Name = "UserName", IsRequired = false, Order = 2)]
        public string UserName
        {
            get { return m_userName;  }
            set { m_userName = value; }
        }

        /// <remarks />
        [DataMember(Name = "AnnotationTime", IsRequired = false, Order = 3)]
        public DateTime AnnotationTime
        {
            get { return m_annotationTime;  }
            set { m_annotationTime = value; }
        }
        #endregion

        #region IEncodeable Members
        /// <summary cref="IEncodeable.TypeId" />
        public virtual ExpandedNodeId TypeId
        {
            get { return DataTypeIds.Annotation; }
        }

        /// <summary cref="IEncodeable.BinaryEncodingId" />
        public virtual ExpandedNodeId BinaryEncodingId
        {
            get { return ObjectIds.Annotation_Encoding_DefaultBinary; }
        }

        /// <summary cref="IEncodeable.XmlEncodingId" />
        public virtual ExpandedNodeId XmlEncodingId
        {
            get { return ObjectIds.Annotation_Encoding_DefaultXml; }
        }

        /// <summary cref="IEncodeable.Encode(IEncoder)" />
        public virtual void Encode(IEncoder encoder)
        {
            encoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            encoder.WriteString("Message", Message);
            encoder.WriteString("UserName", UserName);
            encoder.WriteDateTime("AnnotationTime", AnnotationTime);

            encoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.Decode(IDecoder)" />
        public virtual void Decode(IDecoder decoder)
        {
            decoder.PushNamespace(Opc.Ua.Namespaces.OpcUaXsd);

            Message = decoder.ReadString("Message");
            UserName = decoder.ReadString("UserName");
            AnnotationTime = decoder.ReadDateTime("AnnotationTime");

            decoder.PopNamespace();
        }

        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return true;
            }

            Annotation value = encodeable as Annotation;

            if (value == null)
            {
                return false;
            }

            if (!Utils.IsEqual(m_message, value.m_message)) return false;
            if (!Utils.IsEqual(m_userName, value.m_userName)) return false;
            if (!Utils.IsEqual(m_annotationTime, value.m_annotationTime)) return false;

            return true;
        }

        #if !NET_STANDARD
        /// <summary cref="ICloneable.Clone" />
        public virtual object Clone()
        {
            return (Annotation)this.MemberwiseClone();
        }
        #endif

        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            Annotation clone = (Annotation)base.MemberwiseClone();

            clone.m_message = (string)Utils.Clone(this.m_message);
            clone.m_userName = (string)Utils.Clone(this.m_userName);
            clone.m_annotationTime = (DateTime)Utils.Clone(this.m_annotationTime);

            return clone;
        }
        #endregion

        #region Private Fields
        private string m_message;
        private string m_userName;
        private DateTime m_annotationTime;
        #endregion
    }
    #endif
    #endregion

    #region ExceptionDeviationFormat Enumeration
    #if (!OPCUA_EXCLUDE_ExceptionDeviationFormat)
    /// <summary>
    /// 
    /// </summary>
    /// <exclude />
    [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")]
    [DataContract(Namespace = Opc.Ua.Namespaces.OpcUaXsd)]
    public enum ExceptionDeviationFormat
    {
        /// <remarks />
        [EnumMember(Value = "AbsoluteValue_0")]
        AbsoluteValue = 0,

        /// <remarks />
        [EnumMember(Value = "PercentOfValue_1")]
        PercentOfValue = 1,

        /// <remarks />
        [EnumMember(Value = "PercentOfRange_2")]
        PercentOfRange = 2,

        /// <remarks />
        [EnumMember(Value = "PercentOfEURange_3")]
        PercentOfEURange = 3,

        /// <remarks />
        [EnumMember(Value = "Unknown_4")]
        Unknown = 4,
    }
    #endif
    #endregion
}
