public override void VisitToken(SyntaxToken token)
            {
                // trivia is not considered, only the raw form of the token

                this.hash = Hash.Combine((int)token.CSharpKind(), this.hash);

                switch (token.CSharpKind())
                {
                case SyntaxKind.IdentifierToken:
                    this.hash = Hash.Combine(token.ValueText.GetHashCode(), this.hash);
                    break;

                case SyntaxKind.NumericLiteralToken:
                case SyntaxKind.CharacterLiteralToken:
                case SyntaxKind.StringLiteralToken:
                    this.hash = Hash.Combine(token.ToString().GetHashCode(), this.hash);
                    break;
                }
            }