/// <summary>
        /// Called when the message has been received,
        /// after it passes through the channel binding elements.
        /// </summary>
        void IMessageWithEvents.OnReceiving()
        {
            var extraData = ((IMessage)this).ExtraData;

            this.ActualPolicies.Clear();
            string[] actualPolicies = this.actualPoliciesString.Split(' ');
            foreach (string policy in actualPolicies)
            {
                if (policy.Length > 0 && policy != AuthenticationPolicies.None)
                {
                    this.ActualPolicies.Add(policy);
                }
            }

            this.AssuranceLevels.Clear();
            AliasManager authLevelAliases = PapeUtilities.FindIncomingAliases(extraData);

            foreach (string authLevelAlias in authLevelAliases.Aliases)
            {
                string authValue;
                if (extraData.TryGetValue(AuthLevelAliasPrefix + authLevelAlias, out authValue))
                {
                    string authLevelType = authLevelAliases.ResolveAlias(authLevelAlias);
                    this.AssuranceLevels[authLevelType] = authValue;
                }
            }
        }
        /// <summary>
        /// Called when the message has been received,
        /// after it passes through the channel binding elements.
        /// </summary>
        void IMessageWithEvents.OnReceiving()
        {
            var extraData = ((IMessage)this).ExtraData;

            this.PreferredPolicies.Clear();
            string[] preferredPolicies = this.preferredPoliciesString.Split(' ');
            foreach (string policy in preferredPolicies)
            {
                if (policy.Length > 0)
                {
                    this.PreferredPolicies.Add(policy);
                }
            }

            this.PreferredAuthLevelTypes.Clear();
            AliasManager authLevelAliases = PapeUtilities.FindIncomingAliases(extraData);
            string       preferredAuthLevelAliases;

            if (extraData.TryGetValue(Constants.RequestParameters.PreferredAuthLevelTypes, out preferredAuthLevelAliases))
            {
                foreach (string authLevelAlias in preferredAuthLevelAliases.Split(' '))
                {
                    if (authLevelAlias.Length == 0)
                    {
                        continue;
                    }
                    this.PreferredAuthLevelTypes.Add(authLevelAliases.ResolveAlias(authLevelAlias));
                }
            }
        }