private static SecurityElement LoadSecurityElementChecked(BinaryReader InReader, byte InType, SecurityElement InParent)
        {
            byte b = InReader.ReadByte();

            if (b != InType)
            {
                return(null);
            }
            string          text            = InReader.ReadString();
            string          text2           = InReader.ReadString();
            SecurityElement securityElement = new SecurityElement(text, text2);
            int             num             = InReader.ReadInt32();

            DebugHelper.Assert(num < 512, "too many attributes.");
            for (int i = 0; i < num; i++)
            {
                string text3 = InReader.ReadString();
                string text4 = InReader.ReadString();
                securityElement.AddAttribute(text3, text4);
            }
            int num2 = InReader.ReadInt32();

            DebugHelper.Assert(num2 < 515, "too many children");
            for (int j = 0; j < num2; j++)
            {
                SecurityElement securityElement2 = SecurityTools.LoadSecurityElementChecked(InReader, 1, securityElement);
                DebugHelper.Assert(securityElement2 != null, "invalid child element");
            }
            if (InParent != null)
            {
                InParent.AddChild(securityElement);
            }
            return(securityElement);
        }
        private static SecurityElement LoadRootSecurityElement(BinaryReader InReader)
        {
            SecurityElement result;

            try
            {
                SecurityElement securityElement = SecurityTools.LoadSecurityElementChecked(InReader, 0, null);
                result = securityElement;
            }
            catch (Exception ex)
            {
                DebugHelper.Assert(false, ex.get_Message());
                result = null;
            }
            return(result);
        }