/// <summary>
        ///		Validate the specified <see cref="SessionSecurityToken"/>.
        /// </summary>
        /// <param name="token">
        ///		The <see cref="SessionSecurityToken"/> to validate.
        /// </param>
        /// <returns>
        ///		A collection of <see cref="ClaimsIdentity">claims identities</see> containing the claims that comprise the token.
        /// </returns>
        public override ReadOnlyCollection <ClaimsIdentity> ValidateToken(SecurityToken token)
        {
            if (token == null)
            {
                throw new ArgumentNullException(nameof(token));
            }

            ReadOnlyCollection <ClaimsIdentity> compactedClaimsIdentities = base.ValidateToken(token);

            ReadOnlyCollection <ClaimsIdentity> fullClaimsIdentities =
                compactedClaimsIdentities.Select(
                    identity => new ClaimsIdentity(
                        identity.Claims.Select(
                            claim => _mapper.ExpandClaim(claim)
                            ),
                        identity.AuthenticationType,
                        _mapper.ExpandClaimType(identity.NameClaimType),
                        _mapper.ExpandClaimType(identity.RoleClaimType)
                        )
                    )
                .ToList()
                .AsReadOnly();

            return(fullClaimsIdentities);
        }