public static D900CdrElement CreateFromTlv(TlvObject tlv)
        {
            D900CdrElement element = new D900CdrElement();

            element._offset        = tlv.Offset;
            element._path          = tlv.Path;
            element._name          = tlv.Path;
            element._isConstructed = tlv.IsConstructed;
            if (!tlv.IsEmpty)
            {
                if (tlv.IsConstructed)
                {
                    List <D900CdrElement> val = new List <D900CdrElement>((tlv.Value as List <TlvObject>).Count);
                    foreach (TlvObject ch in (tlv.Value as List <TlvObject>))
                    {
                        val.Add(D900CdrElement.CreateFromTlv(ch));
                    }
                    ;
                    element._value = val;
                }
                else
                {
                    byte[] src = (tlv.Value as byte[]);
                    byte[] dst = new byte[src.Length];
                    Array.Copy(src, dst, src.Length);
                    element._value = dst;
                }
            }

            return(element);
        }
        public D900CdrElement ParseTlvObject(TlvObject tlv)
        {
            D900CdrElement element = D900CdrElement.CreateFromTlv(tlv);

            this.ParseElement(element);

            return(element);
        }