public void TestUnderscoreToken()
        {
            var syntaxNode = SyntaxFactory.DiscardDesignation();

            Assert.True(syntaxNode.IsKind(SyntaxKind.DiscardDesignation));
            Assert.True(syntaxNode.IsKind(SyntaxKindEx.DiscardDesignation));

            var discardDesignationSyntax = (DiscardDesignationSyntaxWrapper)syntaxNode;

            Assert.Same(syntaxNode, discardDesignationSyntax.SyntaxNode);
            Assert.Equal(syntaxNode.UnderscoreToken, discardDesignationSyntax.UnderscoreToken);

            discardDesignationSyntax = discardDesignationSyntax.WithUnderscoreToken(SpacingExtensions.WithoutTrivia(SyntaxFactory.Token(SyntaxKind.UnderscoreToken)));
            Assert.NotNull(discardDesignationSyntax.SyntaxNode);
            Assert.NotSame(syntaxNode, discardDesignationSyntax.SyntaxNode);
            Assert.False(syntaxNode.UnderscoreToken.IsEquivalentTo(discardDesignationSyntax.UnderscoreToken));
        }
        public void TestProperties()
        {
            var syntaxNode = SyntaxFactory.ParenthesizedVariableDesignation();

            Assert.True(syntaxNode.IsKind(SyntaxKind.ParenthesizedVariableDesignation));
            Assert.True(syntaxNode.IsKind(SyntaxKindEx.ParenthesizedVariableDesignation));

            var parenthesizedVariableDesignationSyntax = (ParenthesizedVariableDesignationSyntaxWrapper)syntaxNode;

            Assert.Same(syntaxNode, parenthesizedVariableDesignationSyntax.SyntaxNode);
            Assert.True(syntaxNode.OpenParenToken.IsEquivalentTo(parenthesizedVariableDesignationSyntax.OpenParenToken));

            var variableSyntaxNode = SyntaxFactory.SingleVariableDesignation(SyntaxFactory.Identifier("Anything"));

            parenthesizedVariableDesignationSyntax = parenthesizedVariableDesignationSyntax.AddVariables((SingleVariableDesignationSyntaxWrapper)variableSyntaxNode);
            Assert.Same(
                ((ParenthesizedVariableDesignationSyntax)parenthesizedVariableDesignationSyntax.SyntaxNode).Variables[0],
                parenthesizedVariableDesignationSyntax.Variables[0].SyntaxNode);

            parenthesizedVariableDesignationSyntax = parenthesizedVariableDesignationSyntax.WithOpenParenToken(SpacingExtensions.WithoutTrivia(SyntaxFactory.Token(SyntaxKind.OpenParenToken)));
            Assert.NotNull(parenthesizedVariableDesignationSyntax.SyntaxNode);
            Assert.NotSame(syntaxNode, parenthesizedVariableDesignationSyntax.SyntaxNode);
            Assert.False(syntaxNode.OpenParenToken.IsEquivalentTo(parenthesizedVariableDesignationSyntax.OpenParenToken));
            Assert.True(syntaxNode.CloseParenToken.IsEquivalentTo(parenthesizedVariableDesignationSyntax.CloseParenToken));

            var variables = SyntaxFactory.SingletonSeparatedList <VariableDesignationSyntax>(SyntaxFactory.DiscardDesignation());

            parenthesizedVariableDesignationSyntax = parenthesizedVariableDesignationSyntax.WithVariables(new SeparatedSyntaxListWrapper <VariableDesignationSyntaxWrapper> .AutoWrapSeparatedSyntaxList <VariableDesignationSyntax>(variables));
            Assert.Same(
                ((ParenthesizedVariableDesignationSyntax)parenthesizedVariableDesignationSyntax.SyntaxNode).Variables[0],
                parenthesizedVariableDesignationSyntax.Variables[0].SyntaxNode);

            parenthesizedVariableDesignationSyntax = parenthesizedVariableDesignationSyntax.WithCloseParenToken(SpacingExtensions.WithoutTrivia(SyntaxFactory.Token(SyntaxKind.CloseParenToken)));
            Assert.NotNull(parenthesizedVariableDesignationSyntax.SyntaxNode);
            Assert.False(syntaxNode.OpenParenToken.IsEquivalentTo(parenthesizedVariableDesignationSyntax.OpenParenToken));
            Assert.False(syntaxNode.CloseParenToken.IsEquivalentTo(parenthesizedVariableDesignationSyntax.CloseParenToken));
        }