/// <summary>
        /// Group several Tokens in a special span, specifying it's type
        /// </summary>
        /// <param name="start"></param>
        /// <param name="stop"></param>
        /// <param name="snapshot"></param>
        /// <param name="type"></param>
        /// <returns></returns>
        private ClassificationSpan Token2ClassificationSpan(IToken start, IToken stop, ITextSnapshot snapshot, IClassificationType type)
        {
            TextSpan             tokenSpan = new TextSpan(start.StartIndex, stop.StopIndex - start.StartIndex + 1);
            XsClassificationSpan span      = tokenSpan.ToClassificationSpan(snapshot, type);

            span.startTokenType = start.Type;
            span.endTokenType   = stop.Type;
            return(span);
        }
 /// <summary>
 /// "Mark" a Token, specifying it's type and the span it covers
 /// </summary>
 /// <param name="token"></param>
 /// <param name="snapshot"></param>
 /// <param name="type"></param>
 /// <returns></returns>
 private ClassificationSpan Token2ClassificationSpan(IToken token, ITextSnapshot snapshot, IClassificationType type)
 {
     if (token != null && snapshot != null)
     {
         TextSpan             tokenSpan = new TextSpan(token.StartIndex, token.StopIndex - token.StartIndex + 1);
         XsClassificationSpan span      = tokenSpan.ToClassificationSpan(snapshot, type);
         span.startTokenType = token.Type;
         span.endTokenType   = -1;
         return(span);
     }
     return(default);