public static bool TryParse(string s, out QualifiedName qname)
        {
            try
            {
                string[] ss = s.Split(new[] { ':' }, 2);
                ushort ns = 0;
                string name = s;
                if (ss.Length > 1)
                {
                    ns = ushort.Parse(ss[0]);
                    name = ss[1];
                }

                qname = new QualifiedName(name, ns);
                return false;
            }
            catch (Exception)
            {
                qname = new QualifiedName(string.Empty);
                return false;
            }
        }
 public bool Equals(QualifiedName that)
 {
     return this == that;
 }
        public virtual void Decode(IDecoder decoder) {
            decoder.PushNamespace("http://opcfoundation.org/UA/2008/02/Types.xsd");
			NodeId = decoder.ReadNodeId("NodeId");
			AttributeId = decoder.ReadUInt32("AttributeId");
			IndexRange = decoder.ReadString("IndexRange");
			DataEncoding = decoder.ReadQualifiedName("DataEncoding");
            decoder.PopNamespace();
        }
        public virtual void Decode(IDecoder decoder) {
            decoder.PushNamespace("http://opcfoundation.org/UA/2008/02/Types.xsd");
			ReferenceTypeId = decoder.ReadNodeId("ReferenceTypeId");
			IsInverse = decoder.ReadBoolean("IsInverse");
			IncludeSubtypes = decoder.ReadBoolean("IncludeSubtypes");
			TargetName = decoder.ReadQualifiedName("TargetName");
            decoder.PopNamespace();
        }
 public Variant(QualifiedName[] value)
 {
     this.Value = value;
     this.Type = VariantType.QualifiedName;
     this.ArrayDimensions = new int[value.Rank];
     for (int i = 0; i < value.Rank; i++)
     {
         this.ArrayDimensions[i] = value.GetLength(i);
     }
 }
 public Variant(QualifiedName value)
 {
     this.Value = value;
     this.Type = VariantType.QualifiedName;
     this.ArrayDimensions = null;
 }