private void AddAsnNode(Asn1Object asn, TreeNodeEx parent)
        {
            var nodeAsText = asn.ToString();
            if ((asn is Asn1OctetString || asn is Asn1BitString) && nodeAsText.Length > 40)
                nodeAsText = nodeAsText.Substring(0, 40) + "...";

            var treeNode = new TreeNodeEx(nodeAsText);
            var imageIndex = GetImageIndex(asn);
            treeNode.SelectedImageIndex = imageIndex;
            treeNode.ImageIndex = imageIndex;

            var asnt = asn as Asn1StructuredObject;
            if (asnt != null)
            {
                foreach (var asn2 in asnt.Nodes)
                    AddAsnNode(asn2, treeNode);
            }

            treeNode.Tag = asn;
            parent.Nodes.Add(treeNode);
        }