protected override string DecodeUrlToken(string urlToken)
        {
            if (!string.IsNullOrEmpty(urlToken))
            {
                urlToken = Uri.UnescapeDataString(urlToken).Replace(EncodedDelimiter, UrlTokenDelimiter);
                urlToken = urlToken.Replace('-', ' ');
                EncodingTokenList.ForEach(t => urlToken = urlToken.Replace(t.EncodedDelimiter, t.Delimiter));
            }

            return(urlToken);
        }
        protected override string EncodeUrlToken(string urlToken, bool removeInvalidPathCharacters)
        {
            if (!string.IsNullOrEmpty(urlToken))
            {
                if (removeInvalidPathCharacters)
                {
                    foreach (string invalidPathCharacter in _invalidPathCharacters)
                    {
                        urlToken = urlToken.Replace(invalidPathCharacter, string.Empty);
                    }
                }
                EncodingTokenList.ForEach(t => urlToken = urlToken.Replace(t.Delimiter, t.EncodedDelimiter));
                urlToken = urlToken.Replace(' ', '-');
                urlToken = Uri.EscapeDataString(urlToken).Replace(UrlTokenDelimiter, EncodedDelimiter);
            }

            return(urlToken);
        }