/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Compilers/VisualBasic/Portable/Generated/Syntax.xml.Main.Generated.vb
45 879 строк
2 MB
Cyrus Najmabadi
Fix three defects in the VB grammar generator (#84661)
29 июл 2026, 11:21
Не верифицирован
29 июл 2026, 11:21
ee4c2a7
Код
Авторство
О чём код?
' Definition of syntax model. ' DO NOT HAND EDIT Imports System.Collections.Generic Imports System.Collections.Immutable Imports System.Runtime.CompilerServices Imports Microsoft.CodeAnalysis.Syntax.InternalSyntax Imports Microsoft.CodeAnalysis.VisualBasic.Syntax Imports Roslyn.Utilities Namespace Microsoft.CodeAnalysis.VisualBasic Public MustInherit Class VisualBasicSyntaxVisitor(Of TResult) Public Overridable Function VisitEmptyStatement(ByVal node As EmptyStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitEndBlockStatement(ByVal node As EndBlockStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitCompilationUnit(ByVal node As CompilationUnitSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitOptionStatement(ByVal node As OptionStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitImportsStatement(ByVal node As ImportsStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitSimpleImportsClause(ByVal node As SimpleImportsClauseSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitImportAliasClause(ByVal node As ImportAliasClauseSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitXmlNamespaceImportsClause(ByVal node As XmlNamespaceImportsClauseSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitNamespaceBlock(ByVal node As NamespaceBlockSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitNamespaceStatement(ByVal node As NamespaceStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitModuleBlock(ByVal node As ModuleBlockSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitStructureBlock(ByVal node As StructureBlockSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitInterfaceBlock(ByVal node As InterfaceBlockSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitClassBlock(ByVal node As ClassBlockSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitEnumBlock(ByVal node As EnumBlockSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitInheritsStatement(ByVal node As InheritsStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitImplementsStatement(ByVal node As ImplementsStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitModuleStatement(ByVal node As ModuleStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitStructureStatement(ByVal node As StructureStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitInterfaceStatement(ByVal node As InterfaceStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitClassStatement(ByVal node As ClassStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitEnumStatement(ByVal node As EnumStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitTypeParameterList(ByVal node As TypeParameterListSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitTypeParameter(ByVal node As TypeParameterSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitTypeParameterSingleConstraintClause(ByVal node As TypeParameterSingleConstraintClauseSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitTypeParameterMultipleConstraintClause(ByVal node As TypeParameterMultipleConstraintClauseSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitSpecialConstraint(ByVal node As SpecialConstraintSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitTypeConstraint(ByVal node As TypeConstraintSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitEnumMemberDeclaration(ByVal node As EnumMemberDeclarationSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitMethodBlock(ByVal node As MethodBlockSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitConstructorBlock(ByVal node As ConstructorBlockSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitOperatorBlock(ByVal node As OperatorBlockSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitAccessorBlock(ByVal node As AccessorBlockSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitPropertyBlock(ByVal node As PropertyBlockSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitEventBlock(ByVal node As EventBlockSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitParameterList(ByVal node As ParameterListSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitMethodStatement(ByVal node As MethodStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitSubNewStatement(ByVal node As SubNewStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitDeclareStatement(ByVal node As DeclareStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitDelegateStatement(ByVal node As DelegateStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitEventStatement(ByVal node As EventStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitOperatorStatement(ByVal node As OperatorStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitPropertyStatement(ByVal node As PropertyStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitAccessorStatement(ByVal node As AccessorStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitImplementsClause(ByVal node As ImplementsClauseSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitHandlesClause(ByVal node As HandlesClauseSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitKeywordEventContainer(ByVal node As KeywordEventContainerSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitWithEventsEventContainer(ByVal node As WithEventsEventContainerSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitWithEventsPropertyEventContainer(ByVal node As WithEventsPropertyEventContainerSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitHandlesClauseItem(ByVal node As HandlesClauseItemSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitIncompleteMember(ByVal node As IncompleteMemberSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitFieldDeclaration(ByVal node As FieldDeclarationSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitVariableDeclarator(ByVal node As VariableDeclaratorSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitSimpleAsClause(ByVal node As SimpleAsClauseSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitAsNewClause(ByVal node As AsNewClauseSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitObjectMemberInitializer(ByVal node As ObjectMemberInitializerSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitObjectCollectionInitializer(ByVal node As ObjectCollectionInitializerSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitInferredFieldInitializer(ByVal node As InferredFieldInitializerSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitNamedFieldInitializer(ByVal node As NamedFieldInitializerSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitEqualsValue(ByVal node As EqualsValueSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitParameter(ByVal node As ParameterSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitModifiedIdentifier(ByVal node As ModifiedIdentifierSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitArrayRankSpecifier(ByVal node As ArrayRankSpecifierSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitAttributeList(ByVal node As AttributeListSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitAttribute(ByVal node As AttributeSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitAttributeTarget(ByVal node As AttributeTargetSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitAttributesStatement(ByVal node As AttributesStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitExpressionStatement(ByVal node As ExpressionStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitPrintStatement(ByVal node As PrintStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitWhileBlock(ByVal node As WhileBlockSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitUsingBlock(ByVal node As UsingBlockSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitSyncLockBlock(ByVal node As SyncLockBlockSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitWithBlock(ByVal node As WithBlockSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitLocalDeclarationStatement(ByVal node As LocalDeclarationStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitLabelStatement(ByVal node As LabelStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitGoToStatement(ByVal node As GoToStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitLabel(ByVal node As LabelSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitStopOrEndStatement(ByVal node As StopOrEndStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitExitStatement(ByVal node As ExitStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitContinueStatement(ByVal node As ContinueStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitReturnStatement(ByVal node As ReturnStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitSingleLineIfStatement(ByVal node As SingleLineIfStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitSingleLineElseClause(ByVal node As SingleLineElseClauseSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitMultiLineIfBlock(ByVal node As MultiLineIfBlockSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitIfStatement(ByVal node As IfStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitElseIfBlock(ByVal node As ElseIfBlockSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitElseIfStatement(ByVal node As ElseIfStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitElseBlock(ByVal node As ElseBlockSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitElseStatement(ByVal node As ElseStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitTryBlock(ByVal node As TryBlockSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitTryStatement(ByVal node As TryStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitCatchBlock(ByVal node As CatchBlockSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitCatchStatement(ByVal node As CatchStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitCatchFilterClause(ByVal node As CatchFilterClauseSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitFinallyBlock(ByVal node As FinallyBlockSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitFinallyStatement(ByVal node As FinallyStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitErrorStatement(ByVal node As ErrorStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitOnErrorGoToStatement(ByVal node As OnErrorGoToStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitOnErrorResumeNextStatement(ByVal node As OnErrorResumeNextStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitResumeStatement(ByVal node As ResumeStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitSelectBlock(ByVal node As SelectBlockSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitSelectStatement(ByVal node As SelectStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitCaseBlock(ByVal node As CaseBlockSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitCaseStatement(ByVal node As CaseStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitElseCaseClause(ByVal node As ElseCaseClauseSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitSimpleCaseClause(ByVal node As SimpleCaseClauseSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitRangeCaseClause(ByVal node As RangeCaseClauseSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitRelationalCaseClause(ByVal node As RelationalCaseClauseSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitSyncLockStatement(ByVal node As SyncLockStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitDoLoopBlock(ByVal node As DoLoopBlockSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitDoStatement(ByVal node As DoStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitLoopStatement(ByVal node As LoopStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitWhileOrUntilClause(ByVal node As WhileOrUntilClauseSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitWhileStatement(ByVal node As WhileStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitForBlock(ByVal node As ForBlockSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitForEachBlock(ByVal node As ForEachBlockSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitForStatement(ByVal node As ForStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitForStepClause(ByVal node As ForStepClauseSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitForEachStatement(ByVal node As ForEachStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitNextStatement(ByVal node As NextStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitUsingStatement(ByVal node As UsingStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitThrowStatement(ByVal node As ThrowStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitAssignmentStatement(ByVal node As AssignmentStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitMidExpression(ByVal node As MidExpressionSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitCallStatement(ByVal node As CallStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitAddRemoveHandlerStatement(ByVal node As AddRemoveHandlerStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitRaiseEventStatement(ByVal node As RaiseEventStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitWithStatement(ByVal node As WithStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitReDimStatement(ByVal node As ReDimStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitRedimClause(ByVal node As RedimClauseSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitEraseStatement(ByVal node As EraseStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitLiteralExpression(ByVal node As LiteralExpressionSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitParenthesizedExpression(ByVal node As ParenthesizedExpressionSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitTupleExpression(ByVal node As TupleExpressionSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitTupleType(ByVal node As TupleTypeSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitTypedTupleElement(ByVal node As TypedTupleElementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitNamedTupleElement(ByVal node As NamedTupleElementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitMeExpression(ByVal node As MeExpressionSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitMyBaseExpression(ByVal node As MyBaseExpressionSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitMyClassExpression(ByVal node As MyClassExpressionSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitGetTypeExpression(ByVal node As GetTypeExpressionSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitTypeOfExpression(ByVal node As TypeOfExpressionSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitGetXmlNamespaceExpression(ByVal node As GetXmlNamespaceExpressionSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitMemberAccessExpression(ByVal node As MemberAccessExpressionSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitXmlMemberAccessExpression(ByVal node As XmlMemberAccessExpressionSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitInvocationExpression(ByVal node As InvocationExpressionSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitObjectCreationExpression(ByVal node As ObjectCreationExpressionSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitAnonymousObjectCreationExpression(ByVal node As AnonymousObjectCreationExpressionSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitArrayCreationExpression(ByVal node As ArrayCreationExpressionSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitCollectionInitializer(ByVal node As CollectionInitializerSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitCTypeExpression(ByVal node As CTypeExpressionSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitDirectCastExpression(ByVal node As DirectCastExpressionSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitTryCastExpression(ByVal node As TryCastExpressionSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitPredefinedCastExpression(ByVal node As PredefinedCastExpressionSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitBinaryExpression(ByVal node As BinaryExpressionSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitUnaryExpression(ByVal node As UnaryExpressionSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitBinaryConditionalExpression(ByVal node As BinaryConditionalExpressionSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitTernaryConditionalExpression(ByVal node As TernaryConditionalExpressionSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitSingleLineLambdaExpression(ByVal node As SingleLineLambdaExpressionSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitMultiLineLambdaExpression(ByVal node As MultiLineLambdaExpressionSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitLambdaHeader(ByVal node As LambdaHeaderSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitArgumentList(ByVal node As ArgumentListSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitOmittedArgument(ByVal node As OmittedArgumentSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitSimpleArgument(ByVal node As SimpleArgumentSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitNameColonEquals(ByVal node As NameColonEqualsSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitRangeArgument(ByVal node As RangeArgumentSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitQueryExpression(ByVal node As QueryExpressionSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitCollectionRangeVariable(ByVal node As CollectionRangeVariableSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitExpressionRangeVariable(ByVal node As ExpressionRangeVariableSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitAggregationRangeVariable(ByVal node As AggregationRangeVariableSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitVariableNameEquals(ByVal node As VariableNameEqualsSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitFunctionAggregation(ByVal node As FunctionAggregationSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitGroupAggregation(ByVal node As GroupAggregationSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitFromClause(ByVal node As FromClauseSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitLetClause(ByVal node As LetClauseSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitAggregateClause(ByVal node As AggregateClauseSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitDistinctClause(ByVal node As DistinctClauseSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitWhereClause(ByVal node As WhereClauseSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitPartitionWhileClause(ByVal node As PartitionWhileClauseSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitPartitionClause(ByVal node As PartitionClauseSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitGroupByClause(ByVal node As GroupByClauseSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitJoinCondition(ByVal node As JoinConditionSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitSimpleJoinClause(ByVal node As SimpleJoinClauseSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitGroupJoinClause(ByVal node As GroupJoinClauseSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitOrderByClause(ByVal node As OrderByClauseSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitOrdering(ByVal node As OrderingSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitSelectClause(ByVal node As SelectClauseSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitXmlDocument(ByVal node As XmlDocumentSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitXmlDeclaration(ByVal node As XmlDeclarationSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitXmlDeclarationOption(ByVal node As XmlDeclarationOptionSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitXmlElement(ByVal node As XmlElementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitXmlText(ByVal node As XmlTextSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitXmlElementStartTag(ByVal node As XmlElementStartTagSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitXmlElementEndTag(ByVal node As XmlElementEndTagSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitXmlEmptyElement(ByVal node As XmlEmptyElementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitXmlAttribute(ByVal node As XmlAttributeSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitXmlString(ByVal node As XmlStringSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitXmlPrefixName(ByVal node As XmlPrefixNameSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitXmlName(ByVal node As XmlNameSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitXmlBracketedName(ByVal node As XmlBracketedNameSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitXmlPrefix(ByVal node As XmlPrefixSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitXmlComment(ByVal node As XmlCommentSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitXmlProcessingInstruction(ByVal node As XmlProcessingInstructionSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitXmlCDataSection(ByVal node As XmlCDataSectionSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitXmlEmbeddedExpression(ByVal node As XmlEmbeddedExpressionSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitArrayType(ByVal node As ArrayTypeSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitNullableType(ByVal node As NullableTypeSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitPredefinedType(ByVal node As PredefinedTypeSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitIdentifierName(ByVal node As IdentifierNameSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitGenericName(ByVal node As GenericNameSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitQualifiedName(ByVal node As QualifiedNameSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitGlobalName(ByVal node As GlobalNameSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitTypeArgumentList(ByVal node As TypeArgumentListSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitCrefReference(ByVal node As CrefReferenceSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitCrefSignature(ByVal node As CrefSignatureSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitCrefSignaturePart(ByVal node As CrefSignaturePartSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitCrefOperatorReference(ByVal node As CrefOperatorReferenceSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitQualifiedCrefOperatorReference(ByVal node As QualifiedCrefOperatorReferenceSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitYieldStatement(ByVal node As YieldStatementSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitAwaitExpression(ByVal node As AwaitExpressionSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitSkippedTokensTrivia(ByVal node As SkippedTokensTriviaSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitDocumentationCommentTrivia(ByVal node As DocumentationCommentTriviaSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitXmlCrefAttribute(ByVal node As XmlCrefAttributeSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitXmlNameAttribute(ByVal node As XmlNameAttributeSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitConditionalAccessExpression(ByVal node As ConditionalAccessExpressionSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitNameOfExpression(ByVal node As NameOfExpressionSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitInterpolatedStringExpression(ByVal node As InterpolatedStringExpressionSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitInterpolatedStringText(ByVal node As InterpolatedStringTextSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitInterpolation(ByVal node As InterpolationSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitInterpolationAlignmentClause(ByVal node As InterpolationAlignmentClauseSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitInterpolationFormatClause(ByVal node As InterpolationFormatClauseSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitConstDirectiveTrivia(ByVal node As ConstDirectiveTriviaSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitIfDirectiveTrivia(ByVal node As IfDirectiveTriviaSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitElseDirectiveTrivia(ByVal node As ElseDirectiveTriviaSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitEndIfDirectiveTrivia(ByVal node As EndIfDirectiveTriviaSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitRegionDirectiveTrivia(ByVal node As RegionDirectiveTriviaSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitEndRegionDirectiveTrivia(ByVal node As EndRegionDirectiveTriviaSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitExternalSourceDirectiveTrivia(ByVal node As ExternalSourceDirectiveTriviaSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitEndExternalSourceDirectiveTrivia(ByVal node As EndExternalSourceDirectiveTriviaSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitExternalChecksumDirectiveTrivia(ByVal node As ExternalChecksumDirectiveTriviaSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitEnableWarningDirectiveTrivia(ByVal node As EnableWarningDirectiveTriviaSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitDisableWarningDirectiveTrivia(ByVal node As DisableWarningDirectiveTriviaSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitReferenceDirectiveTrivia(ByVal node As ReferenceDirectiveTriviaSyntax) As TResult Return Me.DefaultVisit(node) End Function Public Overridable Function VisitBadDirectiveTrivia(ByVal node As BadDirectiveTriviaSyntax) As TResult Return Me.DefaultVisit(node) End Function End Class Public MustInherit Class VisualBasicSyntaxVisitor Public Overridable Sub VisitEmptyStatement(ByVal node As EmptyStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitEndBlockStatement(ByVal node As EndBlockStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitCompilationUnit(ByVal node As CompilationUnitSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitOptionStatement(ByVal node As OptionStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitImportsStatement(ByVal node As ImportsStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitSimpleImportsClause(ByVal node As SimpleImportsClauseSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitImportAliasClause(ByVal node As ImportAliasClauseSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitXmlNamespaceImportsClause(ByVal node As XmlNamespaceImportsClauseSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitNamespaceBlock(ByVal node As NamespaceBlockSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitNamespaceStatement(ByVal node As NamespaceStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitModuleBlock(ByVal node As ModuleBlockSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitStructureBlock(ByVal node As StructureBlockSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitInterfaceBlock(ByVal node As InterfaceBlockSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitClassBlock(ByVal node As ClassBlockSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitEnumBlock(ByVal node As EnumBlockSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitInheritsStatement(ByVal node As InheritsStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitImplementsStatement(ByVal node As ImplementsStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitModuleStatement(ByVal node As ModuleStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitStructureStatement(ByVal node As StructureStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitInterfaceStatement(ByVal node As InterfaceStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitClassStatement(ByVal node As ClassStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitEnumStatement(ByVal node As EnumStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitTypeParameterList(ByVal node As TypeParameterListSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitTypeParameter(ByVal node As TypeParameterSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitTypeParameterSingleConstraintClause(ByVal node As TypeParameterSingleConstraintClauseSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitTypeParameterMultipleConstraintClause(ByVal node As TypeParameterMultipleConstraintClauseSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitSpecialConstraint(ByVal node As SpecialConstraintSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitTypeConstraint(ByVal node As TypeConstraintSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitEnumMemberDeclaration(ByVal node As EnumMemberDeclarationSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitMethodBlock(ByVal node As MethodBlockSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitConstructorBlock(ByVal node As ConstructorBlockSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitOperatorBlock(ByVal node As OperatorBlockSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitAccessorBlock(ByVal node As AccessorBlockSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitPropertyBlock(ByVal node As PropertyBlockSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitEventBlock(ByVal node As EventBlockSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitParameterList(ByVal node As ParameterListSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitMethodStatement(ByVal node As MethodStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitSubNewStatement(ByVal node As SubNewStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitDeclareStatement(ByVal node As DeclareStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitDelegateStatement(ByVal node As DelegateStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitEventStatement(ByVal node As EventStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitOperatorStatement(ByVal node As OperatorStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitPropertyStatement(ByVal node As PropertyStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitAccessorStatement(ByVal node As AccessorStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitImplementsClause(ByVal node As ImplementsClauseSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitHandlesClause(ByVal node As HandlesClauseSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitKeywordEventContainer(ByVal node As KeywordEventContainerSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitWithEventsEventContainer(ByVal node As WithEventsEventContainerSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitWithEventsPropertyEventContainer(ByVal node As WithEventsPropertyEventContainerSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitHandlesClauseItem(ByVal node As HandlesClauseItemSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitIncompleteMember(ByVal node As IncompleteMemberSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitFieldDeclaration(ByVal node As FieldDeclarationSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitVariableDeclarator(ByVal node As VariableDeclaratorSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitSimpleAsClause(ByVal node As SimpleAsClauseSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitAsNewClause(ByVal node As AsNewClauseSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitObjectMemberInitializer(ByVal node As ObjectMemberInitializerSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitObjectCollectionInitializer(ByVal node As ObjectCollectionInitializerSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitInferredFieldInitializer(ByVal node As InferredFieldInitializerSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitNamedFieldInitializer(ByVal node As NamedFieldInitializerSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitEqualsValue(ByVal node As EqualsValueSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitParameter(ByVal node As ParameterSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitModifiedIdentifier(ByVal node As ModifiedIdentifierSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitArrayRankSpecifier(ByVal node As ArrayRankSpecifierSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitAttributeList(ByVal node As AttributeListSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitAttribute(ByVal node As AttributeSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitAttributeTarget(ByVal node As AttributeTargetSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitAttributesStatement(ByVal node As AttributesStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitExpressionStatement(ByVal node As ExpressionStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitPrintStatement(ByVal node As PrintStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitWhileBlock(ByVal node As WhileBlockSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitUsingBlock(ByVal node As UsingBlockSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitSyncLockBlock(ByVal node As SyncLockBlockSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitWithBlock(ByVal node As WithBlockSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitLocalDeclarationStatement(ByVal node As LocalDeclarationStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitLabelStatement(ByVal node As LabelStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitGoToStatement(ByVal node As GoToStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitLabel(ByVal node As LabelSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitStopOrEndStatement(ByVal node As StopOrEndStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitExitStatement(ByVal node As ExitStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitContinueStatement(ByVal node As ContinueStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitReturnStatement(ByVal node As ReturnStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitSingleLineIfStatement(ByVal node As SingleLineIfStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitSingleLineElseClause(ByVal node As SingleLineElseClauseSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitMultiLineIfBlock(ByVal node As MultiLineIfBlockSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitIfStatement(ByVal node As IfStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitElseIfBlock(ByVal node As ElseIfBlockSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitElseIfStatement(ByVal node As ElseIfStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitElseBlock(ByVal node As ElseBlockSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitElseStatement(ByVal node As ElseStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitTryBlock(ByVal node As TryBlockSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitTryStatement(ByVal node As TryStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitCatchBlock(ByVal node As CatchBlockSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitCatchStatement(ByVal node As CatchStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitCatchFilterClause(ByVal node As CatchFilterClauseSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitFinallyBlock(ByVal node As FinallyBlockSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitFinallyStatement(ByVal node As FinallyStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitErrorStatement(ByVal node As ErrorStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitOnErrorGoToStatement(ByVal node As OnErrorGoToStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitOnErrorResumeNextStatement(ByVal node As OnErrorResumeNextStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitResumeStatement(ByVal node As ResumeStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitSelectBlock(ByVal node As SelectBlockSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitSelectStatement(ByVal node As SelectStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitCaseBlock(ByVal node As CaseBlockSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitCaseStatement(ByVal node As CaseStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitElseCaseClause(ByVal node As ElseCaseClauseSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitSimpleCaseClause(ByVal node As SimpleCaseClauseSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitRangeCaseClause(ByVal node As RangeCaseClauseSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitRelationalCaseClause(ByVal node As RelationalCaseClauseSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitSyncLockStatement(ByVal node As SyncLockStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitDoLoopBlock(ByVal node As DoLoopBlockSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitDoStatement(ByVal node As DoStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitLoopStatement(ByVal node As LoopStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitWhileOrUntilClause(ByVal node As WhileOrUntilClauseSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitWhileStatement(ByVal node As WhileStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitForBlock(ByVal node As ForBlockSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitForEachBlock(ByVal node As ForEachBlockSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitForStatement(ByVal node As ForStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitForStepClause(ByVal node As ForStepClauseSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitForEachStatement(ByVal node As ForEachStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitNextStatement(ByVal node As NextStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitUsingStatement(ByVal node As UsingStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitThrowStatement(ByVal node As ThrowStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitAssignmentStatement(ByVal node As AssignmentStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitMidExpression(ByVal node As MidExpressionSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitCallStatement(ByVal node As CallStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitAddRemoveHandlerStatement(ByVal node As AddRemoveHandlerStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitRaiseEventStatement(ByVal node As RaiseEventStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitWithStatement(ByVal node As WithStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitReDimStatement(ByVal node As ReDimStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitRedimClause(ByVal node As RedimClauseSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitEraseStatement(ByVal node As EraseStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitLiteralExpression(ByVal node As LiteralExpressionSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitParenthesizedExpression(ByVal node As ParenthesizedExpressionSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitTupleExpression(ByVal node As TupleExpressionSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitTupleType(ByVal node As TupleTypeSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitTypedTupleElement(ByVal node As TypedTupleElementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitNamedTupleElement(ByVal node As NamedTupleElementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitMeExpression(ByVal node As MeExpressionSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitMyBaseExpression(ByVal node As MyBaseExpressionSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitMyClassExpression(ByVal node As MyClassExpressionSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitGetTypeExpression(ByVal node As GetTypeExpressionSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitTypeOfExpression(ByVal node As TypeOfExpressionSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitGetXmlNamespaceExpression(ByVal node As GetXmlNamespaceExpressionSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitMemberAccessExpression(ByVal node As MemberAccessExpressionSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitXmlMemberAccessExpression(ByVal node As XmlMemberAccessExpressionSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitInvocationExpression(ByVal node As InvocationExpressionSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitObjectCreationExpression(ByVal node As ObjectCreationExpressionSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitAnonymousObjectCreationExpression(ByVal node As AnonymousObjectCreationExpressionSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitArrayCreationExpression(ByVal node As ArrayCreationExpressionSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitCollectionInitializer(ByVal node As CollectionInitializerSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitCTypeExpression(ByVal node As CTypeExpressionSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitDirectCastExpression(ByVal node As DirectCastExpressionSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitTryCastExpression(ByVal node As TryCastExpressionSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitPredefinedCastExpression(ByVal node As PredefinedCastExpressionSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitBinaryExpression(ByVal node As BinaryExpressionSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitUnaryExpression(ByVal node As UnaryExpressionSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitBinaryConditionalExpression(ByVal node As BinaryConditionalExpressionSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitTernaryConditionalExpression(ByVal node As TernaryConditionalExpressionSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitSingleLineLambdaExpression(ByVal node As SingleLineLambdaExpressionSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitMultiLineLambdaExpression(ByVal node As MultiLineLambdaExpressionSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitLambdaHeader(ByVal node As LambdaHeaderSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitArgumentList(ByVal node As ArgumentListSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitOmittedArgument(ByVal node As OmittedArgumentSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitSimpleArgument(ByVal node As SimpleArgumentSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitNameColonEquals(ByVal node As NameColonEqualsSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitRangeArgument(ByVal node As RangeArgumentSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitQueryExpression(ByVal node As QueryExpressionSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitCollectionRangeVariable(ByVal node As CollectionRangeVariableSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitExpressionRangeVariable(ByVal node As ExpressionRangeVariableSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitAggregationRangeVariable(ByVal node As AggregationRangeVariableSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitVariableNameEquals(ByVal node As VariableNameEqualsSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitFunctionAggregation(ByVal node As FunctionAggregationSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitGroupAggregation(ByVal node As GroupAggregationSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitFromClause(ByVal node As FromClauseSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitLetClause(ByVal node As LetClauseSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitAggregateClause(ByVal node As AggregateClauseSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitDistinctClause(ByVal node As DistinctClauseSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitWhereClause(ByVal node As WhereClauseSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitPartitionWhileClause(ByVal node As PartitionWhileClauseSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitPartitionClause(ByVal node As PartitionClauseSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitGroupByClause(ByVal node As GroupByClauseSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitJoinCondition(ByVal node As JoinConditionSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitSimpleJoinClause(ByVal node As SimpleJoinClauseSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitGroupJoinClause(ByVal node As GroupJoinClauseSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitOrderByClause(ByVal node As OrderByClauseSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitOrdering(ByVal node As OrderingSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitSelectClause(ByVal node As SelectClauseSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitXmlDocument(ByVal node As XmlDocumentSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitXmlDeclaration(ByVal node As XmlDeclarationSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitXmlDeclarationOption(ByVal node As XmlDeclarationOptionSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitXmlElement(ByVal node As XmlElementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitXmlText(ByVal node As XmlTextSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitXmlElementStartTag(ByVal node As XmlElementStartTagSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitXmlElementEndTag(ByVal node As XmlElementEndTagSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitXmlEmptyElement(ByVal node As XmlEmptyElementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitXmlAttribute(ByVal node As XmlAttributeSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitXmlString(ByVal node As XmlStringSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitXmlPrefixName(ByVal node As XmlPrefixNameSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitXmlName(ByVal node As XmlNameSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitXmlBracketedName(ByVal node As XmlBracketedNameSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitXmlPrefix(ByVal node As XmlPrefixSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitXmlComment(ByVal node As XmlCommentSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitXmlProcessingInstruction(ByVal node As XmlProcessingInstructionSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitXmlCDataSection(ByVal node As XmlCDataSectionSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitXmlEmbeddedExpression(ByVal node As XmlEmbeddedExpressionSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitArrayType(ByVal node As ArrayTypeSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitNullableType(ByVal node As NullableTypeSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitPredefinedType(ByVal node As PredefinedTypeSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitIdentifierName(ByVal node As IdentifierNameSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitGenericName(ByVal node As GenericNameSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitQualifiedName(ByVal node As QualifiedNameSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitGlobalName(ByVal node As GlobalNameSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitTypeArgumentList(ByVal node As TypeArgumentListSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitCrefReference(ByVal node As CrefReferenceSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitCrefSignature(ByVal node As CrefSignatureSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitCrefSignaturePart(ByVal node As CrefSignaturePartSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitCrefOperatorReference(ByVal node As CrefOperatorReferenceSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitQualifiedCrefOperatorReference(ByVal node As QualifiedCrefOperatorReferenceSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitYieldStatement(ByVal node As YieldStatementSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitAwaitExpression(ByVal node As AwaitExpressionSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitSkippedTokensTrivia(ByVal node As SkippedTokensTriviaSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitDocumentationCommentTrivia(ByVal node As DocumentationCommentTriviaSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitXmlCrefAttribute(ByVal node As XmlCrefAttributeSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitXmlNameAttribute(ByVal node As XmlNameAttributeSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitConditionalAccessExpression(ByVal node As ConditionalAccessExpressionSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitNameOfExpression(ByVal node As NameOfExpressionSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitInterpolatedStringExpression(ByVal node As InterpolatedStringExpressionSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitInterpolatedStringText(ByVal node As InterpolatedStringTextSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitInterpolation(ByVal node As InterpolationSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitInterpolationAlignmentClause(ByVal node As InterpolationAlignmentClauseSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitInterpolationFormatClause(ByVal node As InterpolationFormatClauseSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitConstDirectiveTrivia(ByVal node As ConstDirectiveTriviaSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitIfDirectiveTrivia(ByVal node As IfDirectiveTriviaSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitElseDirectiveTrivia(ByVal node As ElseDirectiveTriviaSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitEndIfDirectiveTrivia(ByVal node As EndIfDirectiveTriviaSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitRegionDirectiveTrivia(ByVal node As RegionDirectiveTriviaSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitEndRegionDirectiveTrivia(ByVal node As EndRegionDirectiveTriviaSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitExternalSourceDirectiveTrivia(ByVal node As ExternalSourceDirectiveTriviaSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitEndExternalSourceDirectiveTrivia(ByVal node As EndExternalSourceDirectiveTriviaSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitExternalChecksumDirectiveTrivia(ByVal node As ExternalChecksumDirectiveTriviaSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitEnableWarningDirectiveTrivia(ByVal node As EnableWarningDirectiveTriviaSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitDisableWarningDirectiveTrivia(ByVal node As DisableWarningDirectiveTriviaSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitReferenceDirectiveTrivia(ByVal node As ReferenceDirectiveTriviaSyntax) Me.DefaultVisit(node) : Return End Sub Public Overridable Sub VisitBadDirectiveTrivia(ByVal node As BadDirectiveTriviaSyntax) Me.DefaultVisit(node) : Return End Sub End Class Public MustInherit Class VisualBasicSyntaxRewriter Inherits VisualBasicSyntaxVisitor(Of SyntaxNode) Public Overrides Function VisitEmptyStatement(ByVal node As EmptyStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newEmpty = DirectCast(VisitToken(node.Empty).Node, InternalSyntax.PunctuationSyntax) If node.Empty.Node IsNot newEmpty Then anyChanges = True If anyChanges Then Return New EmptyStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newEmpty) Else Return node End If End Function Public Overrides Function VisitEndBlockStatement(ByVal node As EndBlockStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newEndKeyword = DirectCast(VisitToken(node.EndKeyword).Node, InternalSyntax.KeywordSyntax) If node.EndKeyword.Node IsNot newEndKeyword Then anyChanges = True Dim newBlockKeyword = DirectCast(VisitToken(node.BlockKeyword).Node, InternalSyntax.KeywordSyntax) If node.BlockKeyword.Node IsNot newBlockKeyword Then anyChanges = True If anyChanges Then Return New EndBlockStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newEndKeyword, newBlockKeyword) Else Return node End If End Function Public Overrides Function VisitCompilationUnit(ByVal node As CompilationUnitSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newOptions = VisitList(node.Options) If node._options IsNot newOptions.Node Then anyChanges = True Dim newImports = VisitList(node.[Imports]) If node._imports IsNot newImports.Node Then anyChanges = True Dim newAttributes = VisitList(node.Attributes) If node._attributes IsNot newAttributes.Node Then anyChanges = True Dim newMembers = VisitList(node.Members) If node._members IsNot newMembers.Node Then anyChanges = True Dim newEndOfFileToken = DirectCast(VisitToken(node.EndOfFileToken).Node, InternalSyntax.PunctuationSyntax) If node.EndOfFileToken.Node IsNot newEndOfFileToken Then anyChanges = True If anyChanges Then Return New CompilationUnitSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newOptions.Node, newImports.Node, newAttributes.Node, newMembers.Node, newEndOfFileToken) Else Return node End If End Function Public Overrides Function VisitOptionStatement(ByVal node As OptionStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newOptionKeyword = DirectCast(VisitToken(node.OptionKeyword).Node, InternalSyntax.KeywordSyntax) If node.OptionKeyword.Node IsNot newOptionKeyword Then anyChanges = True Dim newNameKeyword = DirectCast(VisitToken(node.NameKeyword).Node, InternalSyntax.KeywordSyntax) If node.NameKeyword.Node IsNot newNameKeyword Then anyChanges = True Dim newValueKeyword = DirectCast(VisitToken(node.ValueKeyword).Node, InternalSyntax.KeywordSyntax) If node.ValueKeyword.Node IsNot newValueKeyword Then anyChanges = True If anyChanges Then Return New OptionStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newOptionKeyword, newNameKeyword, newValueKeyword) Else Return node End If End Function Public Overrides Function VisitImportsStatement(ByVal node As ImportsStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newImportsKeyword = DirectCast(VisitToken(node.ImportsKeyword).Node, InternalSyntax.KeywordSyntax) If node.ImportsKeyword.Node IsNot newImportsKeyword Then anyChanges = True Dim newImportsClauses = VisitList(node.ImportsClauses) If node._importsClauses IsNot newImportsClauses.Node Then anyChanges = True If anyChanges Then Return New ImportsStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newImportsKeyword, newImportsClauses.Node) Else Return node End If End Function Public Overrides Function VisitSimpleImportsClause(ByVal node As SimpleImportsClauseSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newAlias = DirectCast(Visit(node.[Alias]), ImportAliasClauseSyntax) If node.[Alias] IsNot newAlias Then anyChanges = True Dim newName = DirectCast(Visit(node.Name), NameSyntax) If node.Name IsNot newName Then anyChanges = True If anyChanges Then Return New SimpleImportsClauseSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newAlias, newName) Else Return node End If End Function Public Overrides Function VisitImportAliasClause(ByVal node As ImportAliasClauseSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newIdentifier = DirectCast(VisitToken(node.Identifier).Node, InternalSyntax.IdentifierTokenSyntax) If node.Identifier.Node IsNot newIdentifier Then anyChanges = True Dim newEqualsToken = DirectCast(VisitToken(node.EqualsToken).Node, InternalSyntax.PunctuationSyntax) If node.EqualsToken.Node IsNot newEqualsToken Then anyChanges = True If anyChanges Then Return New ImportAliasClauseSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newIdentifier, newEqualsToken) Else Return node End If End Function Public Overrides Function VisitXmlNamespaceImportsClause(ByVal node As XmlNamespaceImportsClauseSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newLessThanToken = DirectCast(VisitToken(node.LessThanToken).Node, InternalSyntax.PunctuationSyntax) If node.LessThanToken.Node IsNot newLessThanToken Then anyChanges = True Dim newXmlNamespace = DirectCast(Visit(node.XmlNamespace), XmlAttributeSyntax) If node.XmlNamespace IsNot newXmlNamespace Then anyChanges = True Dim newGreaterThanToken = DirectCast(VisitToken(node.GreaterThanToken).Node, InternalSyntax.PunctuationSyntax) If node.GreaterThanToken.Node IsNot newGreaterThanToken Then anyChanges = True If anyChanges Then Return New XmlNamespaceImportsClauseSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newLessThanToken, newXmlNamespace, newGreaterThanToken) Else Return node End If End Function Public Overrides Function VisitNamespaceBlock(ByVal node As NamespaceBlockSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newNamespaceStatement = DirectCast(Visit(node.NamespaceStatement), NamespaceStatementSyntax) If node.NamespaceStatement IsNot newNamespaceStatement Then anyChanges = True Dim newMembers = VisitList(node.Members) If node._members IsNot newMembers.Node Then anyChanges = True Dim newEndNamespaceStatement = DirectCast(Visit(node.EndNamespaceStatement), EndBlockStatementSyntax) If node.EndNamespaceStatement IsNot newEndNamespaceStatement Then anyChanges = True If anyChanges Then Return New NamespaceBlockSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newNamespaceStatement, newMembers.Node, newEndNamespaceStatement) Else Return node End If End Function Public Overrides Function VisitNamespaceStatement(ByVal node As NamespaceStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newNamespaceKeyword = DirectCast(VisitToken(node.NamespaceKeyword).Node, InternalSyntax.KeywordSyntax) If node.NamespaceKeyword.Node IsNot newNamespaceKeyword Then anyChanges = True Dim newName = DirectCast(Visit(node.Name), NameSyntax) If node.Name IsNot newName Then anyChanges = True If anyChanges Then Return New NamespaceStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newNamespaceKeyword, newName) Else Return node End If End Function Public Overrides Function VisitModuleBlock(ByVal node As ModuleBlockSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newModuleStatement = DirectCast(Visit(node.ModuleStatement), ModuleStatementSyntax) If node.ModuleStatement IsNot newModuleStatement Then anyChanges = True Dim newInherits = VisitList(node.[Inherits]) If node._inherits IsNot newInherits.Node Then anyChanges = True Dim newImplements = VisitList(node.[Implements]) If node._implements IsNot newImplements.Node Then anyChanges = True Dim newMembers = VisitList(node.Members) If node._members IsNot newMembers.Node Then anyChanges = True Dim newEndModuleStatement = DirectCast(Visit(node.EndModuleStatement), EndBlockStatementSyntax) If node.EndModuleStatement IsNot newEndModuleStatement Then anyChanges = True If anyChanges Then Return New ModuleBlockSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newModuleStatement, newInherits.Node, newImplements.Node, newMembers.Node, newEndModuleStatement) Else Return node End If End Function Public Overrides Function VisitStructureBlock(ByVal node As StructureBlockSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newStructureStatement = DirectCast(Visit(node.StructureStatement), StructureStatementSyntax) If node.StructureStatement IsNot newStructureStatement Then anyChanges = True Dim newInherits = VisitList(node.[Inherits]) If node._inherits IsNot newInherits.Node Then anyChanges = True Dim newImplements = VisitList(node.[Implements]) If node._implements IsNot newImplements.Node Then anyChanges = True Dim newMembers = VisitList(node.Members) If node._members IsNot newMembers.Node Then anyChanges = True Dim newEndStructureStatement = DirectCast(Visit(node.EndStructureStatement), EndBlockStatementSyntax) If node.EndStructureStatement IsNot newEndStructureStatement Then anyChanges = True If anyChanges Then Return New StructureBlockSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newStructureStatement, newInherits.Node, newImplements.Node, newMembers.Node, newEndStructureStatement) Else Return node End If End Function Public Overrides Function VisitInterfaceBlock(ByVal node As InterfaceBlockSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newInterfaceStatement = DirectCast(Visit(node.InterfaceStatement), InterfaceStatementSyntax) If node.InterfaceStatement IsNot newInterfaceStatement Then anyChanges = True Dim newInherits = VisitList(node.[Inherits]) If node._inherits IsNot newInherits.Node Then anyChanges = True Dim newImplements = VisitList(node.[Implements]) If node._implements IsNot newImplements.Node Then anyChanges = True Dim newMembers = VisitList(node.Members) If node._members IsNot newMembers.Node Then anyChanges = True Dim newEndInterfaceStatement = DirectCast(Visit(node.EndInterfaceStatement), EndBlockStatementSyntax) If node.EndInterfaceStatement IsNot newEndInterfaceStatement Then anyChanges = True If anyChanges Then Return New InterfaceBlockSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newInterfaceStatement, newInherits.Node, newImplements.Node, newMembers.Node, newEndInterfaceStatement) Else Return node End If End Function Public Overrides Function VisitClassBlock(ByVal node As ClassBlockSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newClassStatement = DirectCast(Visit(node.ClassStatement), ClassStatementSyntax) If node.ClassStatement IsNot newClassStatement Then anyChanges = True Dim newInherits = VisitList(node.[Inherits]) If node._inherits IsNot newInherits.Node Then anyChanges = True Dim newImplements = VisitList(node.[Implements]) If node._implements IsNot newImplements.Node Then anyChanges = True Dim newMembers = VisitList(node.Members) If node._members IsNot newMembers.Node Then anyChanges = True Dim newEndClassStatement = DirectCast(Visit(node.EndClassStatement), EndBlockStatementSyntax) If node.EndClassStatement IsNot newEndClassStatement Then anyChanges = True If anyChanges Then Return New ClassBlockSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newClassStatement, newInherits.Node, newImplements.Node, newMembers.Node, newEndClassStatement) Else Return node End If End Function Public Overrides Function VisitEnumBlock(ByVal node As EnumBlockSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newEnumStatement = DirectCast(Visit(node.EnumStatement), EnumStatementSyntax) If node.EnumStatement IsNot newEnumStatement Then anyChanges = True Dim newMembers = VisitList(node.Members) If node._members IsNot newMembers.Node Then anyChanges = True Dim newEndEnumStatement = DirectCast(Visit(node.EndEnumStatement), EndBlockStatementSyntax) If node.EndEnumStatement IsNot newEndEnumStatement Then anyChanges = True If anyChanges Then Return New EnumBlockSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newEnumStatement, newMembers.Node, newEndEnumStatement) Else Return node End If End Function Public Overrides Function VisitInheritsStatement(ByVal node As InheritsStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newInheritsKeyword = DirectCast(VisitToken(node.InheritsKeyword).Node, InternalSyntax.KeywordSyntax) If node.InheritsKeyword.Node IsNot newInheritsKeyword Then anyChanges = True Dim newTypes = VisitList(node.Types) If node._types IsNot newTypes.Node Then anyChanges = True If anyChanges Then Return New InheritsStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newInheritsKeyword, newTypes.Node) Else Return node End If End Function Public Overrides Function VisitImplementsStatement(ByVal node As ImplementsStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newImplementsKeyword = DirectCast(VisitToken(node.ImplementsKeyword).Node, InternalSyntax.KeywordSyntax) If node.ImplementsKeyword.Node IsNot newImplementsKeyword Then anyChanges = True Dim newTypes = VisitList(node.Types) If node._types IsNot newTypes.Node Then anyChanges = True If anyChanges Then Return New ImplementsStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newImplementsKeyword, newTypes.Node) Else Return node End If End Function Public Overrides Function VisitModuleStatement(ByVal node As ModuleStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newAttributeLists = VisitList(node.AttributeLists) If node._attributeLists IsNot newAttributeLists.Node Then anyChanges = True Dim newModifiers = VisitList(node.Modifiers) If node.Modifiers.Node IsNot newModifiers.Node Then anyChanges = True Dim newModuleKeyword = DirectCast(VisitToken(node.ModuleKeyword).Node, InternalSyntax.KeywordSyntax) If node.ModuleKeyword.Node IsNot newModuleKeyword Then anyChanges = True Dim newIdentifier = DirectCast(VisitToken(node.Identifier).Node, InternalSyntax.IdentifierTokenSyntax) If node.Identifier.Node IsNot newIdentifier Then anyChanges = True Dim newTypeParameterList = DirectCast(Visit(node.TypeParameterList), TypeParameterListSyntax) If node.TypeParameterList IsNot newTypeParameterList Then anyChanges = True If anyChanges Then Return New ModuleStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newAttributeLists.Node, newModifiers.Node, newModuleKeyword, newIdentifier, newTypeParameterList) Else Return node End If End Function Public Overrides Function VisitStructureStatement(ByVal node As StructureStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newAttributeLists = VisitList(node.AttributeLists) If node._attributeLists IsNot newAttributeLists.Node Then anyChanges = True Dim newModifiers = VisitList(node.Modifiers) If node.Modifiers.Node IsNot newModifiers.Node Then anyChanges = True Dim newStructureKeyword = DirectCast(VisitToken(node.StructureKeyword).Node, InternalSyntax.KeywordSyntax) If node.StructureKeyword.Node IsNot newStructureKeyword Then anyChanges = True Dim newIdentifier = DirectCast(VisitToken(node.Identifier).Node, InternalSyntax.IdentifierTokenSyntax) If node.Identifier.Node IsNot newIdentifier Then anyChanges = True Dim newTypeParameterList = DirectCast(Visit(node.TypeParameterList), TypeParameterListSyntax) If node.TypeParameterList IsNot newTypeParameterList Then anyChanges = True If anyChanges Then Return New StructureStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newAttributeLists.Node, newModifiers.Node, newStructureKeyword, newIdentifier, newTypeParameterList) Else Return node End If End Function Public Overrides Function VisitInterfaceStatement(ByVal node As InterfaceStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newAttributeLists = VisitList(node.AttributeLists) If node._attributeLists IsNot newAttributeLists.Node Then anyChanges = True Dim newModifiers = VisitList(node.Modifiers) If node.Modifiers.Node IsNot newModifiers.Node Then anyChanges = True Dim newInterfaceKeyword = DirectCast(VisitToken(node.InterfaceKeyword).Node, InternalSyntax.KeywordSyntax) If node.InterfaceKeyword.Node IsNot newInterfaceKeyword Then anyChanges = True Dim newIdentifier = DirectCast(VisitToken(node.Identifier).Node, InternalSyntax.IdentifierTokenSyntax) If node.Identifier.Node IsNot newIdentifier Then anyChanges = True Dim newTypeParameterList = DirectCast(Visit(node.TypeParameterList), TypeParameterListSyntax) If node.TypeParameterList IsNot newTypeParameterList Then anyChanges = True If anyChanges Then Return New InterfaceStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newAttributeLists.Node, newModifiers.Node, newInterfaceKeyword, newIdentifier, newTypeParameterList) Else Return node End If End Function Public Overrides Function VisitClassStatement(ByVal node As ClassStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newAttributeLists = VisitList(node.AttributeLists) If node._attributeLists IsNot newAttributeLists.Node Then anyChanges = True Dim newModifiers = VisitList(node.Modifiers) If node.Modifiers.Node IsNot newModifiers.Node Then anyChanges = True Dim newClassKeyword = DirectCast(VisitToken(node.ClassKeyword).Node, InternalSyntax.KeywordSyntax) If node.ClassKeyword.Node IsNot newClassKeyword Then anyChanges = True Dim newIdentifier = DirectCast(VisitToken(node.Identifier).Node, InternalSyntax.IdentifierTokenSyntax) If node.Identifier.Node IsNot newIdentifier Then anyChanges = True Dim newTypeParameterList = DirectCast(Visit(node.TypeParameterList), TypeParameterListSyntax) If node.TypeParameterList IsNot newTypeParameterList Then anyChanges = True If anyChanges Then Return New ClassStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newAttributeLists.Node, newModifiers.Node, newClassKeyword, newIdentifier, newTypeParameterList) Else Return node End If End Function Public Overrides Function VisitEnumStatement(ByVal node As EnumStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newAttributeLists = VisitList(node.AttributeLists) If node._attributeLists IsNot newAttributeLists.Node Then anyChanges = True Dim newModifiers = VisitList(node.Modifiers) If node.Modifiers.Node IsNot newModifiers.Node Then anyChanges = True Dim newEnumKeyword = DirectCast(VisitToken(node.EnumKeyword).Node, InternalSyntax.KeywordSyntax) If node.EnumKeyword.Node IsNot newEnumKeyword Then anyChanges = True Dim newIdentifier = DirectCast(VisitToken(node.Identifier).Node, InternalSyntax.IdentifierTokenSyntax) If node.Identifier.Node IsNot newIdentifier Then anyChanges = True Dim newUnderlyingType = DirectCast(Visit(node.UnderlyingType), AsClauseSyntax) If node.UnderlyingType IsNot newUnderlyingType Then anyChanges = True If anyChanges Then Return New EnumStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newAttributeLists.Node, newModifiers.Node, newEnumKeyword, newIdentifier, newUnderlyingType) Else Return node End If End Function Public Overrides Function VisitTypeParameterList(ByVal node As TypeParameterListSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newOpenParenToken = DirectCast(VisitToken(node.OpenParenToken).Node, InternalSyntax.PunctuationSyntax) If node.OpenParenToken.Node IsNot newOpenParenToken Then anyChanges = True Dim newOfKeyword = DirectCast(VisitToken(node.OfKeyword).Node, InternalSyntax.KeywordSyntax) If node.OfKeyword.Node IsNot newOfKeyword Then anyChanges = True Dim newParameters = VisitList(node.Parameters) If node._parameters IsNot newParameters.Node Then anyChanges = True Dim newCloseParenToken = DirectCast(VisitToken(node.CloseParenToken).Node, InternalSyntax.PunctuationSyntax) If node.CloseParenToken.Node IsNot newCloseParenToken Then anyChanges = True If anyChanges Then Return New TypeParameterListSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newOpenParenToken, newOfKeyword, newParameters.Node, newCloseParenToken) Else Return node End If End Function Public Overrides Function VisitTypeParameter(ByVal node As TypeParameterSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newVarianceKeyword = DirectCast(VisitToken(node.VarianceKeyword).Node, InternalSyntax.KeywordSyntax) If node.VarianceKeyword.Node IsNot newVarianceKeyword Then anyChanges = True Dim newIdentifier = DirectCast(VisitToken(node.Identifier).Node, InternalSyntax.IdentifierTokenSyntax) If node.Identifier.Node IsNot newIdentifier Then anyChanges = True Dim newTypeParameterConstraintClause = DirectCast(Visit(node.TypeParameterConstraintClause), TypeParameterConstraintClauseSyntax) If node.TypeParameterConstraintClause IsNot newTypeParameterConstraintClause Then anyChanges = True If anyChanges Then Return New TypeParameterSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newVarianceKeyword, newIdentifier, newTypeParameterConstraintClause) Else Return node End If End Function Public Overrides Function VisitTypeParameterSingleConstraintClause(ByVal node As TypeParameterSingleConstraintClauseSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newAsKeyword = DirectCast(VisitToken(node.AsKeyword).Node, InternalSyntax.KeywordSyntax) If node.AsKeyword.Node IsNot newAsKeyword Then anyChanges = True Dim newConstraint = DirectCast(Visit(node.Constraint), ConstraintSyntax) If node.Constraint IsNot newConstraint Then anyChanges = True If anyChanges Then Return New TypeParameterSingleConstraintClauseSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newAsKeyword, newConstraint) Else Return node End If End Function Public Overrides Function VisitTypeParameterMultipleConstraintClause(ByVal node As TypeParameterMultipleConstraintClauseSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newAsKeyword = DirectCast(VisitToken(node.AsKeyword).Node, InternalSyntax.KeywordSyntax) If node.AsKeyword.Node IsNot newAsKeyword Then anyChanges = True Dim newOpenBraceToken = DirectCast(VisitToken(node.OpenBraceToken).Node, InternalSyntax.PunctuationSyntax) If node.OpenBraceToken.Node IsNot newOpenBraceToken Then anyChanges = True Dim newConstraints = VisitList(node.Constraints) If node._constraints IsNot newConstraints.Node Then anyChanges = True Dim newCloseBraceToken = DirectCast(VisitToken(node.CloseBraceToken).Node, InternalSyntax.PunctuationSyntax) If node.CloseBraceToken.Node IsNot newCloseBraceToken Then anyChanges = True If anyChanges Then Return New TypeParameterMultipleConstraintClauseSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newAsKeyword, newOpenBraceToken, newConstraints.Node, newCloseBraceToken) Else Return node End If End Function Public Overrides Function VisitSpecialConstraint(ByVal node As SpecialConstraintSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newConstraintKeyword = DirectCast(VisitToken(node.ConstraintKeyword).Node, InternalSyntax.KeywordSyntax) If node.ConstraintKeyword.Node IsNot newConstraintKeyword Then anyChanges = True If anyChanges Then Return New SpecialConstraintSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newConstraintKeyword) Else Return node End If End Function Public Overrides Function VisitTypeConstraint(ByVal node As TypeConstraintSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newType = DirectCast(Visit(node.Type), TypeSyntax) If node.Type IsNot newType Then anyChanges = True If anyChanges Then Return New TypeConstraintSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newType) Else Return node End If End Function Public Overrides Function VisitEnumMemberDeclaration(ByVal node As EnumMemberDeclarationSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newAttributeLists = VisitList(node.AttributeLists) If node._attributeLists IsNot newAttributeLists.Node Then anyChanges = True Dim newIdentifier = DirectCast(VisitToken(node.Identifier).Node, InternalSyntax.IdentifierTokenSyntax) If node.Identifier.Node IsNot newIdentifier Then anyChanges = True Dim newInitializer = DirectCast(Visit(node.Initializer), EqualsValueSyntax) If node.Initializer IsNot newInitializer Then anyChanges = True If anyChanges Then Return New EnumMemberDeclarationSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newAttributeLists.Node, newIdentifier, newInitializer) Else Return node End If End Function Public Overrides Function VisitMethodBlock(ByVal node As MethodBlockSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newSubOrFunctionStatement = DirectCast(Visit(node.SubOrFunctionStatement), MethodStatementSyntax) If node.SubOrFunctionStatement IsNot newSubOrFunctionStatement Then anyChanges = True Dim newStatements = VisitList(node.Statements) If node._statements IsNot newStatements.Node Then anyChanges = True Dim newEndSubOrFunctionStatement = DirectCast(Visit(node.EndSubOrFunctionStatement), EndBlockStatementSyntax) If node.EndSubOrFunctionStatement IsNot newEndSubOrFunctionStatement Then anyChanges = True If anyChanges Then Return New MethodBlockSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newSubOrFunctionStatement, newStatements.Node, newEndSubOrFunctionStatement) Else Return node End If End Function Public Overrides Function VisitConstructorBlock(ByVal node As ConstructorBlockSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newSubNewStatement = DirectCast(Visit(node.SubNewStatement), SubNewStatementSyntax) If node.SubNewStatement IsNot newSubNewStatement Then anyChanges = True Dim newStatements = VisitList(node.Statements) If node._statements IsNot newStatements.Node Then anyChanges = True Dim newEndSubStatement = DirectCast(Visit(node.EndSubStatement), EndBlockStatementSyntax) If node.EndSubStatement IsNot newEndSubStatement Then anyChanges = True If anyChanges Then Return New ConstructorBlockSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newSubNewStatement, newStatements.Node, newEndSubStatement) Else Return node End If End Function Public Overrides Function VisitOperatorBlock(ByVal node As OperatorBlockSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newOperatorStatement = DirectCast(Visit(node.OperatorStatement), OperatorStatementSyntax) If node.OperatorStatement IsNot newOperatorStatement Then anyChanges = True Dim newStatements = VisitList(node.Statements) If node._statements IsNot newStatements.Node Then anyChanges = True Dim newEndOperatorStatement = DirectCast(Visit(node.EndOperatorStatement), EndBlockStatementSyntax) If node.EndOperatorStatement IsNot newEndOperatorStatement Then anyChanges = True If anyChanges Then Return New OperatorBlockSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newOperatorStatement, newStatements.Node, newEndOperatorStatement) Else Return node End If End Function Public Overrides Function VisitAccessorBlock(ByVal node As AccessorBlockSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newAccessorStatement = DirectCast(Visit(node.AccessorStatement), AccessorStatementSyntax) If node.AccessorStatement IsNot newAccessorStatement Then anyChanges = True Dim newStatements = VisitList(node.Statements) If node._statements IsNot newStatements.Node Then anyChanges = True Dim newEndAccessorStatement = DirectCast(Visit(node.EndAccessorStatement), EndBlockStatementSyntax) If node.EndAccessorStatement IsNot newEndAccessorStatement Then anyChanges = True If anyChanges Then Return New AccessorBlockSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newAccessorStatement, newStatements.Node, newEndAccessorStatement) Else Return node End If End Function Public Overrides Function VisitPropertyBlock(ByVal node As PropertyBlockSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newPropertyStatement = DirectCast(Visit(node.PropertyStatement), PropertyStatementSyntax) If node.PropertyStatement IsNot newPropertyStatement Then anyChanges = True Dim newAccessors = VisitList(node.Accessors) If node._accessors IsNot newAccessors.Node Then anyChanges = True Dim newEndPropertyStatement = DirectCast(Visit(node.EndPropertyStatement), EndBlockStatementSyntax) If node.EndPropertyStatement IsNot newEndPropertyStatement Then anyChanges = True If anyChanges Then Return New PropertyBlockSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newPropertyStatement, newAccessors.Node, newEndPropertyStatement) Else Return node End If End Function Public Overrides Function VisitEventBlock(ByVal node As EventBlockSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newEventStatement = DirectCast(Visit(node.EventStatement), EventStatementSyntax) If node.EventStatement IsNot newEventStatement Then anyChanges = True Dim newAccessors = VisitList(node.Accessors) If node._accessors IsNot newAccessors.Node Then anyChanges = True Dim newEndEventStatement = DirectCast(Visit(node.EndEventStatement), EndBlockStatementSyntax) If node.EndEventStatement IsNot newEndEventStatement Then anyChanges = True If anyChanges Then Return New EventBlockSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newEventStatement, newAccessors.Node, newEndEventStatement) Else Return node End If End Function Public Overrides Function VisitParameterList(ByVal node As ParameterListSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newOpenParenToken = DirectCast(VisitToken(node.OpenParenToken).Node, InternalSyntax.PunctuationSyntax) If node.OpenParenToken.Node IsNot newOpenParenToken Then anyChanges = True Dim newParameters = VisitList(node.Parameters) If node._parameters IsNot newParameters.Node Then anyChanges = True Dim newCloseParenToken = DirectCast(VisitToken(node.CloseParenToken).Node, InternalSyntax.PunctuationSyntax) If node.CloseParenToken.Node IsNot newCloseParenToken Then anyChanges = True If anyChanges Then Return New ParameterListSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newOpenParenToken, newParameters.Node, newCloseParenToken) Else Return node End If End Function Public Overrides Function VisitMethodStatement(ByVal node As MethodStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newAttributeLists = VisitList(node.AttributeLists) If node._attributeLists IsNot newAttributeLists.Node Then anyChanges = True Dim newModifiers = VisitList(node.Modifiers) If node.Modifiers.Node IsNot newModifiers.Node Then anyChanges = True Dim newSubOrFunctionKeyword = DirectCast(VisitToken(node.SubOrFunctionKeyword).Node, InternalSyntax.KeywordSyntax) If node.SubOrFunctionKeyword.Node IsNot newSubOrFunctionKeyword Then anyChanges = True Dim newIdentifier = DirectCast(VisitToken(node.Identifier).Node, InternalSyntax.IdentifierTokenSyntax) If node.Identifier.Node IsNot newIdentifier Then anyChanges = True Dim newTypeParameterList = DirectCast(Visit(node.TypeParameterList), TypeParameterListSyntax) If node.TypeParameterList IsNot newTypeParameterList Then anyChanges = True Dim newParameterList = DirectCast(Visit(node.ParameterList), ParameterListSyntax) If node.ParameterList IsNot newParameterList Then anyChanges = True Dim newAsClause = DirectCast(Visit(node.AsClause), SimpleAsClauseSyntax) If node.AsClause IsNot newAsClause Then anyChanges = True Dim newHandlesClause = DirectCast(Visit(node.HandlesClause), HandlesClauseSyntax) If node.HandlesClause IsNot newHandlesClause Then anyChanges = True Dim newImplementsClause = DirectCast(Visit(node.ImplementsClause), ImplementsClauseSyntax) If node.ImplementsClause IsNot newImplementsClause Then anyChanges = True If anyChanges Then Return New MethodStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newAttributeLists.Node, newModifiers.Node, newSubOrFunctionKeyword, newIdentifier, newTypeParameterList, newParameterList, newAsClause, newHandlesClause, newImplementsClause) Else Return node End If End Function Public Overrides Function VisitSubNewStatement(ByVal node As SubNewStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newAttributeLists = VisitList(node.AttributeLists) If node._attributeLists IsNot newAttributeLists.Node Then anyChanges = True Dim newModifiers = VisitList(node.Modifiers) If node.Modifiers.Node IsNot newModifiers.Node Then anyChanges = True Dim newSubKeyword = DirectCast(VisitToken(node.SubKeyword).Node, InternalSyntax.KeywordSyntax) If node.SubKeyword.Node IsNot newSubKeyword Then anyChanges = True Dim newNewKeyword = DirectCast(VisitToken(node.NewKeyword).Node, InternalSyntax.KeywordSyntax) If node.NewKeyword.Node IsNot newNewKeyword Then anyChanges = True Dim newParameterList = DirectCast(Visit(node.ParameterList), ParameterListSyntax) If node.ParameterList IsNot newParameterList Then anyChanges = True If anyChanges Then Return New SubNewStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newAttributeLists.Node, newModifiers.Node, newSubKeyword, newNewKeyword, newParameterList) Else Return node End If End Function Public Overrides Function VisitDeclareStatement(ByVal node As DeclareStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newAttributeLists = VisitList(node.AttributeLists) If node._attributeLists IsNot newAttributeLists.Node Then anyChanges = True Dim newModifiers = VisitList(node.Modifiers) If node.Modifiers.Node IsNot newModifiers.Node Then anyChanges = True Dim newDeclareKeyword = DirectCast(VisitToken(node.DeclareKeyword).Node, InternalSyntax.KeywordSyntax) If node.DeclareKeyword.Node IsNot newDeclareKeyword Then anyChanges = True Dim newCharsetKeyword = DirectCast(VisitToken(node.CharsetKeyword).Node, InternalSyntax.KeywordSyntax) If node.CharsetKeyword.Node IsNot newCharsetKeyword Then anyChanges = True Dim newSubOrFunctionKeyword = DirectCast(VisitToken(node.SubOrFunctionKeyword).Node, InternalSyntax.KeywordSyntax) If node.SubOrFunctionKeyword.Node IsNot newSubOrFunctionKeyword Then anyChanges = True Dim newIdentifier = DirectCast(VisitToken(node.Identifier).Node, InternalSyntax.IdentifierTokenSyntax) If node.Identifier.Node IsNot newIdentifier Then anyChanges = True Dim newLibKeyword = DirectCast(VisitToken(node.LibKeyword).Node, InternalSyntax.KeywordSyntax) If node.LibKeyword.Node IsNot newLibKeyword Then anyChanges = True Dim newLibraryName = DirectCast(Visit(node.LibraryName), LiteralExpressionSyntax) If node.LibraryName IsNot newLibraryName Then anyChanges = True Dim newAliasKeyword = DirectCast(VisitToken(node.AliasKeyword).Node, InternalSyntax.KeywordSyntax) If node.AliasKeyword.Node IsNot newAliasKeyword Then anyChanges = True Dim newAliasName = DirectCast(Visit(node.AliasName), LiteralExpressionSyntax) If node.AliasName IsNot newAliasName Then anyChanges = True Dim newParameterList = DirectCast(Visit(node.ParameterList), ParameterListSyntax) If node.ParameterList IsNot newParameterList Then anyChanges = True Dim newAsClause = DirectCast(Visit(node.AsClause), SimpleAsClauseSyntax) If node.AsClause IsNot newAsClause Then anyChanges = True If anyChanges Then Return New DeclareStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newAttributeLists.Node, newModifiers.Node, newDeclareKeyword, newCharsetKeyword, newSubOrFunctionKeyword, newIdentifier, newLibKeyword, newLibraryName, newAliasKeyword, newAliasName, newParameterList, newAsClause) Else Return node End If End Function Public Overrides Function VisitDelegateStatement(ByVal node As DelegateStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newAttributeLists = VisitList(node.AttributeLists) If node._attributeLists IsNot newAttributeLists.Node Then anyChanges = True Dim newModifiers = VisitList(node.Modifiers) If node.Modifiers.Node IsNot newModifiers.Node Then anyChanges = True Dim newDelegateKeyword = DirectCast(VisitToken(node.DelegateKeyword).Node, InternalSyntax.KeywordSyntax) If node.DelegateKeyword.Node IsNot newDelegateKeyword Then anyChanges = True Dim newSubOrFunctionKeyword = DirectCast(VisitToken(node.SubOrFunctionKeyword).Node, InternalSyntax.KeywordSyntax) If node.SubOrFunctionKeyword.Node IsNot newSubOrFunctionKeyword Then anyChanges = True Dim newIdentifier = DirectCast(VisitToken(node.Identifier).Node, InternalSyntax.IdentifierTokenSyntax) If node.Identifier.Node IsNot newIdentifier Then anyChanges = True Dim newTypeParameterList = DirectCast(Visit(node.TypeParameterList), TypeParameterListSyntax) If node.TypeParameterList IsNot newTypeParameterList Then anyChanges = True Dim newParameterList = DirectCast(Visit(node.ParameterList), ParameterListSyntax) If node.ParameterList IsNot newParameterList Then anyChanges = True Dim newAsClause = DirectCast(Visit(node.AsClause), SimpleAsClauseSyntax) If node.AsClause IsNot newAsClause Then anyChanges = True If anyChanges Then Return New DelegateStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newAttributeLists.Node, newModifiers.Node, newDelegateKeyword, newSubOrFunctionKeyword, newIdentifier, newTypeParameterList, newParameterList, newAsClause) Else Return node End If End Function Public Overrides Function VisitEventStatement(ByVal node As EventStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newAttributeLists = VisitList(node.AttributeLists) If node._attributeLists IsNot newAttributeLists.Node Then anyChanges = True Dim newModifiers = VisitList(node.Modifiers) If node.Modifiers.Node IsNot newModifiers.Node Then anyChanges = True Dim newCustomKeyword = DirectCast(VisitToken(node.CustomKeyword).Node, InternalSyntax.KeywordSyntax) If node.CustomKeyword.Node IsNot newCustomKeyword Then anyChanges = True Dim newEventKeyword = DirectCast(VisitToken(node.EventKeyword).Node, InternalSyntax.KeywordSyntax) If node.EventKeyword.Node IsNot newEventKeyword Then anyChanges = True Dim newIdentifier = DirectCast(VisitToken(node.Identifier).Node, InternalSyntax.IdentifierTokenSyntax) If node.Identifier.Node IsNot newIdentifier Then anyChanges = True Dim newParameterList = DirectCast(Visit(node.ParameterList), ParameterListSyntax) If node.ParameterList IsNot newParameterList Then anyChanges = True Dim newAsClause = DirectCast(Visit(node.AsClause), SimpleAsClauseSyntax) If node.AsClause IsNot newAsClause Then anyChanges = True Dim newImplementsClause = DirectCast(Visit(node.ImplementsClause), ImplementsClauseSyntax) If node.ImplementsClause IsNot newImplementsClause Then anyChanges = True If anyChanges Then Return New EventStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newAttributeLists.Node, newModifiers.Node, newCustomKeyword, newEventKeyword, newIdentifier, newParameterList, newAsClause, newImplementsClause) Else Return node End If End Function Public Overrides Function VisitOperatorStatement(ByVal node As OperatorStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newAttributeLists = VisitList(node.AttributeLists) If node._attributeLists IsNot newAttributeLists.Node Then anyChanges = True Dim newModifiers = VisitList(node.Modifiers) If node.Modifiers.Node IsNot newModifiers.Node Then anyChanges = True Dim newOperatorKeyword = DirectCast(VisitToken(node.OperatorKeyword).Node, InternalSyntax.KeywordSyntax) If node.OperatorKeyword.Node IsNot newOperatorKeyword Then anyChanges = True Dim newOperatorToken = DirectCast(VisitToken(node.OperatorToken).Node, InternalSyntax.SyntaxToken) If node.OperatorToken.Node IsNot newOperatorToken Then anyChanges = True Dim newParameterList = DirectCast(Visit(node.ParameterList), ParameterListSyntax) If node.ParameterList IsNot newParameterList Then anyChanges = True Dim newAsClause = DirectCast(Visit(node.AsClause), SimpleAsClauseSyntax) If node.AsClause IsNot newAsClause Then anyChanges = True If anyChanges Then Return New OperatorStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newAttributeLists.Node, newModifiers.Node, newOperatorKeyword, newOperatorToken, newParameterList, newAsClause) Else Return node End If End Function Public Overrides Function VisitPropertyStatement(ByVal node As PropertyStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newAttributeLists = VisitList(node.AttributeLists) If node._attributeLists IsNot newAttributeLists.Node Then anyChanges = True Dim newModifiers = VisitList(node.Modifiers) If node.Modifiers.Node IsNot newModifiers.Node Then anyChanges = True Dim newPropertyKeyword = DirectCast(VisitToken(node.PropertyKeyword).Node, InternalSyntax.KeywordSyntax) If node.PropertyKeyword.Node IsNot newPropertyKeyword Then anyChanges = True Dim newIdentifier = DirectCast(VisitToken(node.Identifier).Node, InternalSyntax.IdentifierTokenSyntax) If node.Identifier.Node IsNot newIdentifier Then anyChanges = True Dim newParameterList = DirectCast(Visit(node.ParameterList), ParameterListSyntax) If node.ParameterList IsNot newParameterList Then anyChanges = True Dim newAsClause = DirectCast(Visit(node.AsClause), AsClauseSyntax) If node.AsClause IsNot newAsClause Then anyChanges = True Dim newInitializer = DirectCast(Visit(node.Initializer), EqualsValueSyntax) If node.Initializer IsNot newInitializer Then anyChanges = True Dim newImplementsClause = DirectCast(Visit(node.ImplementsClause), ImplementsClauseSyntax) If node.ImplementsClause IsNot newImplementsClause Then anyChanges = True If anyChanges Then Return New PropertyStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newAttributeLists.Node, newModifiers.Node, newPropertyKeyword, newIdentifier, newParameterList, newAsClause, newInitializer, newImplementsClause) Else Return node End If End Function Public Overrides Function VisitAccessorStatement(ByVal node As AccessorStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newAttributeLists = VisitList(node.AttributeLists) If node._attributeLists IsNot newAttributeLists.Node Then anyChanges = True Dim newModifiers = VisitList(node.Modifiers) If node.Modifiers.Node IsNot newModifiers.Node Then anyChanges = True Dim newAccessorKeyword = DirectCast(VisitToken(node.AccessorKeyword).Node, InternalSyntax.KeywordSyntax) If node.AccessorKeyword.Node IsNot newAccessorKeyword Then anyChanges = True Dim newParameterList = DirectCast(Visit(node.ParameterList), ParameterListSyntax) If node.ParameterList IsNot newParameterList Then anyChanges = True If anyChanges Then Return New AccessorStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newAttributeLists.Node, newModifiers.Node, newAccessorKeyword, newParameterList) Else Return node End If End Function Public Overrides Function VisitImplementsClause(ByVal node As ImplementsClauseSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newImplementsKeyword = DirectCast(VisitToken(node.ImplementsKeyword).Node, InternalSyntax.KeywordSyntax) If node.ImplementsKeyword.Node IsNot newImplementsKeyword Then anyChanges = True Dim newInterfaceMembers = VisitList(node.InterfaceMembers) If node._interfaceMembers IsNot newInterfaceMembers.Node Then anyChanges = True If anyChanges Then Return New ImplementsClauseSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newImplementsKeyword, newInterfaceMembers.Node) Else Return node End If End Function Public Overrides Function VisitHandlesClause(ByVal node As HandlesClauseSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newHandlesKeyword = DirectCast(VisitToken(node.HandlesKeyword).Node, InternalSyntax.KeywordSyntax) If node.HandlesKeyword.Node IsNot newHandlesKeyword Then anyChanges = True Dim newEvents = VisitList(node.Events) If node._events IsNot newEvents.Node Then anyChanges = True If anyChanges Then Return New HandlesClauseSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newHandlesKeyword, newEvents.Node) Else Return node End If End Function Public Overrides Function VisitKeywordEventContainer(ByVal node As KeywordEventContainerSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newKeyword = DirectCast(VisitToken(node.Keyword).Node, InternalSyntax.KeywordSyntax) If node.Keyword.Node IsNot newKeyword Then anyChanges = True If anyChanges Then Return New KeywordEventContainerSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newKeyword) Else Return node End If End Function Public Overrides Function VisitWithEventsEventContainer(ByVal node As WithEventsEventContainerSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newIdentifier = DirectCast(VisitToken(node.Identifier).Node, InternalSyntax.IdentifierTokenSyntax) If node.Identifier.Node IsNot newIdentifier Then anyChanges = True If anyChanges Then Return New WithEventsEventContainerSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newIdentifier) Else Return node End If End Function Public Overrides Function VisitWithEventsPropertyEventContainer(ByVal node As WithEventsPropertyEventContainerSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newWithEventsContainer = DirectCast(Visit(node.WithEventsContainer), WithEventsEventContainerSyntax) If node.WithEventsContainer IsNot newWithEventsContainer Then anyChanges = True Dim newDotToken = DirectCast(VisitToken(node.DotToken).Node, InternalSyntax.PunctuationSyntax) If node.DotToken.Node IsNot newDotToken Then anyChanges = True Dim newProperty = DirectCast(Visit(node.[Property]), IdentifierNameSyntax) If node.[Property] IsNot newProperty Then anyChanges = True If anyChanges Then Return New WithEventsPropertyEventContainerSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newWithEventsContainer, newDotToken, newProperty) Else Return node End If End Function Public Overrides Function VisitHandlesClauseItem(ByVal node As HandlesClauseItemSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newEventContainer = DirectCast(Visit(node.EventContainer), EventContainerSyntax) If node.EventContainer IsNot newEventContainer Then anyChanges = True Dim newDotToken = DirectCast(VisitToken(node.DotToken).Node, InternalSyntax.PunctuationSyntax) If node.DotToken.Node IsNot newDotToken Then anyChanges = True Dim newEventMember = DirectCast(Visit(node.EventMember), IdentifierNameSyntax) If node.EventMember IsNot newEventMember Then anyChanges = True If anyChanges Then Return New HandlesClauseItemSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newEventContainer, newDotToken, newEventMember) Else Return node End If End Function Public Overrides Function VisitIncompleteMember(ByVal node As IncompleteMemberSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newAttributeLists = VisitList(node.AttributeLists) If node._attributeLists IsNot newAttributeLists.Node Then anyChanges = True Dim newModifiers = VisitList(node.Modifiers) If node.Modifiers.Node IsNot newModifiers.Node Then anyChanges = True Dim newMissingIdentifier = DirectCast(VisitToken(node.MissingIdentifier).Node, InternalSyntax.IdentifierTokenSyntax) If node.MissingIdentifier.Node IsNot newMissingIdentifier Then anyChanges = True If anyChanges Then Return New IncompleteMemberSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newAttributeLists.Node, newModifiers.Node, newMissingIdentifier) Else Return node End If End Function Public Overrides Function VisitFieldDeclaration(ByVal node As FieldDeclarationSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newAttributeLists = VisitList(node.AttributeLists) If node._attributeLists IsNot newAttributeLists.Node Then anyChanges = True Dim newModifiers = VisitList(node.Modifiers) If node.Modifiers.Node IsNot newModifiers.Node Then anyChanges = True Dim newDeclarators = VisitList(node.Declarators) If node._declarators IsNot newDeclarators.Node Then anyChanges = True If anyChanges Then Return New FieldDeclarationSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newAttributeLists.Node, newModifiers.Node, newDeclarators.Node) Else Return node End If End Function Public Overrides Function VisitVariableDeclarator(ByVal node As VariableDeclaratorSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newNames = VisitList(node.Names) If node._names IsNot newNames.Node Then anyChanges = True Dim newAsClause = DirectCast(Visit(node.AsClause), AsClauseSyntax) If node.AsClause IsNot newAsClause Then anyChanges = True Dim newInitializer = DirectCast(Visit(node.Initializer), EqualsValueSyntax) If node.Initializer IsNot newInitializer Then anyChanges = True If anyChanges Then Return New VariableDeclaratorSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newNames.Node, newAsClause, newInitializer) Else Return node End If End Function Public Overrides Function VisitSimpleAsClause(ByVal node As SimpleAsClauseSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newAsKeyword = DirectCast(VisitToken(node.AsKeyword).Node, InternalSyntax.KeywordSyntax) If node.AsKeyword.Node IsNot newAsKeyword Then anyChanges = True Dim newAttributeLists = VisitList(node.AttributeLists) If node._attributeLists IsNot newAttributeLists.Node Then anyChanges = True Dim newType = DirectCast(Visit(node.Type), TypeSyntax) If node.Type IsNot newType Then anyChanges = True If anyChanges Then Return New SimpleAsClauseSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newAsKeyword, newAttributeLists.Node, newType) Else Return node End If End Function Public Overrides Function VisitAsNewClause(ByVal node As AsNewClauseSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newAsKeyword = DirectCast(VisitToken(node.AsKeyword).Node, InternalSyntax.KeywordSyntax) If node.AsKeyword.Node IsNot newAsKeyword Then anyChanges = True Dim newNewExpression = DirectCast(Visit(node.NewExpression), NewExpressionSyntax) If node.NewExpression IsNot newNewExpression Then anyChanges = True If anyChanges Then Return New AsNewClauseSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newAsKeyword, newNewExpression) Else Return node End If End Function Public Overrides Function VisitObjectMemberInitializer(ByVal node As ObjectMemberInitializerSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newWithKeyword = DirectCast(VisitToken(node.WithKeyword).Node, InternalSyntax.KeywordSyntax) If node.WithKeyword.Node IsNot newWithKeyword Then anyChanges = True Dim newOpenBraceToken = DirectCast(VisitToken(node.OpenBraceToken).Node, InternalSyntax.PunctuationSyntax) If node.OpenBraceToken.Node IsNot newOpenBraceToken Then anyChanges = True Dim newInitializers = VisitList(node.Initializers) If node._initializers IsNot newInitializers.Node Then anyChanges = True Dim newCloseBraceToken = DirectCast(VisitToken(node.CloseBraceToken).Node, InternalSyntax.PunctuationSyntax) If node.CloseBraceToken.Node IsNot newCloseBraceToken Then anyChanges = True If anyChanges Then Return New ObjectMemberInitializerSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newWithKeyword, newOpenBraceToken, newInitializers.Node, newCloseBraceToken) Else Return node End If End Function Public Overrides Function VisitObjectCollectionInitializer(ByVal node As ObjectCollectionInitializerSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newFromKeyword = DirectCast(VisitToken(node.FromKeyword).Node, InternalSyntax.KeywordSyntax) If node.FromKeyword.Node IsNot newFromKeyword Then anyChanges = True Dim newInitializer = DirectCast(Visit(node.Initializer), CollectionInitializerSyntax) If node.Initializer IsNot newInitializer Then anyChanges = True If anyChanges Then Return New ObjectCollectionInitializerSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newFromKeyword, newInitializer) Else Return node End If End Function Public Overrides Function VisitInferredFieldInitializer(ByVal node As InferredFieldInitializerSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newKeyKeyword = DirectCast(VisitToken(node.KeyKeyword).Node, InternalSyntax.KeywordSyntax) If node.KeyKeyword.Node IsNot newKeyKeyword Then anyChanges = True Dim newExpression = DirectCast(Visit(node.Expression), ExpressionSyntax) If node.Expression IsNot newExpression Then anyChanges = True If anyChanges Then Return New InferredFieldInitializerSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newKeyKeyword, newExpression) Else Return node End If End Function Public Overrides Function VisitNamedFieldInitializer(ByVal node As NamedFieldInitializerSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newKeyKeyword = DirectCast(VisitToken(node.KeyKeyword).Node, InternalSyntax.KeywordSyntax) If node.KeyKeyword.Node IsNot newKeyKeyword Then anyChanges = True Dim newDotToken = DirectCast(VisitToken(node.DotToken).Node, InternalSyntax.PunctuationSyntax) If node.DotToken.Node IsNot newDotToken Then anyChanges = True Dim newName = DirectCast(Visit(node.Name), IdentifierNameSyntax) If node.Name IsNot newName Then anyChanges = True Dim newEqualsToken = DirectCast(VisitToken(node.EqualsToken).Node, InternalSyntax.PunctuationSyntax) If node.EqualsToken.Node IsNot newEqualsToken Then anyChanges = True Dim newExpression = DirectCast(Visit(node.Expression), ExpressionSyntax) If node.Expression IsNot newExpression Then anyChanges = True If anyChanges Then Return New NamedFieldInitializerSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newKeyKeyword, newDotToken, newName, newEqualsToken, newExpression) Else Return node End If End Function Public Overrides Function VisitEqualsValue(ByVal node As EqualsValueSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newEqualsToken = DirectCast(VisitToken(node.EqualsToken).Node, InternalSyntax.PunctuationSyntax) If node.EqualsToken.Node IsNot newEqualsToken Then anyChanges = True Dim newValue = DirectCast(Visit(node.Value), ExpressionSyntax) If node.Value IsNot newValue Then anyChanges = True If anyChanges Then Return New EqualsValueSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newEqualsToken, newValue) Else Return node End If End Function Public Overrides Function VisitParameter(ByVal node As ParameterSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newAttributeLists = VisitList(node.AttributeLists) If node._attributeLists IsNot newAttributeLists.Node Then anyChanges = True Dim newModifiers = VisitList(node.Modifiers) If node.Modifiers.Node IsNot newModifiers.Node Then anyChanges = True Dim newIdentifier = DirectCast(Visit(node.Identifier), ModifiedIdentifierSyntax) If node.Identifier IsNot newIdentifier Then anyChanges = True Dim newAsClause = DirectCast(Visit(node.AsClause), SimpleAsClauseSyntax) If node.AsClause IsNot newAsClause Then anyChanges = True Dim newDefault = DirectCast(Visit(node.[Default]), EqualsValueSyntax) If node.[Default] IsNot newDefault Then anyChanges = True If anyChanges Then Return New ParameterSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newAttributeLists.Node, newModifiers.Node, newIdentifier, newAsClause, newDefault) Else Return node End If End Function Public Overrides Function VisitModifiedIdentifier(ByVal node As ModifiedIdentifierSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newIdentifier = DirectCast(VisitToken(node.Identifier).Node, InternalSyntax.IdentifierTokenSyntax) If node.Identifier.Node IsNot newIdentifier Then anyChanges = True Dim newNullable = DirectCast(VisitToken(node.Nullable).Node, InternalSyntax.PunctuationSyntax) If node.Nullable.Node IsNot newNullable Then anyChanges = True Dim newArrayBounds = DirectCast(Visit(node.ArrayBounds), ArgumentListSyntax) If node.ArrayBounds IsNot newArrayBounds Then anyChanges = True Dim newArrayRankSpecifiers = VisitList(node.ArrayRankSpecifiers) If node._arrayRankSpecifiers IsNot newArrayRankSpecifiers.Node Then anyChanges = True If anyChanges Then Return New ModifiedIdentifierSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newIdentifier, newNullable, newArrayBounds, newArrayRankSpecifiers.Node) Else Return node End If End Function Public Overrides Function VisitArrayRankSpecifier(ByVal node As ArrayRankSpecifierSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newOpenParenToken = DirectCast(VisitToken(node.OpenParenToken).Node, InternalSyntax.PunctuationSyntax) If node.OpenParenToken.Node IsNot newOpenParenToken Then anyChanges = True Dim newCommaTokens = VisitList(node.CommaTokens) If node.CommaTokens.Node IsNot newCommaTokens.Node Then anyChanges = True Dim newCloseParenToken = DirectCast(VisitToken(node.CloseParenToken).Node, InternalSyntax.PunctuationSyntax) If node.CloseParenToken.Node IsNot newCloseParenToken Then anyChanges = True If anyChanges Then Return New ArrayRankSpecifierSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newOpenParenToken, newCommaTokens.Node, newCloseParenToken) Else Return node End If End Function Public Overrides Function VisitAttributeList(ByVal node As AttributeListSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newLessThanToken = DirectCast(VisitToken(node.LessThanToken).Node, InternalSyntax.PunctuationSyntax) If node.LessThanToken.Node IsNot newLessThanToken Then anyChanges = True Dim newAttributes = VisitList(node.Attributes) If node._attributes IsNot newAttributes.Node Then anyChanges = True Dim newGreaterThanToken = DirectCast(VisitToken(node.GreaterThanToken).Node, InternalSyntax.PunctuationSyntax) If node.GreaterThanToken.Node IsNot newGreaterThanToken Then anyChanges = True If anyChanges Then Return New AttributeListSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newLessThanToken, newAttributes.Node, newGreaterThanToken) Else Return node End If End Function Public Overrides Function VisitAttribute(ByVal node As AttributeSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newTarget = DirectCast(Visit(node.Target), AttributeTargetSyntax) If node.Target IsNot newTarget Then anyChanges = True Dim newName = DirectCast(Visit(node.Name), TypeSyntax) If node.Name IsNot newName Then anyChanges = True Dim newArgumentList = DirectCast(Visit(node.ArgumentList), ArgumentListSyntax) If node.ArgumentList IsNot newArgumentList Then anyChanges = True If anyChanges Then Return New AttributeSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newTarget, newName, newArgumentList) Else Return node End If End Function Public Overrides Function VisitAttributeTarget(ByVal node As AttributeTargetSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newAttributeModifier = DirectCast(VisitToken(node.AttributeModifier).Node, InternalSyntax.KeywordSyntax) If node.AttributeModifier.Node IsNot newAttributeModifier Then anyChanges = True Dim newColonToken = DirectCast(VisitToken(node.ColonToken).Node, InternalSyntax.PunctuationSyntax) If node.ColonToken.Node IsNot newColonToken Then anyChanges = True If anyChanges Then Return New AttributeTargetSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newAttributeModifier, newColonToken) Else Return node End If End Function Public Overrides Function VisitAttributesStatement(ByVal node As AttributesStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newAttributeLists = VisitList(node.AttributeLists) If node._attributeLists IsNot newAttributeLists.Node Then anyChanges = True If anyChanges Then Return New AttributesStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newAttributeLists.Node) Else Return node End If End Function Public Overrides Function VisitExpressionStatement(ByVal node As ExpressionStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newExpression = DirectCast(Visit(node.Expression), ExpressionSyntax) If node.Expression IsNot newExpression Then anyChanges = True If anyChanges Then Return New ExpressionStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newExpression) Else Return node End If End Function Public Overrides Function VisitPrintStatement(ByVal node As PrintStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newQuestionToken = DirectCast(VisitToken(node.QuestionToken).Node, InternalSyntax.PunctuationSyntax) If node.QuestionToken.Node IsNot newQuestionToken Then anyChanges = True Dim newExpression = DirectCast(Visit(node.Expression), ExpressionSyntax) If node.Expression IsNot newExpression Then anyChanges = True If anyChanges Then Return New PrintStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newQuestionToken, newExpression) Else Return node End If End Function Public Overrides Function VisitWhileBlock(ByVal node As WhileBlockSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newWhileStatement = DirectCast(Visit(node.WhileStatement), WhileStatementSyntax) If node.WhileStatement IsNot newWhileStatement Then anyChanges = True Dim newStatements = VisitList(node.Statements) If node._statements IsNot newStatements.Node Then anyChanges = True Dim newEndWhileStatement = DirectCast(Visit(node.EndWhileStatement), EndBlockStatementSyntax) If node.EndWhileStatement IsNot newEndWhileStatement Then anyChanges = True If anyChanges Then Return New WhileBlockSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newWhileStatement, newStatements.Node, newEndWhileStatement) Else Return node End If End Function Public Overrides Function VisitUsingBlock(ByVal node As UsingBlockSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newUsingStatement = DirectCast(Visit(node.UsingStatement), UsingStatementSyntax) If node.UsingStatement IsNot newUsingStatement Then anyChanges = True Dim newStatements = VisitList(node.Statements) If node._statements IsNot newStatements.Node Then anyChanges = True Dim newEndUsingStatement = DirectCast(Visit(node.EndUsingStatement), EndBlockStatementSyntax) If node.EndUsingStatement IsNot newEndUsingStatement Then anyChanges = True If anyChanges Then Return New UsingBlockSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newUsingStatement, newStatements.Node, newEndUsingStatement) Else Return node End If End Function Public Overrides Function VisitSyncLockBlock(ByVal node As SyncLockBlockSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newSyncLockStatement = DirectCast(Visit(node.SyncLockStatement), SyncLockStatementSyntax) If node.SyncLockStatement IsNot newSyncLockStatement Then anyChanges = True Dim newStatements = VisitList(node.Statements) If node._statements IsNot newStatements.Node Then anyChanges = True Dim newEndSyncLockStatement = DirectCast(Visit(node.EndSyncLockStatement), EndBlockStatementSyntax) If node.EndSyncLockStatement IsNot newEndSyncLockStatement Then anyChanges = True If anyChanges Then Return New SyncLockBlockSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newSyncLockStatement, newStatements.Node, newEndSyncLockStatement) Else Return node End If End Function Public Overrides Function VisitWithBlock(ByVal node As WithBlockSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newWithStatement = DirectCast(Visit(node.WithStatement), WithStatementSyntax) If node.WithStatement IsNot newWithStatement Then anyChanges = True Dim newStatements = VisitList(node.Statements) If node._statements IsNot newStatements.Node Then anyChanges = True Dim newEndWithStatement = DirectCast(Visit(node.EndWithStatement), EndBlockStatementSyntax) If node.EndWithStatement IsNot newEndWithStatement Then anyChanges = True If anyChanges Then Return New WithBlockSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newWithStatement, newStatements.Node, newEndWithStatement) Else Return node End If End Function Public Overrides Function VisitLocalDeclarationStatement(ByVal node As LocalDeclarationStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newModifiers = VisitList(node.Modifiers) If node.Modifiers.Node IsNot newModifiers.Node Then anyChanges = True Dim newDeclarators = VisitList(node.Declarators) If node._declarators IsNot newDeclarators.Node Then anyChanges = True If anyChanges Then Return New LocalDeclarationStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newModifiers.Node, newDeclarators.Node) Else Return node End If End Function Public Overrides Function VisitLabelStatement(ByVal node As LabelStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newLabelToken = DirectCast(VisitToken(node.LabelToken).Node, InternalSyntax.SyntaxToken) If node.LabelToken.Node IsNot newLabelToken Then anyChanges = True Dim newColonToken = DirectCast(VisitToken(node.ColonToken).Node, InternalSyntax.PunctuationSyntax) If node.ColonToken.Node IsNot newColonToken Then anyChanges = True If anyChanges Then Return New LabelStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newLabelToken, newColonToken) Else Return node End If End Function Public Overrides Function VisitGoToStatement(ByVal node As GoToStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newGoToKeyword = DirectCast(VisitToken(node.GoToKeyword).Node, InternalSyntax.KeywordSyntax) If node.GoToKeyword.Node IsNot newGoToKeyword Then anyChanges = True Dim newLabel = DirectCast(Visit(node.Label), LabelSyntax) If node.Label IsNot newLabel Then anyChanges = True If anyChanges Then Return New GoToStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newGoToKeyword, newLabel) Else Return node End If End Function Public Overrides Function VisitLabel(ByVal node As LabelSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newLabelToken = DirectCast(VisitToken(node.LabelToken).Node, InternalSyntax.SyntaxToken) If node.LabelToken.Node IsNot newLabelToken Then anyChanges = True If anyChanges Then Return New LabelSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newLabelToken) Else Return node End If End Function Public Overrides Function VisitStopOrEndStatement(ByVal node As StopOrEndStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newStopOrEndKeyword = DirectCast(VisitToken(node.StopOrEndKeyword).Node, InternalSyntax.KeywordSyntax) If node.StopOrEndKeyword.Node IsNot newStopOrEndKeyword Then anyChanges = True If anyChanges Then Return New StopOrEndStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newStopOrEndKeyword) Else Return node End If End Function Public Overrides Function VisitExitStatement(ByVal node As ExitStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newExitKeyword = DirectCast(VisitToken(node.ExitKeyword).Node, InternalSyntax.KeywordSyntax) If node.ExitKeyword.Node IsNot newExitKeyword Then anyChanges = True Dim newBlockKeyword = DirectCast(VisitToken(node.BlockKeyword).Node, InternalSyntax.KeywordSyntax) If node.BlockKeyword.Node IsNot newBlockKeyword Then anyChanges = True If anyChanges Then Return New ExitStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newExitKeyword, newBlockKeyword) Else Return node End If End Function Public Overrides Function VisitContinueStatement(ByVal node As ContinueStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newContinueKeyword = DirectCast(VisitToken(node.ContinueKeyword).Node, InternalSyntax.KeywordSyntax) If node.ContinueKeyword.Node IsNot newContinueKeyword Then anyChanges = True Dim newBlockKeyword = DirectCast(VisitToken(node.BlockKeyword).Node, InternalSyntax.KeywordSyntax) If node.BlockKeyword.Node IsNot newBlockKeyword Then anyChanges = True If anyChanges Then Return New ContinueStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newContinueKeyword, newBlockKeyword) Else Return node End If End Function Public Overrides Function VisitReturnStatement(ByVal node As ReturnStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newReturnKeyword = DirectCast(VisitToken(node.ReturnKeyword).Node, InternalSyntax.KeywordSyntax) If node.ReturnKeyword.Node IsNot newReturnKeyword Then anyChanges = True Dim newExpression = DirectCast(Visit(node.Expression), ExpressionSyntax) If node.Expression IsNot newExpression Then anyChanges = True If anyChanges Then Return New ReturnStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newReturnKeyword, newExpression) Else Return node End If End Function Public Overrides Function VisitSingleLineIfStatement(ByVal node As SingleLineIfStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newIfKeyword = DirectCast(VisitToken(node.IfKeyword).Node, InternalSyntax.KeywordSyntax) If node.IfKeyword.Node IsNot newIfKeyword Then anyChanges = True Dim newCondition = DirectCast(Visit(node.Condition), ExpressionSyntax) If node.Condition IsNot newCondition Then anyChanges = True Dim newThenKeyword = DirectCast(VisitToken(node.ThenKeyword).Node, InternalSyntax.KeywordSyntax) If node.ThenKeyword.Node IsNot newThenKeyword Then anyChanges = True Dim newStatements = VisitList(node.Statements) If node._statements IsNot newStatements.Node Then anyChanges = True Dim newElseClause = DirectCast(Visit(node.ElseClause), SingleLineElseClauseSyntax) If node.ElseClause IsNot newElseClause Then anyChanges = True If anyChanges Then Return New SingleLineIfStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newIfKeyword, newCondition, newThenKeyword, newStatements.Node, newElseClause) Else Return node End If End Function Public Overrides Function VisitSingleLineElseClause(ByVal node As SingleLineElseClauseSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newElseKeyword = DirectCast(VisitToken(node.ElseKeyword).Node, InternalSyntax.KeywordSyntax) If node.ElseKeyword.Node IsNot newElseKeyword Then anyChanges = True Dim newStatements = VisitList(node.Statements) If node._statements IsNot newStatements.Node Then anyChanges = True If anyChanges Then Return New SingleLineElseClauseSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newElseKeyword, newStatements.Node) Else Return node End If End Function Public Overrides Function VisitMultiLineIfBlock(ByVal node As MultiLineIfBlockSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newIfStatement = DirectCast(Visit(node.IfStatement), IfStatementSyntax) If node.IfStatement IsNot newIfStatement Then anyChanges = True Dim newStatements = VisitList(node.Statements) If node._statements IsNot newStatements.Node Then anyChanges = True Dim newElseIfBlocks = VisitList(node.ElseIfBlocks) If node._elseIfBlocks IsNot newElseIfBlocks.Node Then anyChanges = True Dim newElseBlock = DirectCast(Visit(node.ElseBlock), ElseBlockSyntax) If node.ElseBlock IsNot newElseBlock Then anyChanges = True Dim newEndIfStatement = DirectCast(Visit(node.EndIfStatement), EndBlockStatementSyntax) If node.EndIfStatement IsNot newEndIfStatement Then anyChanges = True If anyChanges Then Return New MultiLineIfBlockSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newIfStatement, newStatements.Node, newElseIfBlocks.Node, newElseBlock, newEndIfStatement) Else Return node End If End Function Public Overrides Function VisitIfStatement(ByVal node As IfStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newIfKeyword = DirectCast(VisitToken(node.IfKeyword).Node, InternalSyntax.KeywordSyntax) If node.IfKeyword.Node IsNot newIfKeyword Then anyChanges = True Dim newCondition = DirectCast(Visit(node.Condition), ExpressionSyntax) If node.Condition IsNot newCondition Then anyChanges = True Dim newThenKeyword = DirectCast(VisitToken(node.ThenKeyword).Node, InternalSyntax.KeywordSyntax) If node.ThenKeyword.Node IsNot newThenKeyword Then anyChanges = True If anyChanges Then Return New IfStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newIfKeyword, newCondition, newThenKeyword) Else Return node End If End Function Public Overrides Function VisitElseIfBlock(ByVal node As ElseIfBlockSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newElseIfStatement = DirectCast(Visit(node.ElseIfStatement), ElseIfStatementSyntax) If node.ElseIfStatement IsNot newElseIfStatement Then anyChanges = True Dim newStatements = VisitList(node.Statements) If node._statements IsNot newStatements.Node Then anyChanges = True If anyChanges Then Return New ElseIfBlockSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newElseIfStatement, newStatements.Node) Else Return node End If End Function Public Overrides Function VisitElseIfStatement(ByVal node As ElseIfStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newElseIfKeyword = DirectCast(VisitToken(node.ElseIfKeyword).Node, InternalSyntax.KeywordSyntax) If node.ElseIfKeyword.Node IsNot newElseIfKeyword Then anyChanges = True Dim newCondition = DirectCast(Visit(node.Condition), ExpressionSyntax) If node.Condition IsNot newCondition Then anyChanges = True Dim newThenKeyword = DirectCast(VisitToken(node.ThenKeyword).Node, InternalSyntax.KeywordSyntax) If node.ThenKeyword.Node IsNot newThenKeyword Then anyChanges = True If anyChanges Then Return New ElseIfStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newElseIfKeyword, newCondition, newThenKeyword) Else Return node End If End Function Public Overrides Function VisitElseBlock(ByVal node As ElseBlockSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newElseStatement = DirectCast(Visit(node.ElseStatement), ElseStatementSyntax) If node.ElseStatement IsNot newElseStatement Then anyChanges = True Dim newStatements = VisitList(node.Statements) If node._statements IsNot newStatements.Node Then anyChanges = True If anyChanges Then Return New ElseBlockSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newElseStatement, newStatements.Node) Else Return node End If End Function Public Overrides Function VisitElseStatement(ByVal node As ElseStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newElseKeyword = DirectCast(VisitToken(node.ElseKeyword).Node, InternalSyntax.KeywordSyntax) If node.ElseKeyword.Node IsNot newElseKeyword Then anyChanges = True If anyChanges Then Return New ElseStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newElseKeyword) Else Return node End If End Function Public Overrides Function VisitTryBlock(ByVal node As TryBlockSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newTryStatement = DirectCast(Visit(node.TryStatement), TryStatementSyntax) If node.TryStatement IsNot newTryStatement Then anyChanges = True Dim newStatements = VisitList(node.Statements) If node._statements IsNot newStatements.Node Then anyChanges = True Dim newCatchBlocks = VisitList(node.CatchBlocks) If node._catchBlocks IsNot newCatchBlocks.Node Then anyChanges = True Dim newFinallyBlock = DirectCast(Visit(node.FinallyBlock), FinallyBlockSyntax) If node.FinallyBlock IsNot newFinallyBlock Then anyChanges = True Dim newEndTryStatement = DirectCast(Visit(node.EndTryStatement), EndBlockStatementSyntax) If node.EndTryStatement IsNot newEndTryStatement Then anyChanges = True If anyChanges Then Return New TryBlockSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newTryStatement, newStatements.Node, newCatchBlocks.Node, newFinallyBlock, newEndTryStatement) Else Return node End If End Function Public Overrides Function VisitTryStatement(ByVal node As TryStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newTryKeyword = DirectCast(VisitToken(node.TryKeyword).Node, InternalSyntax.KeywordSyntax) If node.TryKeyword.Node IsNot newTryKeyword Then anyChanges = True If anyChanges Then Return New TryStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newTryKeyword) Else Return node End If End Function Public Overrides Function VisitCatchBlock(ByVal node As CatchBlockSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newCatchStatement = DirectCast(Visit(node.CatchStatement), CatchStatementSyntax) If node.CatchStatement IsNot newCatchStatement Then anyChanges = True Dim newStatements = VisitList(node.Statements) If node._statements IsNot newStatements.Node Then anyChanges = True If anyChanges Then Return New CatchBlockSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newCatchStatement, newStatements.Node) Else Return node End If End Function Public Overrides Function VisitCatchStatement(ByVal node As CatchStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newCatchKeyword = DirectCast(VisitToken(node.CatchKeyword).Node, InternalSyntax.KeywordSyntax) If node.CatchKeyword.Node IsNot newCatchKeyword Then anyChanges = True Dim newIdentifierName = DirectCast(Visit(node.IdentifierName), IdentifierNameSyntax) If node.IdentifierName IsNot newIdentifierName Then anyChanges = True Dim newAsClause = DirectCast(Visit(node.AsClause), SimpleAsClauseSyntax) If node.AsClause IsNot newAsClause Then anyChanges = True Dim newWhenClause = DirectCast(Visit(node.WhenClause), CatchFilterClauseSyntax) If node.WhenClause IsNot newWhenClause Then anyChanges = True If anyChanges Then Return New CatchStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newCatchKeyword, newIdentifierName, newAsClause, newWhenClause) Else Return node End If End Function Public Overrides Function VisitCatchFilterClause(ByVal node As CatchFilterClauseSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newWhenKeyword = DirectCast(VisitToken(node.WhenKeyword).Node, InternalSyntax.KeywordSyntax) If node.WhenKeyword.Node IsNot newWhenKeyword Then anyChanges = True Dim newFilter = DirectCast(Visit(node.Filter), ExpressionSyntax) If node.Filter IsNot newFilter Then anyChanges = True If anyChanges Then Return New CatchFilterClauseSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newWhenKeyword, newFilter) Else Return node End If End Function Public Overrides Function VisitFinallyBlock(ByVal node As FinallyBlockSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newFinallyStatement = DirectCast(Visit(node.FinallyStatement), FinallyStatementSyntax) If node.FinallyStatement IsNot newFinallyStatement Then anyChanges = True Dim newStatements = VisitList(node.Statements) If node._statements IsNot newStatements.Node Then anyChanges = True If anyChanges Then Return New FinallyBlockSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newFinallyStatement, newStatements.Node) Else Return node End If End Function Public Overrides Function VisitFinallyStatement(ByVal node As FinallyStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newFinallyKeyword = DirectCast(VisitToken(node.FinallyKeyword).Node, InternalSyntax.KeywordSyntax) If node.FinallyKeyword.Node IsNot newFinallyKeyword Then anyChanges = True If anyChanges Then Return New FinallyStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newFinallyKeyword) Else Return node End If End Function Public Overrides Function VisitErrorStatement(ByVal node As ErrorStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newErrorKeyword = DirectCast(VisitToken(node.ErrorKeyword).Node, InternalSyntax.KeywordSyntax) If node.ErrorKeyword.Node IsNot newErrorKeyword Then anyChanges = True Dim newErrorNumber = DirectCast(Visit(node.ErrorNumber), ExpressionSyntax) If node.ErrorNumber IsNot newErrorNumber Then anyChanges = True If anyChanges Then Return New ErrorStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newErrorKeyword, newErrorNumber) Else Return node End If End Function Public Overrides Function VisitOnErrorGoToStatement(ByVal node As OnErrorGoToStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newOnKeyword = DirectCast(VisitToken(node.OnKeyword).Node, InternalSyntax.KeywordSyntax) If node.OnKeyword.Node IsNot newOnKeyword Then anyChanges = True Dim newErrorKeyword = DirectCast(VisitToken(node.ErrorKeyword).Node, InternalSyntax.KeywordSyntax) If node.ErrorKeyword.Node IsNot newErrorKeyword Then anyChanges = True Dim newGoToKeyword = DirectCast(VisitToken(node.GoToKeyword).Node, InternalSyntax.KeywordSyntax) If node.GoToKeyword.Node IsNot newGoToKeyword Then anyChanges = True Dim newMinus = DirectCast(VisitToken(node.Minus).Node, InternalSyntax.PunctuationSyntax) If node.Minus.Node IsNot newMinus Then anyChanges = True Dim newLabel = DirectCast(Visit(node.Label), LabelSyntax) If node.Label IsNot newLabel Then anyChanges = True If anyChanges Then Return New OnErrorGoToStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newOnKeyword, newErrorKeyword, newGoToKeyword, newMinus, newLabel) Else Return node End If End Function Public Overrides Function VisitOnErrorResumeNextStatement(ByVal node As OnErrorResumeNextStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newOnKeyword = DirectCast(VisitToken(node.OnKeyword).Node, InternalSyntax.KeywordSyntax) If node.OnKeyword.Node IsNot newOnKeyword Then anyChanges = True Dim newErrorKeyword = DirectCast(VisitToken(node.ErrorKeyword).Node, InternalSyntax.KeywordSyntax) If node.ErrorKeyword.Node IsNot newErrorKeyword Then anyChanges = True Dim newResumeKeyword = DirectCast(VisitToken(node.ResumeKeyword).Node, InternalSyntax.KeywordSyntax) If node.ResumeKeyword.Node IsNot newResumeKeyword Then anyChanges = True Dim newNextKeyword = DirectCast(VisitToken(node.NextKeyword).Node, InternalSyntax.KeywordSyntax) If node.NextKeyword.Node IsNot newNextKeyword Then anyChanges = True If anyChanges Then Return New OnErrorResumeNextStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newOnKeyword, newErrorKeyword, newResumeKeyword, newNextKeyword) Else Return node End If End Function Public Overrides Function VisitResumeStatement(ByVal node As ResumeStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newResumeKeyword = DirectCast(VisitToken(node.ResumeKeyword).Node, InternalSyntax.KeywordSyntax) If node.ResumeKeyword.Node IsNot newResumeKeyword Then anyChanges = True Dim newLabel = DirectCast(Visit(node.Label), LabelSyntax) If node.Label IsNot newLabel Then anyChanges = True If anyChanges Then Return New ResumeStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newResumeKeyword, newLabel) Else Return node End If End Function Public Overrides Function VisitSelectBlock(ByVal node As SelectBlockSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newSelectStatement = DirectCast(Visit(node.SelectStatement), SelectStatementSyntax) If node.SelectStatement IsNot newSelectStatement Then anyChanges = True Dim newCaseBlocks = VisitList(node.CaseBlocks) If node._caseBlocks IsNot newCaseBlocks.Node Then anyChanges = True Dim newEndSelectStatement = DirectCast(Visit(node.EndSelectStatement), EndBlockStatementSyntax) If node.EndSelectStatement IsNot newEndSelectStatement Then anyChanges = True If anyChanges Then Return New SelectBlockSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newSelectStatement, newCaseBlocks.Node, newEndSelectStatement) Else Return node End If End Function Public Overrides Function VisitSelectStatement(ByVal node As SelectStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newSelectKeyword = DirectCast(VisitToken(node.SelectKeyword).Node, InternalSyntax.KeywordSyntax) If node.SelectKeyword.Node IsNot newSelectKeyword Then anyChanges = True Dim newCaseKeyword = DirectCast(VisitToken(node.CaseKeyword).Node, InternalSyntax.KeywordSyntax) If node.CaseKeyword.Node IsNot newCaseKeyword Then anyChanges = True Dim newExpression = DirectCast(Visit(node.Expression), ExpressionSyntax) If node.Expression IsNot newExpression Then anyChanges = True If anyChanges Then Return New SelectStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newSelectKeyword, newCaseKeyword, newExpression) Else Return node End If End Function Public Overrides Function VisitCaseBlock(ByVal node As CaseBlockSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newCaseStatement = DirectCast(Visit(node.CaseStatement), CaseStatementSyntax) If node.CaseStatement IsNot newCaseStatement Then anyChanges = True Dim newStatements = VisitList(node.Statements) If node._statements IsNot newStatements.Node Then anyChanges = True If anyChanges Then Return New CaseBlockSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newCaseStatement, newStatements.Node) Else Return node End If End Function Public Overrides Function VisitCaseStatement(ByVal node As CaseStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newCaseKeyword = DirectCast(VisitToken(node.CaseKeyword).Node, InternalSyntax.KeywordSyntax) If node.CaseKeyword.Node IsNot newCaseKeyword Then anyChanges = True Dim newCases = VisitList(node.Cases) If node._cases IsNot newCases.Node Then anyChanges = True If anyChanges Then Return New CaseStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newCaseKeyword, newCases.Node) Else Return node End If End Function Public Overrides Function VisitElseCaseClause(ByVal node As ElseCaseClauseSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newElseKeyword = DirectCast(VisitToken(node.ElseKeyword).Node, InternalSyntax.KeywordSyntax) If node.ElseKeyword.Node IsNot newElseKeyword Then anyChanges = True If anyChanges Then Return New ElseCaseClauseSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newElseKeyword) Else Return node End If End Function Public Overrides Function VisitSimpleCaseClause(ByVal node As SimpleCaseClauseSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newValue = DirectCast(Visit(node.Value), ExpressionSyntax) If node.Value IsNot newValue Then anyChanges = True If anyChanges Then Return New SimpleCaseClauseSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newValue) Else Return node End If End Function Public Overrides Function VisitRangeCaseClause(ByVal node As RangeCaseClauseSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newLowerBound = DirectCast(Visit(node.LowerBound), ExpressionSyntax) If node.LowerBound IsNot newLowerBound Then anyChanges = True Dim newToKeyword = DirectCast(VisitToken(node.ToKeyword).Node, InternalSyntax.KeywordSyntax) If node.ToKeyword.Node IsNot newToKeyword Then anyChanges = True Dim newUpperBound = DirectCast(Visit(node.UpperBound), ExpressionSyntax) If node.UpperBound IsNot newUpperBound Then anyChanges = True If anyChanges Then Return New RangeCaseClauseSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newLowerBound, newToKeyword, newUpperBound) Else Return node End If End Function Public Overrides Function VisitRelationalCaseClause(ByVal node As RelationalCaseClauseSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newIsKeyword = DirectCast(VisitToken(node.IsKeyword).Node, InternalSyntax.KeywordSyntax) If node.IsKeyword.Node IsNot newIsKeyword Then anyChanges = True Dim newOperatorToken = DirectCast(VisitToken(node.OperatorToken).Node, InternalSyntax.PunctuationSyntax) If node.OperatorToken.Node IsNot newOperatorToken Then anyChanges = True Dim newValue = DirectCast(Visit(node.Value), ExpressionSyntax) If node.Value IsNot newValue Then anyChanges = True If anyChanges Then Return New RelationalCaseClauseSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newIsKeyword, newOperatorToken, newValue) Else Return node End If End Function Public Overrides Function VisitSyncLockStatement(ByVal node As SyncLockStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newSyncLockKeyword = DirectCast(VisitToken(node.SyncLockKeyword).Node, InternalSyntax.KeywordSyntax) If node.SyncLockKeyword.Node IsNot newSyncLockKeyword Then anyChanges = True Dim newExpression = DirectCast(Visit(node.Expression), ExpressionSyntax) If node.Expression IsNot newExpression Then anyChanges = True If anyChanges Then Return New SyncLockStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newSyncLockKeyword, newExpression) Else Return node End If End Function Public Overrides Function VisitDoLoopBlock(ByVal node As DoLoopBlockSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newDoStatement = DirectCast(Visit(node.DoStatement), DoStatementSyntax) If node.DoStatement IsNot newDoStatement Then anyChanges = True Dim newStatements = VisitList(node.Statements) If node._statements IsNot newStatements.Node Then anyChanges = True Dim newLoopStatement = DirectCast(Visit(node.LoopStatement), LoopStatementSyntax) If node.LoopStatement IsNot newLoopStatement Then anyChanges = True If anyChanges Then Return New DoLoopBlockSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newDoStatement, newStatements.Node, newLoopStatement) Else Return node End If End Function Public Overrides Function VisitDoStatement(ByVal node As DoStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newDoKeyword = DirectCast(VisitToken(node.DoKeyword).Node, InternalSyntax.KeywordSyntax) If node.DoKeyword.Node IsNot newDoKeyword Then anyChanges = True Dim newWhileOrUntilClause = DirectCast(Visit(node.WhileOrUntilClause), WhileOrUntilClauseSyntax) If node.WhileOrUntilClause IsNot newWhileOrUntilClause Then anyChanges = True If anyChanges Then Return New DoStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newDoKeyword, newWhileOrUntilClause) Else Return node End If End Function Public Overrides Function VisitLoopStatement(ByVal node As LoopStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newLoopKeyword = DirectCast(VisitToken(node.LoopKeyword).Node, InternalSyntax.KeywordSyntax) If node.LoopKeyword.Node IsNot newLoopKeyword Then anyChanges = True Dim newWhileOrUntilClause = DirectCast(Visit(node.WhileOrUntilClause), WhileOrUntilClauseSyntax) If node.WhileOrUntilClause IsNot newWhileOrUntilClause Then anyChanges = True If anyChanges Then Return New LoopStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newLoopKeyword, newWhileOrUntilClause) Else Return node End If End Function Public Overrides Function VisitWhileOrUntilClause(ByVal node As WhileOrUntilClauseSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newWhileOrUntilKeyword = DirectCast(VisitToken(node.WhileOrUntilKeyword).Node, InternalSyntax.KeywordSyntax) If node.WhileOrUntilKeyword.Node IsNot newWhileOrUntilKeyword Then anyChanges = True Dim newCondition = DirectCast(Visit(node.Condition), ExpressionSyntax) If node.Condition IsNot newCondition Then anyChanges = True If anyChanges Then Return New WhileOrUntilClauseSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newWhileOrUntilKeyword, newCondition) Else Return node End If End Function Public Overrides Function VisitWhileStatement(ByVal node As WhileStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newWhileKeyword = DirectCast(VisitToken(node.WhileKeyword).Node, InternalSyntax.KeywordSyntax) If node.WhileKeyword.Node IsNot newWhileKeyword Then anyChanges = True Dim newCondition = DirectCast(Visit(node.Condition), ExpressionSyntax) If node.Condition IsNot newCondition Then anyChanges = True If anyChanges Then Return New WhileStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newWhileKeyword, newCondition) Else Return node End If End Function Public Overrides Function VisitForBlock(ByVal node As ForBlockSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newForStatement = DirectCast(Visit(node.ForStatement), ForStatementSyntax) If node.ForStatement IsNot newForStatement Then anyChanges = True Dim newStatements = VisitList(node.Statements) If node._statements IsNot newStatements.Node Then anyChanges = True Dim newNextStatement = DirectCast(Visit(node.NextStatement), NextStatementSyntax) If node.NextStatement IsNot newNextStatement Then anyChanges = True If anyChanges Then Return New ForBlockSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newForStatement, newStatements.Node, newNextStatement) Else Return node End If End Function Public Overrides Function VisitForEachBlock(ByVal node As ForEachBlockSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newForEachStatement = DirectCast(Visit(node.ForEachStatement), ForEachStatementSyntax) If node.ForEachStatement IsNot newForEachStatement Then anyChanges = True Dim newStatements = VisitList(node.Statements) If node._statements IsNot newStatements.Node Then anyChanges = True Dim newNextStatement = DirectCast(Visit(node.NextStatement), NextStatementSyntax) If node.NextStatement IsNot newNextStatement Then anyChanges = True If anyChanges Then Return New ForEachBlockSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newForEachStatement, newStatements.Node, newNextStatement) Else Return node End If End Function Public Overrides Function VisitForStatement(ByVal node As ForStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newForKeyword = DirectCast(VisitToken(node.ForKeyword).Node, InternalSyntax.KeywordSyntax) If node.ForKeyword.Node IsNot newForKeyword Then anyChanges = True Dim newControlVariable = DirectCast(Visit(node.ControlVariable), VisualBasicSyntaxNode) If node.ControlVariable IsNot newControlVariable Then anyChanges = True Dim newEqualsToken = DirectCast(VisitToken(node.EqualsToken).Node, InternalSyntax.PunctuationSyntax) If node.EqualsToken.Node IsNot newEqualsToken Then anyChanges = True Dim newFromValue = DirectCast(Visit(node.FromValue), ExpressionSyntax) If node.FromValue IsNot newFromValue Then anyChanges = True Dim newToKeyword = DirectCast(VisitToken(node.ToKeyword).Node, InternalSyntax.KeywordSyntax) If node.ToKeyword.Node IsNot newToKeyword Then anyChanges = True Dim newToValue = DirectCast(Visit(node.ToValue), ExpressionSyntax) If node.ToValue IsNot newToValue Then anyChanges = True Dim newStepClause = DirectCast(Visit(node.StepClause), ForStepClauseSyntax) If node.StepClause IsNot newStepClause Then anyChanges = True If anyChanges Then Return New ForStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newForKeyword, newControlVariable, newEqualsToken, newFromValue, newToKeyword, newToValue, newStepClause) Else Return node End If End Function Public Overrides Function VisitForStepClause(ByVal node As ForStepClauseSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newStepKeyword = DirectCast(VisitToken(node.StepKeyword).Node, InternalSyntax.KeywordSyntax) If node.StepKeyword.Node IsNot newStepKeyword Then anyChanges = True Dim newStepValue = DirectCast(Visit(node.StepValue), ExpressionSyntax) If node.StepValue IsNot newStepValue Then anyChanges = True If anyChanges Then Return New ForStepClauseSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newStepKeyword, newStepValue) Else Return node End If End Function Public Overrides Function VisitForEachStatement(ByVal node As ForEachStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newForKeyword = DirectCast(VisitToken(node.ForKeyword).Node, InternalSyntax.KeywordSyntax) If node.ForKeyword.Node IsNot newForKeyword Then anyChanges = True Dim newEachKeyword = DirectCast(VisitToken(node.EachKeyword).Node, InternalSyntax.KeywordSyntax) If node.EachKeyword.Node IsNot newEachKeyword Then anyChanges = True Dim newControlVariable = DirectCast(Visit(node.ControlVariable), VisualBasicSyntaxNode) If node.ControlVariable IsNot newControlVariable Then anyChanges = True Dim newInKeyword = DirectCast(VisitToken(node.InKeyword).Node, InternalSyntax.KeywordSyntax) If node.InKeyword.Node IsNot newInKeyword Then anyChanges = True Dim newExpression = DirectCast(Visit(node.Expression), ExpressionSyntax) If node.Expression IsNot newExpression Then anyChanges = True If anyChanges Then Return New ForEachStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newForKeyword, newEachKeyword, newControlVariable, newInKeyword, newExpression) Else Return node End If End Function Public Overrides Function VisitNextStatement(ByVal node As NextStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newNextKeyword = DirectCast(VisitToken(node.NextKeyword).Node, InternalSyntax.KeywordSyntax) If node.NextKeyword.Node IsNot newNextKeyword Then anyChanges = True Dim newControlVariables = VisitList(node.ControlVariables) If node._controlVariables IsNot newControlVariables.Node Then anyChanges = True If anyChanges Then Return New NextStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newNextKeyword, newControlVariables.Node) Else Return node End If End Function Public Overrides Function VisitUsingStatement(ByVal node As UsingStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newUsingKeyword = DirectCast(VisitToken(node.UsingKeyword).Node, InternalSyntax.KeywordSyntax) If node.UsingKeyword.Node IsNot newUsingKeyword Then anyChanges = True Dim newExpression = DirectCast(Visit(node.Expression), ExpressionSyntax) If node.Expression IsNot newExpression Then anyChanges = True Dim newVariables = VisitList(node.Variables) If node._variables IsNot newVariables.Node Then anyChanges = True If anyChanges Then Return New UsingStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newUsingKeyword, newExpression, newVariables.Node) Else Return node End If End Function Public Overrides Function VisitThrowStatement(ByVal node As ThrowStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newThrowKeyword = DirectCast(VisitToken(node.ThrowKeyword).Node, InternalSyntax.KeywordSyntax) If node.ThrowKeyword.Node IsNot newThrowKeyword Then anyChanges = True Dim newExpression = DirectCast(Visit(node.Expression), ExpressionSyntax) If node.Expression IsNot newExpression Then anyChanges = True If anyChanges Then Return New ThrowStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newThrowKeyword, newExpression) Else Return node End If End Function Public Overrides Function VisitAssignmentStatement(ByVal node As AssignmentStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newLeft = DirectCast(Visit(node.Left), ExpressionSyntax) If node.Left IsNot newLeft Then anyChanges = True Dim newOperatorToken = DirectCast(VisitToken(node.OperatorToken).Node, InternalSyntax.PunctuationSyntax) If node.OperatorToken.Node IsNot newOperatorToken Then anyChanges = True Dim newRight = DirectCast(Visit(node.Right), ExpressionSyntax) If node.Right IsNot newRight Then anyChanges = True If anyChanges Then Return New AssignmentStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newLeft, newOperatorToken, newRight) Else Return node End If End Function Public Overrides Function VisitMidExpression(ByVal node As MidExpressionSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newMid = DirectCast(VisitToken(node.Mid).Node, InternalSyntax.IdentifierTokenSyntax) If node.Mid.Node IsNot newMid Then anyChanges = True Dim newArgumentList = DirectCast(Visit(node.ArgumentList), ArgumentListSyntax) If node.ArgumentList IsNot newArgumentList Then anyChanges = True If anyChanges Then Return New MidExpressionSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newMid, newArgumentList) Else Return node End If End Function Public Overrides Function VisitCallStatement(ByVal node As CallStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newCallKeyword = DirectCast(VisitToken(node.CallKeyword).Node, InternalSyntax.KeywordSyntax) If node.CallKeyword.Node IsNot newCallKeyword Then anyChanges = True Dim newInvocation = DirectCast(Visit(node.Invocation), ExpressionSyntax) If node.Invocation IsNot newInvocation Then anyChanges = True If anyChanges Then Return New CallStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newCallKeyword, newInvocation) Else Return node End If End Function Public Overrides Function VisitAddRemoveHandlerStatement(ByVal node As AddRemoveHandlerStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newAddHandlerOrRemoveHandlerKeyword = DirectCast(VisitToken(node.AddHandlerOrRemoveHandlerKeyword).Node, InternalSyntax.KeywordSyntax) If node.AddHandlerOrRemoveHandlerKeyword.Node IsNot newAddHandlerOrRemoveHandlerKeyword Then anyChanges = True Dim newEventExpression = DirectCast(Visit(node.EventExpression), ExpressionSyntax) If node.EventExpression IsNot newEventExpression Then anyChanges = True Dim newCommaToken = DirectCast(VisitToken(node.CommaToken).Node, InternalSyntax.PunctuationSyntax) If node.CommaToken.Node IsNot newCommaToken Then anyChanges = True Dim newDelegateExpression = DirectCast(Visit(node.DelegateExpression), ExpressionSyntax) If node.DelegateExpression IsNot newDelegateExpression Then anyChanges = True If anyChanges Then Return New AddRemoveHandlerStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newAddHandlerOrRemoveHandlerKeyword, newEventExpression, newCommaToken, newDelegateExpression) Else Return node End If End Function Public Overrides Function VisitRaiseEventStatement(ByVal node As RaiseEventStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newRaiseEventKeyword = DirectCast(VisitToken(node.RaiseEventKeyword).Node, InternalSyntax.KeywordSyntax) If node.RaiseEventKeyword.Node IsNot newRaiseEventKeyword Then anyChanges = True Dim newName = DirectCast(Visit(node.Name), IdentifierNameSyntax) If node.Name IsNot newName Then anyChanges = True Dim newArgumentList = DirectCast(Visit(node.ArgumentList), ArgumentListSyntax) If node.ArgumentList IsNot newArgumentList Then anyChanges = True If anyChanges Then Return New RaiseEventStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newRaiseEventKeyword, newName, newArgumentList) Else Return node End If End Function Public Overrides Function VisitWithStatement(ByVal node As WithStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newWithKeyword = DirectCast(VisitToken(node.WithKeyword).Node, InternalSyntax.KeywordSyntax) If node.WithKeyword.Node IsNot newWithKeyword Then anyChanges = True Dim newExpression = DirectCast(Visit(node.Expression), ExpressionSyntax) If node.Expression IsNot newExpression Then anyChanges = True If anyChanges Then Return New WithStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newWithKeyword, newExpression) Else Return node End If End Function Public Overrides Function VisitReDimStatement(ByVal node As ReDimStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newReDimKeyword = DirectCast(VisitToken(node.ReDimKeyword).Node, InternalSyntax.KeywordSyntax) If node.ReDimKeyword.Node IsNot newReDimKeyword Then anyChanges = True Dim newPreserveKeyword = DirectCast(VisitToken(node.PreserveKeyword).Node, InternalSyntax.KeywordSyntax) If node.PreserveKeyword.Node IsNot newPreserveKeyword Then anyChanges = True Dim newClauses = VisitList(node.Clauses) If node._clauses IsNot newClauses.Node Then anyChanges = True If anyChanges Then Return New ReDimStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newReDimKeyword, newPreserveKeyword, newClauses.Node) Else Return node End If End Function Public Overrides Function VisitRedimClause(ByVal node As RedimClauseSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newExpression = DirectCast(Visit(node.Expression), ExpressionSyntax) If node.Expression IsNot newExpression Then anyChanges = True Dim newArrayBounds = DirectCast(Visit(node.ArrayBounds), ArgumentListSyntax) If node.ArrayBounds IsNot newArrayBounds Then anyChanges = True If anyChanges Then Return New RedimClauseSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newExpression, newArrayBounds) Else Return node End If End Function Public Overrides Function VisitEraseStatement(ByVal node As EraseStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newEraseKeyword = DirectCast(VisitToken(node.EraseKeyword).Node, InternalSyntax.KeywordSyntax) If node.EraseKeyword.Node IsNot newEraseKeyword Then anyChanges = True Dim newExpressions = VisitList(node.Expressions) If node._expressions IsNot newExpressions.Node Then anyChanges = True If anyChanges Then Return New EraseStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newEraseKeyword, newExpressions.Node) Else Return node End If End Function Public Overrides Function VisitLiteralExpression(ByVal node As LiteralExpressionSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newToken = DirectCast(VisitToken(node.Token).Node, InternalSyntax.SyntaxToken) If node.Token.Node IsNot newToken Then anyChanges = True If anyChanges Then Return New LiteralExpressionSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newToken) Else Return node End If End Function Public Overrides Function VisitParenthesizedExpression(ByVal node As ParenthesizedExpressionSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newOpenParenToken = DirectCast(VisitToken(node.OpenParenToken).Node, InternalSyntax.PunctuationSyntax) If node.OpenParenToken.Node IsNot newOpenParenToken Then anyChanges = True Dim newExpression = DirectCast(Visit(node.Expression), ExpressionSyntax) If node.Expression IsNot newExpression Then anyChanges = True Dim newCloseParenToken = DirectCast(VisitToken(node.CloseParenToken).Node, InternalSyntax.PunctuationSyntax) If node.CloseParenToken.Node IsNot newCloseParenToken Then anyChanges = True If anyChanges Then Return New ParenthesizedExpressionSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newOpenParenToken, newExpression, newCloseParenToken) Else Return node End If End Function Public Overrides Function VisitTupleExpression(ByVal node As TupleExpressionSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newOpenParenToken = DirectCast(VisitToken(node.OpenParenToken).Node, InternalSyntax.PunctuationSyntax) If node.OpenParenToken.Node IsNot newOpenParenToken Then anyChanges = True Dim newArguments = VisitList(node.Arguments) If node._arguments IsNot newArguments.Node Then anyChanges = True Dim newCloseParenToken = DirectCast(VisitToken(node.CloseParenToken).Node, InternalSyntax.PunctuationSyntax) If node.CloseParenToken.Node IsNot newCloseParenToken Then anyChanges = True If anyChanges Then Return New TupleExpressionSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newOpenParenToken, newArguments.Node, newCloseParenToken) Else Return node End If End Function Public Overrides Function VisitTupleType(ByVal node As TupleTypeSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newOpenParenToken = DirectCast(VisitToken(node.OpenParenToken).Node, InternalSyntax.PunctuationSyntax) If node.OpenParenToken.Node IsNot newOpenParenToken Then anyChanges = True Dim newElements = VisitList(node.Elements) If node._elements IsNot newElements.Node Then anyChanges = True Dim newCloseParenToken = DirectCast(VisitToken(node.CloseParenToken).Node, InternalSyntax.PunctuationSyntax) If node.CloseParenToken.Node IsNot newCloseParenToken Then anyChanges = True If anyChanges Then Return New TupleTypeSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newOpenParenToken, newElements.Node, newCloseParenToken) Else Return node End If End Function Public Overrides Function VisitTypedTupleElement(ByVal node As TypedTupleElementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newType = DirectCast(Visit(node.Type), TypeSyntax) If node.Type IsNot newType Then anyChanges = True If anyChanges Then Return New TypedTupleElementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newType) Else Return node End If End Function Public Overrides Function VisitNamedTupleElement(ByVal node As NamedTupleElementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newIdentifier = DirectCast(VisitToken(node.Identifier).Node, InternalSyntax.IdentifierTokenSyntax) If node.Identifier.Node IsNot newIdentifier Then anyChanges = True Dim newAsClause = DirectCast(Visit(node.AsClause), SimpleAsClauseSyntax) If node.AsClause IsNot newAsClause Then anyChanges = True If anyChanges Then Return New NamedTupleElementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newIdentifier, newAsClause) Else Return node End If End Function Public Overrides Function VisitMeExpression(ByVal node As MeExpressionSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newKeyword = DirectCast(VisitToken(node.Keyword).Node, InternalSyntax.KeywordSyntax) If node.Keyword.Node IsNot newKeyword Then anyChanges = True If anyChanges Then Return New MeExpressionSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newKeyword) Else Return node End If End Function Public Overrides Function VisitMyBaseExpression(ByVal node As MyBaseExpressionSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newKeyword = DirectCast(VisitToken(node.Keyword).Node, InternalSyntax.KeywordSyntax) If node.Keyword.Node IsNot newKeyword Then anyChanges = True If anyChanges Then Return New MyBaseExpressionSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newKeyword) Else Return node End If End Function Public Overrides Function VisitMyClassExpression(ByVal node As MyClassExpressionSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newKeyword = DirectCast(VisitToken(node.Keyword).Node, InternalSyntax.KeywordSyntax) If node.Keyword.Node IsNot newKeyword Then anyChanges = True If anyChanges Then Return New MyClassExpressionSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newKeyword) Else Return node End If End Function Public Overrides Function VisitGetTypeExpression(ByVal node As GetTypeExpressionSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newGetTypeKeyword = DirectCast(VisitToken(node.GetTypeKeyword).Node, InternalSyntax.KeywordSyntax) If node.GetTypeKeyword.Node IsNot newGetTypeKeyword Then anyChanges = True Dim newOpenParenToken = DirectCast(VisitToken(node.OpenParenToken).Node, InternalSyntax.PunctuationSyntax) If node.OpenParenToken.Node IsNot newOpenParenToken Then anyChanges = True Dim newType = DirectCast(Visit(node.Type), TypeSyntax) If node.Type IsNot newType Then anyChanges = True Dim newCloseParenToken = DirectCast(VisitToken(node.CloseParenToken).Node, InternalSyntax.PunctuationSyntax) If node.CloseParenToken.Node IsNot newCloseParenToken Then anyChanges = True If anyChanges Then Return New GetTypeExpressionSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newGetTypeKeyword, newOpenParenToken, newType, newCloseParenToken) Else Return node End If End Function Public Overrides Function VisitTypeOfExpression(ByVal node As TypeOfExpressionSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newTypeOfKeyword = DirectCast(VisitToken(node.TypeOfKeyword).Node, InternalSyntax.KeywordSyntax) If node.TypeOfKeyword.Node IsNot newTypeOfKeyword Then anyChanges = True Dim newExpression = DirectCast(Visit(node.Expression), ExpressionSyntax) If node.Expression IsNot newExpression Then anyChanges = True Dim newOperatorToken = DirectCast(VisitToken(node.OperatorToken).Node, InternalSyntax.KeywordSyntax) If node.OperatorToken.Node IsNot newOperatorToken Then anyChanges = True Dim newType = DirectCast(Visit(node.Type), TypeSyntax) If node.Type IsNot newType Then anyChanges = True If anyChanges Then Return New TypeOfExpressionSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newTypeOfKeyword, newExpression, newOperatorToken, newType) Else Return node End If End Function Public Overrides Function VisitGetXmlNamespaceExpression(ByVal node As GetXmlNamespaceExpressionSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newGetXmlNamespaceKeyword = DirectCast(VisitToken(node.GetXmlNamespaceKeyword).Node, InternalSyntax.KeywordSyntax) If node.GetXmlNamespaceKeyword.Node IsNot newGetXmlNamespaceKeyword Then anyChanges = True Dim newOpenParenToken = DirectCast(VisitToken(node.OpenParenToken).Node, InternalSyntax.PunctuationSyntax) If node.OpenParenToken.Node IsNot newOpenParenToken Then anyChanges = True Dim newName = DirectCast(Visit(node.Name), XmlPrefixNameSyntax) If node.Name IsNot newName Then anyChanges = True Dim newCloseParenToken = DirectCast(VisitToken(node.CloseParenToken).Node, InternalSyntax.PunctuationSyntax) If node.CloseParenToken.Node IsNot newCloseParenToken Then anyChanges = True If anyChanges Then Return New GetXmlNamespaceExpressionSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newGetXmlNamespaceKeyword, newOpenParenToken, newName, newCloseParenToken) Else Return node End If End Function Public Overrides Function VisitMemberAccessExpression(ByVal node As MemberAccessExpressionSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newExpression = DirectCast(Visit(node.Expression), ExpressionSyntax) If node.Expression IsNot newExpression Then anyChanges = True Dim newOperatorToken = DirectCast(VisitToken(node.OperatorToken).Node, InternalSyntax.PunctuationSyntax) If node.OperatorToken.Node IsNot newOperatorToken Then anyChanges = True Dim newName = DirectCast(Visit(node.Name), SimpleNameSyntax) If node.Name IsNot newName Then anyChanges = True If anyChanges Then Return New MemberAccessExpressionSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newExpression, newOperatorToken, newName) Else Return node End If End Function Public Overrides Function VisitXmlMemberAccessExpression(ByVal node As XmlMemberAccessExpressionSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newBase = DirectCast(Visit(node.Base), ExpressionSyntax) If node.Base IsNot newBase Then anyChanges = True Dim newToken1 = DirectCast(VisitToken(node.Token1).Node, InternalSyntax.PunctuationSyntax) If node.Token1.Node IsNot newToken1 Then anyChanges = True Dim newToken2 = DirectCast(VisitToken(node.Token2).Node, InternalSyntax.PunctuationSyntax) If node.Token2.Node IsNot newToken2 Then anyChanges = True Dim newToken3 = DirectCast(VisitToken(node.Token3).Node, InternalSyntax.PunctuationSyntax) If node.Token3.Node IsNot newToken3 Then anyChanges = True Dim newName = DirectCast(Visit(node.Name), XmlNodeSyntax) If node.Name IsNot newName Then anyChanges = True If anyChanges Then Return New XmlMemberAccessExpressionSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newBase, newToken1, newToken2, newToken3, newName) Else Return node End If End Function Public Overrides Function VisitInvocationExpression(ByVal node As InvocationExpressionSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newExpression = DirectCast(Visit(node.Expression), ExpressionSyntax) If node.Expression IsNot newExpression Then anyChanges = True Dim newArgumentList = DirectCast(Visit(node.ArgumentList), ArgumentListSyntax) If node.ArgumentList IsNot newArgumentList Then anyChanges = True If anyChanges Then Return New InvocationExpressionSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newExpression, newArgumentList) Else Return node End If End Function Public Overrides Function VisitObjectCreationExpression(ByVal node As ObjectCreationExpressionSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newNewKeyword = DirectCast(VisitToken(node.NewKeyword).Node, InternalSyntax.KeywordSyntax) If node.NewKeyword.Node IsNot newNewKeyword Then anyChanges = True Dim newAttributeLists = VisitList(node.AttributeLists) If node._attributeLists IsNot newAttributeLists.Node Then anyChanges = True Dim newType = DirectCast(Visit(node.Type), TypeSyntax) If node.Type IsNot newType Then anyChanges = True Dim newArgumentList = DirectCast(Visit(node.ArgumentList), ArgumentListSyntax) If node.ArgumentList IsNot newArgumentList Then anyChanges = True Dim newInitializer = DirectCast(Visit(node.Initializer), ObjectCreationInitializerSyntax) If node.Initializer IsNot newInitializer Then anyChanges = True If anyChanges Then Return New ObjectCreationExpressionSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newNewKeyword, newAttributeLists.Node, newType, newArgumentList, newInitializer) Else Return node End If End Function Public Overrides Function VisitAnonymousObjectCreationExpression(ByVal node As AnonymousObjectCreationExpressionSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newNewKeyword = DirectCast(VisitToken(node.NewKeyword).Node, InternalSyntax.KeywordSyntax) If node.NewKeyword.Node IsNot newNewKeyword Then anyChanges = True Dim newAttributeLists = VisitList(node.AttributeLists) If node._attributeLists IsNot newAttributeLists.Node Then anyChanges = True Dim newInitializer = DirectCast(Visit(node.Initializer), ObjectMemberInitializerSyntax) If node.Initializer IsNot newInitializer Then anyChanges = True If anyChanges Then Return New AnonymousObjectCreationExpressionSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newNewKeyword, newAttributeLists.Node, newInitializer) Else Return node End If End Function Public Overrides Function VisitArrayCreationExpression(ByVal node As ArrayCreationExpressionSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newNewKeyword = DirectCast(VisitToken(node.NewKeyword).Node, InternalSyntax.KeywordSyntax) If node.NewKeyword.Node IsNot newNewKeyword Then anyChanges = True Dim newAttributeLists = VisitList(node.AttributeLists) If node._attributeLists IsNot newAttributeLists.Node Then anyChanges = True Dim newType = DirectCast(Visit(node.Type), TypeSyntax) If node.Type IsNot newType Then anyChanges = True Dim newArrayBounds = DirectCast(Visit(node.ArrayBounds), ArgumentListSyntax) If node.ArrayBounds IsNot newArrayBounds Then anyChanges = True Dim newRankSpecifiers = VisitList(node.RankSpecifiers) If node._rankSpecifiers IsNot newRankSpecifiers.Node Then anyChanges = True Dim newInitializer = DirectCast(Visit(node.Initializer), CollectionInitializerSyntax) If node.Initializer IsNot newInitializer Then anyChanges = True If anyChanges Then Return New ArrayCreationExpressionSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newNewKeyword, newAttributeLists.Node, newType, newArrayBounds, newRankSpecifiers.Node, newInitializer) Else Return node End If End Function Public Overrides Function VisitCollectionInitializer(ByVal node As CollectionInitializerSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newOpenBraceToken = DirectCast(VisitToken(node.OpenBraceToken).Node, InternalSyntax.PunctuationSyntax) If node.OpenBraceToken.Node IsNot newOpenBraceToken Then anyChanges = True Dim newInitializers = VisitList(node.Initializers) If node._initializers IsNot newInitializers.Node Then anyChanges = True Dim newCloseBraceToken = DirectCast(VisitToken(node.CloseBraceToken).Node, InternalSyntax.PunctuationSyntax) If node.CloseBraceToken.Node IsNot newCloseBraceToken Then anyChanges = True If anyChanges Then Return New CollectionInitializerSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newOpenBraceToken, newInitializers.Node, newCloseBraceToken) Else Return node End If End Function Public Overrides Function VisitCTypeExpression(ByVal node As CTypeExpressionSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newKeyword = DirectCast(VisitToken(node.Keyword).Node, InternalSyntax.KeywordSyntax) If node.Keyword.Node IsNot newKeyword Then anyChanges = True Dim newOpenParenToken = DirectCast(VisitToken(node.OpenParenToken).Node, InternalSyntax.PunctuationSyntax) If node.OpenParenToken.Node IsNot newOpenParenToken Then anyChanges = True Dim newExpression = DirectCast(Visit(node.Expression), ExpressionSyntax) If node.Expression IsNot newExpression Then anyChanges = True Dim newCommaToken = DirectCast(VisitToken(node.CommaToken).Node, InternalSyntax.PunctuationSyntax) If node.CommaToken.Node IsNot newCommaToken Then anyChanges = True Dim newType = DirectCast(Visit(node.Type), TypeSyntax) If node.Type IsNot newType Then anyChanges = True Dim newCloseParenToken = DirectCast(VisitToken(node.CloseParenToken).Node, InternalSyntax.PunctuationSyntax) If node.CloseParenToken.Node IsNot newCloseParenToken Then anyChanges = True If anyChanges Then Return New CTypeExpressionSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newKeyword, newOpenParenToken, newExpression, newCommaToken, newType, newCloseParenToken) Else Return node End If End Function Public Overrides Function VisitDirectCastExpression(ByVal node As DirectCastExpressionSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newKeyword = DirectCast(VisitToken(node.Keyword).Node, InternalSyntax.KeywordSyntax) If node.Keyword.Node IsNot newKeyword Then anyChanges = True Dim newOpenParenToken = DirectCast(VisitToken(node.OpenParenToken).Node, InternalSyntax.PunctuationSyntax) If node.OpenParenToken.Node IsNot newOpenParenToken Then anyChanges = True Dim newExpression = DirectCast(Visit(node.Expression), ExpressionSyntax) If node.Expression IsNot newExpression Then anyChanges = True Dim newCommaToken = DirectCast(VisitToken(node.CommaToken).Node, InternalSyntax.PunctuationSyntax) If node.CommaToken.Node IsNot newCommaToken Then anyChanges = True Dim newType = DirectCast(Visit(node.Type), TypeSyntax) If node.Type IsNot newType Then anyChanges = True Dim newCloseParenToken = DirectCast(VisitToken(node.CloseParenToken).Node, InternalSyntax.PunctuationSyntax) If node.CloseParenToken.Node IsNot newCloseParenToken Then anyChanges = True If anyChanges Then Return New DirectCastExpressionSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newKeyword, newOpenParenToken, newExpression, newCommaToken, newType, newCloseParenToken) Else Return node End If End Function Public Overrides Function VisitTryCastExpression(ByVal node As TryCastExpressionSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newKeyword = DirectCast(VisitToken(node.Keyword).Node, InternalSyntax.KeywordSyntax) If node.Keyword.Node IsNot newKeyword Then anyChanges = True Dim newOpenParenToken = DirectCast(VisitToken(node.OpenParenToken).Node, InternalSyntax.PunctuationSyntax) If node.OpenParenToken.Node IsNot newOpenParenToken Then anyChanges = True Dim newExpression = DirectCast(Visit(node.Expression), ExpressionSyntax) If node.Expression IsNot newExpression Then anyChanges = True Dim newCommaToken = DirectCast(VisitToken(node.CommaToken).Node, InternalSyntax.PunctuationSyntax) If node.CommaToken.Node IsNot newCommaToken Then anyChanges = True Dim newType = DirectCast(Visit(node.Type), TypeSyntax) If node.Type IsNot newType Then anyChanges = True Dim newCloseParenToken = DirectCast(VisitToken(node.CloseParenToken).Node, InternalSyntax.PunctuationSyntax) If node.CloseParenToken.Node IsNot newCloseParenToken Then anyChanges = True If anyChanges Then Return New TryCastExpressionSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newKeyword, newOpenParenToken, newExpression, newCommaToken, newType, newCloseParenToken) Else Return node End If End Function Public Overrides Function VisitPredefinedCastExpression(ByVal node As PredefinedCastExpressionSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newKeyword = DirectCast(VisitToken(node.Keyword).Node, InternalSyntax.KeywordSyntax) If node.Keyword.Node IsNot newKeyword Then anyChanges = True Dim newOpenParenToken = DirectCast(VisitToken(node.OpenParenToken).Node, InternalSyntax.PunctuationSyntax) If node.OpenParenToken.Node IsNot newOpenParenToken Then anyChanges = True Dim newExpression = DirectCast(Visit(node.Expression), ExpressionSyntax) If node.Expression IsNot newExpression Then anyChanges = True Dim newCloseParenToken = DirectCast(VisitToken(node.CloseParenToken).Node, InternalSyntax.PunctuationSyntax) If node.CloseParenToken.Node IsNot newCloseParenToken Then anyChanges = True If anyChanges Then Return New PredefinedCastExpressionSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newKeyword, newOpenParenToken, newExpression, newCloseParenToken) Else Return node End If End Function Public Overrides Function VisitBinaryExpression(ByVal node As BinaryExpressionSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newLeft = DirectCast(Visit(node.Left), ExpressionSyntax) If node.Left IsNot newLeft Then anyChanges = True Dim newOperatorToken = DirectCast(VisitToken(node.OperatorToken).Node, InternalSyntax.SyntaxToken) If node.OperatorToken.Node IsNot newOperatorToken Then anyChanges = True Dim newRight = DirectCast(Visit(node.Right), ExpressionSyntax) If node.Right IsNot newRight Then anyChanges = True If anyChanges Then Return New BinaryExpressionSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newLeft, newOperatorToken, newRight) Else Return node End If End Function Public Overrides Function VisitUnaryExpression(ByVal node As UnaryExpressionSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newOperatorToken = DirectCast(VisitToken(node.OperatorToken).Node, InternalSyntax.SyntaxToken) If node.OperatorToken.Node IsNot newOperatorToken Then anyChanges = True Dim newOperand = DirectCast(Visit(node.Operand), ExpressionSyntax) If node.Operand IsNot newOperand Then anyChanges = True If anyChanges Then Return New UnaryExpressionSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newOperatorToken, newOperand) Else Return node End If End Function Public Overrides Function VisitBinaryConditionalExpression(ByVal node As BinaryConditionalExpressionSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newIfKeyword = DirectCast(VisitToken(node.IfKeyword).Node, InternalSyntax.KeywordSyntax) If node.IfKeyword.Node IsNot newIfKeyword Then anyChanges = True Dim newOpenParenToken = DirectCast(VisitToken(node.OpenParenToken).Node, InternalSyntax.PunctuationSyntax) If node.OpenParenToken.Node IsNot newOpenParenToken Then anyChanges = True Dim newFirstExpression = DirectCast(Visit(node.FirstExpression), ExpressionSyntax) If node.FirstExpression IsNot newFirstExpression Then anyChanges = True Dim newCommaToken = DirectCast(VisitToken(node.CommaToken).Node, InternalSyntax.PunctuationSyntax) If node.CommaToken.Node IsNot newCommaToken Then anyChanges = True Dim newSecondExpression = DirectCast(Visit(node.SecondExpression), ExpressionSyntax) If node.SecondExpression IsNot newSecondExpression Then anyChanges = True Dim newCloseParenToken = DirectCast(VisitToken(node.CloseParenToken).Node, InternalSyntax.PunctuationSyntax) If node.CloseParenToken.Node IsNot newCloseParenToken Then anyChanges = True If anyChanges Then Return New BinaryConditionalExpressionSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newIfKeyword, newOpenParenToken, newFirstExpression, newCommaToken, newSecondExpression, newCloseParenToken) Else Return node End If End Function Public Overrides Function VisitTernaryConditionalExpression(ByVal node As TernaryConditionalExpressionSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newIfKeyword = DirectCast(VisitToken(node.IfKeyword).Node, InternalSyntax.KeywordSyntax) If node.IfKeyword.Node IsNot newIfKeyword Then anyChanges = True Dim newOpenParenToken = DirectCast(VisitToken(node.OpenParenToken).Node, InternalSyntax.PunctuationSyntax) If node.OpenParenToken.Node IsNot newOpenParenToken Then anyChanges = True Dim newCondition = DirectCast(Visit(node.Condition), ExpressionSyntax) If node.Condition IsNot newCondition Then anyChanges = True Dim newFirstCommaToken = DirectCast(VisitToken(node.FirstCommaToken).Node, InternalSyntax.PunctuationSyntax) If node.FirstCommaToken.Node IsNot newFirstCommaToken Then anyChanges = True Dim newWhenTrue = DirectCast(Visit(node.WhenTrue), ExpressionSyntax) If node.WhenTrue IsNot newWhenTrue Then anyChanges = True Dim newSecondCommaToken = DirectCast(VisitToken(node.SecondCommaToken).Node, InternalSyntax.PunctuationSyntax) If node.SecondCommaToken.Node IsNot newSecondCommaToken Then anyChanges = True Dim newWhenFalse = DirectCast(Visit(node.WhenFalse), ExpressionSyntax) If node.WhenFalse IsNot newWhenFalse Then anyChanges = True Dim newCloseParenToken = DirectCast(VisitToken(node.CloseParenToken).Node, InternalSyntax.PunctuationSyntax) If node.CloseParenToken.Node IsNot newCloseParenToken Then anyChanges = True If anyChanges Then Return New TernaryConditionalExpressionSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newIfKeyword, newOpenParenToken, newCondition, newFirstCommaToken, newWhenTrue, newSecondCommaToken, newWhenFalse, newCloseParenToken) Else Return node End If End Function Public Overrides Function VisitSingleLineLambdaExpression(ByVal node As SingleLineLambdaExpressionSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newSubOrFunctionHeader = DirectCast(Visit(node.SubOrFunctionHeader), LambdaHeaderSyntax) If node.SubOrFunctionHeader IsNot newSubOrFunctionHeader Then anyChanges = True Dim newBody = DirectCast(Visit(node.Body), VisualBasicSyntaxNode) If node.Body IsNot newBody Then anyChanges = True If anyChanges Then Return New SingleLineLambdaExpressionSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newSubOrFunctionHeader, newBody) Else Return node End If End Function Public Overrides Function VisitMultiLineLambdaExpression(ByVal node As MultiLineLambdaExpressionSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newSubOrFunctionHeader = DirectCast(Visit(node.SubOrFunctionHeader), LambdaHeaderSyntax) If node.SubOrFunctionHeader IsNot newSubOrFunctionHeader Then anyChanges = True Dim newStatements = VisitList(node.Statements) If node._statements IsNot newStatements.Node Then anyChanges = True Dim newEndSubOrFunctionStatement = DirectCast(Visit(node.EndSubOrFunctionStatement), EndBlockStatementSyntax) If node.EndSubOrFunctionStatement IsNot newEndSubOrFunctionStatement Then anyChanges = True If anyChanges Then Return New MultiLineLambdaExpressionSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newSubOrFunctionHeader, newStatements.Node, newEndSubOrFunctionStatement) Else Return node End If End Function Public Overrides Function VisitLambdaHeader(ByVal node As LambdaHeaderSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newAttributeLists = VisitList(node.AttributeLists) If node._attributeLists IsNot newAttributeLists.Node Then anyChanges = True Dim newModifiers = VisitList(node.Modifiers) If node.Modifiers.Node IsNot newModifiers.Node Then anyChanges = True Dim newSubOrFunctionKeyword = DirectCast(VisitToken(node.SubOrFunctionKeyword).Node, InternalSyntax.KeywordSyntax) If node.SubOrFunctionKeyword.Node IsNot newSubOrFunctionKeyword Then anyChanges = True Dim newParameterList = DirectCast(Visit(node.ParameterList), ParameterListSyntax) If node.ParameterList IsNot newParameterList Then anyChanges = True Dim newAsClause = DirectCast(Visit(node.AsClause), SimpleAsClauseSyntax) If node.AsClause IsNot newAsClause Then anyChanges = True If anyChanges Then Return New LambdaHeaderSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newAttributeLists.Node, newModifiers.Node, newSubOrFunctionKeyword, newParameterList, newAsClause) Else Return node End If End Function Public Overrides Function VisitArgumentList(ByVal node As ArgumentListSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newOpenParenToken = DirectCast(VisitToken(node.OpenParenToken).Node, InternalSyntax.PunctuationSyntax) If node.OpenParenToken.Node IsNot newOpenParenToken Then anyChanges = True Dim newArguments = VisitList(node.Arguments) If node._arguments IsNot newArguments.Node Then anyChanges = True Dim newCloseParenToken = DirectCast(VisitToken(node.CloseParenToken).Node, InternalSyntax.PunctuationSyntax) If node.CloseParenToken.Node IsNot newCloseParenToken Then anyChanges = True If anyChanges Then Return New ArgumentListSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newOpenParenToken, newArguments.Node, newCloseParenToken) Else Return node End If End Function Public Overrides Function VisitOmittedArgument(ByVal node As OmittedArgumentSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newEmpty = DirectCast(VisitToken(node.Empty).Node, InternalSyntax.PunctuationSyntax) If node.Empty.Node IsNot newEmpty Then anyChanges = True If anyChanges Then Return New OmittedArgumentSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newEmpty) Else Return node End If End Function Public Overrides Function VisitSimpleArgument(ByVal node As SimpleArgumentSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newNameColonEquals = DirectCast(Visit(node.NameColonEquals), NameColonEqualsSyntax) If node.NameColonEquals IsNot newNameColonEquals Then anyChanges = True Dim newExpression = DirectCast(Visit(node.Expression), ExpressionSyntax) If node.Expression IsNot newExpression Then anyChanges = True If anyChanges Then Return New SimpleArgumentSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newNameColonEquals, newExpression) Else Return node End If End Function Public Overrides Function VisitNameColonEquals(ByVal node As NameColonEqualsSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newName = DirectCast(Visit(node.Name), IdentifierNameSyntax) If node.Name IsNot newName Then anyChanges = True Dim newColonEqualsToken = DirectCast(VisitToken(node.ColonEqualsToken).Node, InternalSyntax.PunctuationSyntax) If node.ColonEqualsToken.Node IsNot newColonEqualsToken Then anyChanges = True If anyChanges Then Return New NameColonEqualsSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newName, newColonEqualsToken) Else Return node End If End Function Public Overrides Function VisitRangeArgument(ByVal node As RangeArgumentSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newLowerBound = DirectCast(Visit(node.LowerBound), ExpressionSyntax) If node.LowerBound IsNot newLowerBound Then anyChanges = True Dim newToKeyword = DirectCast(VisitToken(node.ToKeyword).Node, InternalSyntax.KeywordSyntax) If node.ToKeyword.Node IsNot newToKeyword Then anyChanges = True Dim newUpperBound = DirectCast(Visit(node.UpperBound), ExpressionSyntax) If node.UpperBound IsNot newUpperBound Then anyChanges = True If anyChanges Then Return New RangeArgumentSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newLowerBound, newToKeyword, newUpperBound) Else Return node End If End Function Public Overrides Function VisitQueryExpression(ByVal node As QueryExpressionSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newClauses = VisitList(node.Clauses) If node._clauses IsNot newClauses.Node Then anyChanges = True If anyChanges Then Return New QueryExpressionSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newClauses.Node) Else Return node End If End Function Public Overrides Function VisitCollectionRangeVariable(ByVal node As CollectionRangeVariableSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newIdentifier = DirectCast(Visit(node.Identifier), ModifiedIdentifierSyntax) If node.Identifier IsNot newIdentifier Then anyChanges = True Dim newAsClause = DirectCast(Visit(node.AsClause), SimpleAsClauseSyntax) If node.AsClause IsNot newAsClause Then anyChanges = True Dim newInKeyword = DirectCast(VisitToken(node.InKeyword).Node, InternalSyntax.KeywordSyntax) If node.InKeyword.Node IsNot newInKeyword Then anyChanges = True Dim newExpression = DirectCast(Visit(node.Expression), ExpressionSyntax) If node.Expression IsNot newExpression Then anyChanges = True If anyChanges Then Return New CollectionRangeVariableSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newIdentifier, newAsClause, newInKeyword, newExpression) Else Return node End If End Function Public Overrides Function VisitExpressionRangeVariable(ByVal node As ExpressionRangeVariableSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newNameEquals = DirectCast(Visit(node.NameEquals), VariableNameEqualsSyntax) If node.NameEquals IsNot newNameEquals Then anyChanges = True Dim newExpression = DirectCast(Visit(node.Expression), ExpressionSyntax) If node.Expression IsNot newExpression Then anyChanges = True If anyChanges Then Return New ExpressionRangeVariableSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newNameEquals, newExpression) Else Return node End If End Function Public Overrides Function VisitAggregationRangeVariable(ByVal node As AggregationRangeVariableSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newNameEquals = DirectCast(Visit(node.NameEquals), VariableNameEqualsSyntax) If node.NameEquals IsNot newNameEquals Then anyChanges = True Dim newAggregation = DirectCast(Visit(node.Aggregation), AggregationSyntax) If node.Aggregation IsNot newAggregation Then anyChanges = True If anyChanges Then Return New AggregationRangeVariableSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newNameEquals, newAggregation) Else Return node End If End Function Public Overrides Function VisitVariableNameEquals(ByVal node As VariableNameEqualsSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newIdentifier = DirectCast(Visit(node.Identifier), ModifiedIdentifierSyntax) If node.Identifier IsNot newIdentifier Then anyChanges = True Dim newAsClause = DirectCast(Visit(node.AsClause), SimpleAsClauseSyntax) If node.AsClause IsNot newAsClause Then anyChanges = True Dim newEqualsToken = DirectCast(VisitToken(node.EqualsToken).Node, InternalSyntax.PunctuationSyntax) If node.EqualsToken.Node IsNot newEqualsToken Then anyChanges = True If anyChanges Then Return New VariableNameEqualsSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newIdentifier, newAsClause, newEqualsToken) Else Return node End If End Function Public Overrides Function VisitFunctionAggregation(ByVal node As FunctionAggregationSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newFunctionName = DirectCast(VisitToken(node.FunctionName).Node, InternalSyntax.IdentifierTokenSyntax) If node.FunctionName.Node IsNot newFunctionName Then anyChanges = True Dim newOpenParenToken = DirectCast(VisitToken(node.OpenParenToken).Node, InternalSyntax.PunctuationSyntax) If node.OpenParenToken.Node IsNot newOpenParenToken Then anyChanges = True Dim newArgument = DirectCast(Visit(node.Argument), ExpressionSyntax) If node.Argument IsNot newArgument Then anyChanges = True Dim newCloseParenToken = DirectCast(VisitToken(node.CloseParenToken).Node, InternalSyntax.PunctuationSyntax) If node.CloseParenToken.Node IsNot newCloseParenToken Then anyChanges = True If anyChanges Then Return New FunctionAggregationSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newFunctionName, newOpenParenToken, newArgument, newCloseParenToken) Else Return node End If End Function Public Overrides Function VisitGroupAggregation(ByVal node As GroupAggregationSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newGroupKeyword = DirectCast(VisitToken(node.GroupKeyword).Node, InternalSyntax.KeywordSyntax) If node.GroupKeyword.Node IsNot newGroupKeyword Then anyChanges = True If anyChanges Then Return New GroupAggregationSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newGroupKeyword) Else Return node End If End Function Public Overrides Function VisitFromClause(ByVal node As FromClauseSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newFromKeyword = DirectCast(VisitToken(node.FromKeyword).Node, InternalSyntax.KeywordSyntax) If node.FromKeyword.Node IsNot newFromKeyword Then anyChanges = True Dim newVariables = VisitList(node.Variables) If node._variables IsNot newVariables.Node Then anyChanges = True If anyChanges Then Return New FromClauseSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newFromKeyword, newVariables.Node) Else Return node End If End Function Public Overrides Function VisitLetClause(ByVal node As LetClauseSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newLetKeyword = DirectCast(VisitToken(node.LetKeyword).Node, InternalSyntax.KeywordSyntax) If node.LetKeyword.Node IsNot newLetKeyword Then anyChanges = True Dim newVariables = VisitList(node.Variables) If node._variables IsNot newVariables.Node Then anyChanges = True If anyChanges Then Return New LetClauseSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newLetKeyword, newVariables.Node) Else Return node End If End Function Public Overrides Function VisitAggregateClause(ByVal node As AggregateClauseSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newAggregateKeyword = DirectCast(VisitToken(node.AggregateKeyword).Node, InternalSyntax.KeywordSyntax) If node.AggregateKeyword.Node IsNot newAggregateKeyword Then anyChanges = True Dim newVariables = VisitList(node.Variables) If node._variables IsNot newVariables.Node Then anyChanges = True Dim newAdditionalQueryOperators = VisitList(node.AdditionalQueryOperators) If node._additionalQueryOperators IsNot newAdditionalQueryOperators.Node Then anyChanges = True Dim newIntoKeyword = DirectCast(VisitToken(node.IntoKeyword).Node, InternalSyntax.KeywordSyntax) If node.IntoKeyword.Node IsNot newIntoKeyword Then anyChanges = True Dim newAggregationVariables = VisitList(node.AggregationVariables) If node._aggregationVariables IsNot newAggregationVariables.Node Then anyChanges = True If anyChanges Then Return New AggregateClauseSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newAggregateKeyword, newVariables.Node, newAdditionalQueryOperators.Node, newIntoKeyword, newAggregationVariables.Node) Else Return node End If End Function Public Overrides Function VisitDistinctClause(ByVal node As DistinctClauseSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newDistinctKeyword = DirectCast(VisitToken(node.DistinctKeyword).Node, InternalSyntax.KeywordSyntax) If node.DistinctKeyword.Node IsNot newDistinctKeyword Then anyChanges = True If anyChanges Then Return New DistinctClauseSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newDistinctKeyword) Else Return node End If End Function Public Overrides Function VisitWhereClause(ByVal node As WhereClauseSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newWhereKeyword = DirectCast(VisitToken(node.WhereKeyword).Node, InternalSyntax.KeywordSyntax) If node.WhereKeyword.Node IsNot newWhereKeyword Then anyChanges = True Dim newCondition = DirectCast(Visit(node.Condition), ExpressionSyntax) If node.Condition IsNot newCondition Then anyChanges = True If anyChanges Then Return New WhereClauseSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newWhereKeyword, newCondition) Else Return node End If End Function Public Overrides Function VisitPartitionWhileClause(ByVal node As PartitionWhileClauseSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newSkipOrTakeKeyword = DirectCast(VisitToken(node.SkipOrTakeKeyword).Node, InternalSyntax.KeywordSyntax) If node.SkipOrTakeKeyword.Node IsNot newSkipOrTakeKeyword Then anyChanges = True Dim newWhileKeyword = DirectCast(VisitToken(node.WhileKeyword).Node, InternalSyntax.KeywordSyntax) If node.WhileKeyword.Node IsNot newWhileKeyword Then anyChanges = True Dim newCondition = DirectCast(Visit(node.Condition), ExpressionSyntax) If node.Condition IsNot newCondition Then anyChanges = True If anyChanges Then Return New PartitionWhileClauseSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newSkipOrTakeKeyword, newWhileKeyword, newCondition) Else Return node End If End Function Public Overrides Function VisitPartitionClause(ByVal node As PartitionClauseSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newSkipOrTakeKeyword = DirectCast(VisitToken(node.SkipOrTakeKeyword).Node, InternalSyntax.KeywordSyntax) If node.SkipOrTakeKeyword.Node IsNot newSkipOrTakeKeyword Then anyChanges = True Dim newCount = DirectCast(Visit(node.Count), ExpressionSyntax) If node.Count IsNot newCount Then anyChanges = True If anyChanges Then Return New PartitionClauseSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newSkipOrTakeKeyword, newCount) Else Return node End If End Function Public Overrides Function VisitGroupByClause(ByVal node As GroupByClauseSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newGroupKeyword = DirectCast(VisitToken(node.GroupKeyword).Node, InternalSyntax.KeywordSyntax) If node.GroupKeyword.Node IsNot newGroupKeyword Then anyChanges = True Dim newItems = VisitList(node.Items) If node._items IsNot newItems.Node Then anyChanges = True Dim newByKeyword = DirectCast(VisitToken(node.ByKeyword).Node, InternalSyntax.KeywordSyntax) If node.ByKeyword.Node IsNot newByKeyword Then anyChanges = True Dim newKeys = VisitList(node.Keys) If node._keys IsNot newKeys.Node Then anyChanges = True Dim newIntoKeyword = DirectCast(VisitToken(node.IntoKeyword).Node, InternalSyntax.KeywordSyntax) If node.IntoKeyword.Node IsNot newIntoKeyword Then anyChanges = True Dim newAggregationVariables = VisitList(node.AggregationVariables) If node._aggregationVariables IsNot newAggregationVariables.Node Then anyChanges = True If anyChanges Then Return New GroupByClauseSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newGroupKeyword, newItems.Node, newByKeyword, newKeys.Node, newIntoKeyword, newAggregationVariables.Node) Else Return node End If End Function Public Overrides Function VisitJoinCondition(ByVal node As JoinConditionSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newLeft = DirectCast(Visit(node.Left), ExpressionSyntax) If node.Left IsNot newLeft Then anyChanges = True Dim newEqualsKeyword = DirectCast(VisitToken(node.EqualsKeyword).Node, InternalSyntax.KeywordSyntax) If node.EqualsKeyword.Node IsNot newEqualsKeyword Then anyChanges = True Dim newRight = DirectCast(Visit(node.Right), ExpressionSyntax) If node.Right IsNot newRight Then anyChanges = True If anyChanges Then Return New JoinConditionSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newLeft, newEqualsKeyword, newRight) Else Return node End If End Function Public Overrides Function VisitSimpleJoinClause(ByVal node As SimpleJoinClauseSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newJoinKeyword = DirectCast(VisitToken(node.JoinKeyword).Node, InternalSyntax.KeywordSyntax) If node.JoinKeyword.Node IsNot newJoinKeyword Then anyChanges = True Dim newJoinedVariables = VisitList(node.JoinedVariables) If node._joinedVariables IsNot newJoinedVariables.Node Then anyChanges = True Dim newAdditionalJoins = VisitList(node.AdditionalJoins) If node._additionalJoins IsNot newAdditionalJoins.Node Then anyChanges = True Dim newOnKeyword = DirectCast(VisitToken(node.OnKeyword).Node, InternalSyntax.KeywordSyntax) If node.OnKeyword.Node IsNot newOnKeyword Then anyChanges = True Dim newJoinConditions = VisitList(node.JoinConditions) If node._joinConditions IsNot newJoinConditions.Node Then anyChanges = True If anyChanges Then Return New SimpleJoinClauseSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newJoinKeyword, newJoinedVariables.Node, newAdditionalJoins.Node, newOnKeyword, newJoinConditions.Node) Else Return node End If End Function Public Overrides Function VisitGroupJoinClause(ByVal node As GroupJoinClauseSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newGroupKeyword = DirectCast(VisitToken(node.GroupKeyword).Node, InternalSyntax.KeywordSyntax) If node.GroupKeyword.Node IsNot newGroupKeyword Then anyChanges = True Dim newJoinKeyword = DirectCast(VisitToken(node.JoinKeyword).Node, InternalSyntax.KeywordSyntax) If node.JoinKeyword.Node IsNot newJoinKeyword Then anyChanges = True Dim newJoinedVariables = VisitList(node.JoinedVariables) If node._joinedVariables IsNot newJoinedVariables.Node Then anyChanges = True Dim newAdditionalJoins = VisitList(node.AdditionalJoins) If node._additionalJoins IsNot newAdditionalJoins.Node Then anyChanges = True Dim newOnKeyword = DirectCast(VisitToken(node.OnKeyword).Node, InternalSyntax.KeywordSyntax) If node.OnKeyword.Node IsNot newOnKeyword Then anyChanges = True Dim newJoinConditions = VisitList(node.JoinConditions) If node._joinConditions IsNot newJoinConditions.Node Then anyChanges = True Dim newIntoKeyword = DirectCast(VisitToken(node.IntoKeyword).Node, InternalSyntax.KeywordSyntax) If node.IntoKeyword.Node IsNot newIntoKeyword Then anyChanges = True Dim newAggregationVariables = VisitList(node.AggregationVariables) If node._aggregationVariables IsNot newAggregationVariables.Node Then anyChanges = True If anyChanges Then Return New GroupJoinClauseSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newGroupKeyword, newJoinKeyword, newJoinedVariables.Node, newAdditionalJoins.Node, newOnKeyword, newJoinConditions.Node, newIntoKeyword, newAggregationVariables.Node) Else Return node End If End Function Public Overrides Function VisitOrderByClause(ByVal node As OrderByClauseSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newOrderKeyword = DirectCast(VisitToken(node.OrderKeyword).Node, InternalSyntax.KeywordSyntax) If node.OrderKeyword.Node IsNot newOrderKeyword Then anyChanges = True Dim newByKeyword = DirectCast(VisitToken(node.ByKeyword).Node, InternalSyntax.KeywordSyntax) If node.ByKeyword.Node IsNot newByKeyword Then anyChanges = True Dim newOrderings = VisitList(node.Orderings) If node._orderings IsNot newOrderings.Node Then anyChanges = True If anyChanges Then Return New OrderByClauseSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newOrderKeyword, newByKeyword, newOrderings.Node) Else Return node End If End Function Public Overrides Function VisitOrdering(ByVal node As OrderingSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newExpression = DirectCast(Visit(node.Expression), ExpressionSyntax) If node.Expression IsNot newExpression Then anyChanges = True Dim newAscendingOrDescendingKeyword = DirectCast(VisitToken(node.AscendingOrDescendingKeyword).Node, InternalSyntax.KeywordSyntax) If node.AscendingOrDescendingKeyword.Node IsNot newAscendingOrDescendingKeyword Then anyChanges = True If anyChanges Then Return New OrderingSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newExpression, newAscendingOrDescendingKeyword) Else Return node End If End Function Public Overrides Function VisitSelectClause(ByVal node As SelectClauseSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newSelectKeyword = DirectCast(VisitToken(node.SelectKeyword).Node, InternalSyntax.KeywordSyntax) If node.SelectKeyword.Node IsNot newSelectKeyword Then anyChanges = True Dim newVariables = VisitList(node.Variables) If node._variables IsNot newVariables.Node Then anyChanges = True If anyChanges Then Return New SelectClauseSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newSelectKeyword, newVariables.Node) Else Return node End If End Function Public Overrides Function VisitXmlDocument(ByVal node As XmlDocumentSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newDeclaration = DirectCast(Visit(node.Declaration), XmlDeclarationSyntax) If node.Declaration IsNot newDeclaration Then anyChanges = True Dim newPrecedingMisc = VisitList(node.PrecedingMisc) If node._precedingMisc IsNot newPrecedingMisc.Node Then anyChanges = True Dim newRoot = DirectCast(Visit(node.Root), XmlNodeSyntax) If node.Root IsNot newRoot Then anyChanges = True Dim newFollowingMisc = VisitList(node.FollowingMisc) If node._followingMisc IsNot newFollowingMisc.Node Then anyChanges = True If anyChanges Then Return New XmlDocumentSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newDeclaration, newPrecedingMisc.Node, newRoot, newFollowingMisc.Node) Else Return node End If End Function Public Overrides Function VisitXmlDeclaration(ByVal node As XmlDeclarationSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newLessThanQuestionToken = DirectCast(VisitToken(node.LessThanQuestionToken).Node, InternalSyntax.PunctuationSyntax) If node.LessThanQuestionToken.Node IsNot newLessThanQuestionToken Then anyChanges = True Dim newXmlKeyword = DirectCast(VisitToken(node.XmlKeyword).Node, InternalSyntax.KeywordSyntax) If node.XmlKeyword.Node IsNot newXmlKeyword Then anyChanges = True Dim newVersion = DirectCast(Visit(node.Version), XmlDeclarationOptionSyntax) If node.Version IsNot newVersion Then anyChanges = True Dim newEncoding = DirectCast(Visit(node.Encoding), XmlDeclarationOptionSyntax) If node.Encoding IsNot newEncoding Then anyChanges = True Dim newStandalone = DirectCast(Visit(node.Standalone), XmlDeclarationOptionSyntax) If node.Standalone IsNot newStandalone Then anyChanges = True Dim newQuestionGreaterThanToken = DirectCast(VisitToken(node.QuestionGreaterThanToken).Node, InternalSyntax.PunctuationSyntax) If node.QuestionGreaterThanToken.Node IsNot newQuestionGreaterThanToken Then anyChanges = True If anyChanges Then Return New XmlDeclarationSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newLessThanQuestionToken, newXmlKeyword, newVersion, newEncoding, newStandalone, newQuestionGreaterThanToken) Else Return node End If End Function Public Overrides Function VisitXmlDeclarationOption(ByVal node As XmlDeclarationOptionSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newName = DirectCast(VisitToken(node.Name).Node, InternalSyntax.XmlNameTokenSyntax) If node.Name.Node IsNot newName Then anyChanges = True Dim newEquals = DirectCast(VisitToken(node.Equals).Node, InternalSyntax.PunctuationSyntax) If node.Equals.Node IsNot newEquals Then anyChanges = True Dim newValue = DirectCast(Visit(node.Value), XmlStringSyntax) If node.Value IsNot newValue Then anyChanges = True If anyChanges Then Return New XmlDeclarationOptionSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newName, newEquals, newValue) Else Return node End If End Function Public Overrides Function VisitXmlElement(ByVal node As XmlElementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newStartTag = DirectCast(Visit(node.StartTag), XmlElementStartTagSyntax) If node.StartTag IsNot newStartTag Then anyChanges = True Dim newContent = VisitList(node.Content) If node._content IsNot newContent.Node Then anyChanges = True Dim newEndTag = DirectCast(Visit(node.EndTag), XmlElementEndTagSyntax) If node.EndTag IsNot newEndTag Then anyChanges = True If anyChanges Then Return New XmlElementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newStartTag, newContent.Node, newEndTag) Else Return node End If End Function Public Overrides Function VisitXmlText(ByVal node As XmlTextSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newTextTokens = VisitList(node.TextTokens) If node.TextTokens.Node IsNot newTextTokens.Node Then anyChanges = True If anyChanges Then Return New XmlTextSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newTextTokens.Node) Else Return node End If End Function Public Overrides Function VisitXmlElementStartTag(ByVal node As XmlElementStartTagSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newLessThanToken = DirectCast(VisitToken(node.LessThanToken).Node, InternalSyntax.PunctuationSyntax) If node.LessThanToken.Node IsNot newLessThanToken Then anyChanges = True Dim newName = DirectCast(Visit(node.Name), XmlNodeSyntax) If node.Name IsNot newName Then anyChanges = True Dim newAttributes = VisitList(node.Attributes) If node._attributes IsNot newAttributes.Node Then anyChanges = True Dim newGreaterThanToken = DirectCast(VisitToken(node.GreaterThanToken).Node, InternalSyntax.PunctuationSyntax) If node.GreaterThanToken.Node IsNot newGreaterThanToken Then anyChanges = True If anyChanges Then Return New XmlElementStartTagSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newLessThanToken, newName, newAttributes.Node, newGreaterThanToken) Else Return node End If End Function Public Overrides Function VisitXmlElementEndTag(ByVal node As XmlElementEndTagSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newLessThanSlashToken = DirectCast(VisitToken(node.LessThanSlashToken).Node, InternalSyntax.PunctuationSyntax) If node.LessThanSlashToken.Node IsNot newLessThanSlashToken Then anyChanges = True Dim newName = DirectCast(Visit(node.Name), XmlNameSyntax) If node.Name IsNot newName Then anyChanges = True Dim newGreaterThanToken = DirectCast(VisitToken(node.GreaterThanToken).Node, InternalSyntax.PunctuationSyntax) If node.GreaterThanToken.Node IsNot newGreaterThanToken Then anyChanges = True If anyChanges Then Return New XmlElementEndTagSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newLessThanSlashToken, newName, newGreaterThanToken) Else Return node End If End Function Public Overrides Function VisitXmlEmptyElement(ByVal node As XmlEmptyElementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newLessThanToken = DirectCast(VisitToken(node.LessThanToken).Node, InternalSyntax.PunctuationSyntax) If node.LessThanToken.Node IsNot newLessThanToken Then anyChanges = True Dim newName = DirectCast(Visit(node.Name), XmlNodeSyntax) If node.Name IsNot newName Then anyChanges = True Dim newAttributes = VisitList(node.Attributes) If node._attributes IsNot newAttributes.Node Then anyChanges = True Dim newSlashGreaterThanToken = DirectCast(VisitToken(node.SlashGreaterThanToken).Node, InternalSyntax.PunctuationSyntax) If node.SlashGreaterThanToken.Node IsNot newSlashGreaterThanToken Then anyChanges = True If anyChanges Then Return New XmlEmptyElementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newLessThanToken, newName, newAttributes.Node, newSlashGreaterThanToken) Else Return node End If End Function Public Overrides Function VisitXmlAttribute(ByVal node As XmlAttributeSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newName = DirectCast(Visit(node.Name), XmlNodeSyntax) If node.Name IsNot newName Then anyChanges = True Dim newEqualsToken = DirectCast(VisitToken(node.EqualsToken).Node, InternalSyntax.PunctuationSyntax) If node.EqualsToken.Node IsNot newEqualsToken Then anyChanges = True Dim newValue = DirectCast(Visit(node.Value), XmlNodeSyntax) If node.Value IsNot newValue Then anyChanges = True If anyChanges Then Return New XmlAttributeSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newName, newEqualsToken, newValue) Else Return node End If End Function Public Overrides Function VisitXmlString(ByVal node As XmlStringSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newStartQuoteToken = DirectCast(VisitToken(node.StartQuoteToken).Node, InternalSyntax.PunctuationSyntax) If node.StartQuoteToken.Node IsNot newStartQuoteToken Then anyChanges = True Dim newTextTokens = VisitList(node.TextTokens) If node.TextTokens.Node IsNot newTextTokens.Node Then anyChanges = True Dim newEndQuoteToken = DirectCast(VisitToken(node.EndQuoteToken).Node, InternalSyntax.PunctuationSyntax) If node.EndQuoteToken.Node IsNot newEndQuoteToken Then anyChanges = True If anyChanges Then Return New XmlStringSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newStartQuoteToken, newTextTokens.Node, newEndQuoteToken) Else Return node End If End Function Public Overrides Function VisitXmlPrefixName(ByVal node As XmlPrefixNameSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newName = DirectCast(VisitToken(node.Name).Node, InternalSyntax.XmlNameTokenSyntax) If node.Name.Node IsNot newName Then anyChanges = True If anyChanges Then Return New XmlPrefixNameSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newName) Else Return node End If End Function Public Overrides Function VisitXmlName(ByVal node As XmlNameSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newPrefix = DirectCast(Visit(node.Prefix), XmlPrefixSyntax) If node.Prefix IsNot newPrefix Then anyChanges = True Dim newLocalName = DirectCast(VisitToken(node.LocalName).Node, InternalSyntax.XmlNameTokenSyntax) If node.LocalName.Node IsNot newLocalName Then anyChanges = True If anyChanges Then Return New XmlNameSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newPrefix, newLocalName) Else Return node End If End Function Public Overrides Function VisitXmlBracketedName(ByVal node As XmlBracketedNameSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newLessThanToken = DirectCast(VisitToken(node.LessThanToken).Node, InternalSyntax.PunctuationSyntax) If node.LessThanToken.Node IsNot newLessThanToken Then anyChanges = True Dim newName = DirectCast(Visit(node.Name), XmlNameSyntax) If node.Name IsNot newName Then anyChanges = True Dim newGreaterThanToken = DirectCast(VisitToken(node.GreaterThanToken).Node, InternalSyntax.PunctuationSyntax) If node.GreaterThanToken.Node IsNot newGreaterThanToken Then anyChanges = True If anyChanges Then Return New XmlBracketedNameSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newLessThanToken, newName, newGreaterThanToken) Else Return node End If End Function Public Overrides Function VisitXmlPrefix(ByVal node As XmlPrefixSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newName = DirectCast(VisitToken(node.Name).Node, InternalSyntax.XmlNameTokenSyntax) If node.Name.Node IsNot newName Then anyChanges = True Dim newColonToken = DirectCast(VisitToken(node.ColonToken).Node, InternalSyntax.PunctuationSyntax) If node.ColonToken.Node IsNot newColonToken Then anyChanges = True If anyChanges Then Return New XmlPrefixSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newName, newColonToken) Else Return node End If End Function Public Overrides Function VisitXmlComment(ByVal node As XmlCommentSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newLessThanExclamationMinusMinusToken = DirectCast(VisitToken(node.LessThanExclamationMinusMinusToken).Node, InternalSyntax.PunctuationSyntax) If node.LessThanExclamationMinusMinusToken.Node IsNot newLessThanExclamationMinusMinusToken Then anyChanges = True Dim newTextTokens = VisitList(node.TextTokens) If node.TextTokens.Node IsNot newTextTokens.Node Then anyChanges = True Dim newMinusMinusGreaterThanToken = DirectCast(VisitToken(node.MinusMinusGreaterThanToken).Node, InternalSyntax.PunctuationSyntax) If node.MinusMinusGreaterThanToken.Node IsNot newMinusMinusGreaterThanToken Then anyChanges = True If anyChanges Then Return New XmlCommentSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newLessThanExclamationMinusMinusToken, newTextTokens.Node, newMinusMinusGreaterThanToken) Else Return node End If End Function Public Overrides Function VisitXmlProcessingInstruction(ByVal node As XmlProcessingInstructionSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newLessThanQuestionToken = DirectCast(VisitToken(node.LessThanQuestionToken).Node, InternalSyntax.PunctuationSyntax) If node.LessThanQuestionToken.Node IsNot newLessThanQuestionToken Then anyChanges = True Dim newName = DirectCast(VisitToken(node.Name).Node, InternalSyntax.XmlNameTokenSyntax) If node.Name.Node IsNot newName Then anyChanges = True Dim newTextTokens = VisitList(node.TextTokens) If node.TextTokens.Node IsNot newTextTokens.Node Then anyChanges = True Dim newQuestionGreaterThanToken = DirectCast(VisitToken(node.QuestionGreaterThanToken).Node, InternalSyntax.PunctuationSyntax) If node.QuestionGreaterThanToken.Node IsNot newQuestionGreaterThanToken Then anyChanges = True If anyChanges Then Return New XmlProcessingInstructionSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newLessThanQuestionToken, newName, newTextTokens.Node, newQuestionGreaterThanToken) Else Return node End If End Function Public Overrides Function VisitXmlCDataSection(ByVal node As XmlCDataSectionSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newBeginCDataToken = DirectCast(VisitToken(node.BeginCDataToken).Node, InternalSyntax.PunctuationSyntax) If node.BeginCDataToken.Node IsNot newBeginCDataToken Then anyChanges = True Dim newTextTokens = VisitList(node.TextTokens) If node.TextTokens.Node IsNot newTextTokens.Node Then anyChanges = True Dim newEndCDataToken = DirectCast(VisitToken(node.EndCDataToken).Node, InternalSyntax.PunctuationSyntax) If node.EndCDataToken.Node IsNot newEndCDataToken Then anyChanges = True If anyChanges Then Return New XmlCDataSectionSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newBeginCDataToken, newTextTokens.Node, newEndCDataToken) Else Return node End If End Function Public Overrides Function VisitXmlEmbeddedExpression(ByVal node As XmlEmbeddedExpressionSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newLessThanPercentEqualsToken = DirectCast(VisitToken(node.LessThanPercentEqualsToken).Node, InternalSyntax.PunctuationSyntax) If node.LessThanPercentEqualsToken.Node IsNot newLessThanPercentEqualsToken Then anyChanges = True Dim newExpression = DirectCast(Visit(node.Expression), ExpressionSyntax) If node.Expression IsNot newExpression Then anyChanges = True Dim newPercentGreaterThanToken = DirectCast(VisitToken(node.PercentGreaterThanToken).Node, InternalSyntax.PunctuationSyntax) If node.PercentGreaterThanToken.Node IsNot newPercentGreaterThanToken Then anyChanges = True If anyChanges Then Return New XmlEmbeddedExpressionSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newLessThanPercentEqualsToken, newExpression, newPercentGreaterThanToken) Else Return node End If End Function Public Overrides Function VisitArrayType(ByVal node As ArrayTypeSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newElementType = DirectCast(Visit(node.ElementType), TypeSyntax) If node.ElementType IsNot newElementType Then anyChanges = True Dim newRankSpecifiers = VisitList(node.RankSpecifiers) If node._rankSpecifiers IsNot newRankSpecifiers.Node Then anyChanges = True If anyChanges Then Return New ArrayTypeSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newElementType, newRankSpecifiers.Node) Else Return node End If End Function Public Overrides Function VisitNullableType(ByVal node As NullableTypeSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newElementType = DirectCast(Visit(node.ElementType), TypeSyntax) If node.ElementType IsNot newElementType Then anyChanges = True Dim newQuestionMarkToken = DirectCast(VisitToken(node.QuestionMarkToken).Node, InternalSyntax.PunctuationSyntax) If node.QuestionMarkToken.Node IsNot newQuestionMarkToken Then anyChanges = True If anyChanges Then Return New NullableTypeSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newElementType, newQuestionMarkToken) Else Return node End If End Function Public Overrides Function VisitPredefinedType(ByVal node As PredefinedTypeSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newKeyword = DirectCast(VisitToken(node.Keyword).Node, InternalSyntax.KeywordSyntax) If node.Keyword.Node IsNot newKeyword Then anyChanges = True If anyChanges Then Return New PredefinedTypeSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newKeyword) Else Return node End If End Function Public Overrides Function VisitIdentifierName(ByVal node As IdentifierNameSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newIdentifier = DirectCast(VisitToken(node.Identifier).Node, InternalSyntax.IdentifierTokenSyntax) If node.Identifier.Node IsNot newIdentifier Then anyChanges = True If anyChanges Then Return New IdentifierNameSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newIdentifier) Else Return node End If End Function Public Overrides Function VisitGenericName(ByVal node As GenericNameSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newIdentifier = DirectCast(VisitToken(node.Identifier).Node, InternalSyntax.IdentifierTokenSyntax) If node.Identifier.Node IsNot newIdentifier Then anyChanges = True Dim newTypeArgumentList = DirectCast(Visit(node.TypeArgumentList), TypeArgumentListSyntax) If node.TypeArgumentList IsNot newTypeArgumentList Then anyChanges = True If anyChanges Then Return New GenericNameSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newIdentifier, newTypeArgumentList) Else Return node End If End Function Public Overrides Function VisitQualifiedName(ByVal node As QualifiedNameSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newLeft = DirectCast(Visit(node.Left), NameSyntax) If node.Left IsNot newLeft Then anyChanges = True Dim newDotToken = DirectCast(VisitToken(node.DotToken).Node, InternalSyntax.PunctuationSyntax) If node.DotToken.Node IsNot newDotToken Then anyChanges = True Dim newRight = DirectCast(Visit(node.Right), SimpleNameSyntax) If node.Right IsNot newRight Then anyChanges = True If anyChanges Then Return New QualifiedNameSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newLeft, newDotToken, newRight) Else Return node End If End Function Public Overrides Function VisitGlobalName(ByVal node As GlobalNameSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newGlobalKeyword = DirectCast(VisitToken(node.GlobalKeyword).Node, InternalSyntax.KeywordSyntax) If node.GlobalKeyword.Node IsNot newGlobalKeyword Then anyChanges = True If anyChanges Then Return New GlobalNameSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newGlobalKeyword) Else Return node End If End Function Public Overrides Function VisitTypeArgumentList(ByVal node As TypeArgumentListSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newOpenParenToken = DirectCast(VisitToken(node.OpenParenToken).Node, InternalSyntax.PunctuationSyntax) If node.OpenParenToken.Node IsNot newOpenParenToken Then anyChanges = True Dim newOfKeyword = DirectCast(VisitToken(node.OfKeyword).Node, InternalSyntax.KeywordSyntax) If node.OfKeyword.Node IsNot newOfKeyword Then anyChanges = True Dim newArguments = VisitList(node.Arguments) If node._arguments IsNot newArguments.Node Then anyChanges = True Dim newCloseParenToken = DirectCast(VisitToken(node.CloseParenToken).Node, InternalSyntax.PunctuationSyntax) If node.CloseParenToken.Node IsNot newCloseParenToken Then anyChanges = True If anyChanges Then Return New TypeArgumentListSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newOpenParenToken, newOfKeyword, newArguments.Node, newCloseParenToken) Else Return node End If End Function Public Overrides Function VisitCrefReference(ByVal node As CrefReferenceSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newName = DirectCast(Visit(node.Name), TypeSyntax) If node.Name IsNot newName Then anyChanges = True Dim newSignature = DirectCast(Visit(node.Signature), CrefSignatureSyntax) If node.Signature IsNot newSignature Then anyChanges = True Dim newAsClause = DirectCast(Visit(node.AsClause), SimpleAsClauseSyntax) If node.AsClause IsNot newAsClause Then anyChanges = True If anyChanges Then Return New CrefReferenceSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newName, newSignature, newAsClause) Else Return node End If End Function Public Overrides Function VisitCrefSignature(ByVal node As CrefSignatureSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newOpenParenToken = DirectCast(VisitToken(node.OpenParenToken).Node, InternalSyntax.PunctuationSyntax) If node.OpenParenToken.Node IsNot newOpenParenToken Then anyChanges = True Dim newArgumentTypes = VisitList(node.ArgumentTypes) If node._argumentTypes IsNot newArgumentTypes.Node Then anyChanges = True Dim newCloseParenToken = DirectCast(VisitToken(node.CloseParenToken).Node, InternalSyntax.PunctuationSyntax) If node.CloseParenToken.Node IsNot newCloseParenToken Then anyChanges = True If anyChanges Then Return New CrefSignatureSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newOpenParenToken, newArgumentTypes.Node, newCloseParenToken) Else Return node End If End Function Public Overrides Function VisitCrefSignaturePart(ByVal node As CrefSignaturePartSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newModifier = DirectCast(VisitToken(node.Modifier).Node, InternalSyntax.KeywordSyntax) If node.Modifier.Node IsNot newModifier Then anyChanges = True Dim newType = DirectCast(Visit(node.Type), TypeSyntax) If node.Type IsNot newType Then anyChanges = True If anyChanges Then Return New CrefSignaturePartSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newModifier, newType) Else Return node End If End Function Public Overrides Function VisitCrefOperatorReference(ByVal node As CrefOperatorReferenceSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newOperatorKeyword = DirectCast(VisitToken(node.OperatorKeyword).Node, InternalSyntax.KeywordSyntax) If node.OperatorKeyword.Node IsNot newOperatorKeyword Then anyChanges = True Dim newOperatorToken = DirectCast(VisitToken(node.OperatorToken).Node, InternalSyntax.SyntaxToken) If node.OperatorToken.Node IsNot newOperatorToken Then anyChanges = True If anyChanges Then Return New CrefOperatorReferenceSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newOperatorKeyword, newOperatorToken) Else Return node End If End Function Public Overrides Function VisitQualifiedCrefOperatorReference(ByVal node As QualifiedCrefOperatorReferenceSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newLeft = DirectCast(Visit(node.Left), NameSyntax) If node.Left IsNot newLeft Then anyChanges = True Dim newDotToken = DirectCast(VisitToken(node.DotToken).Node, InternalSyntax.PunctuationSyntax) If node.DotToken.Node IsNot newDotToken Then anyChanges = True Dim newRight = DirectCast(Visit(node.Right), CrefOperatorReferenceSyntax) If node.Right IsNot newRight Then anyChanges = True If anyChanges Then Return New QualifiedCrefOperatorReferenceSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newLeft, newDotToken, newRight) Else Return node End If End Function Public Overrides Function VisitYieldStatement(ByVal node As YieldStatementSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newYieldKeyword = DirectCast(VisitToken(node.YieldKeyword).Node, InternalSyntax.KeywordSyntax) If node.YieldKeyword.Node IsNot newYieldKeyword Then anyChanges = True Dim newExpression = DirectCast(Visit(node.Expression), ExpressionSyntax) If node.Expression IsNot newExpression Then anyChanges = True If anyChanges Then Return New YieldStatementSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newYieldKeyword, newExpression) Else Return node End If End Function Public Overrides Function VisitAwaitExpression(ByVal node As AwaitExpressionSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newAwaitKeyword = DirectCast(VisitToken(node.AwaitKeyword).Node, InternalSyntax.KeywordSyntax) If node.AwaitKeyword.Node IsNot newAwaitKeyword Then anyChanges = True Dim newExpression = DirectCast(Visit(node.Expression), ExpressionSyntax) If node.Expression IsNot newExpression Then anyChanges = True If anyChanges Then Return New AwaitExpressionSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newAwaitKeyword, newExpression) Else Return node End If End Function Public Overrides Function VisitSkippedTokensTrivia(ByVal node As SkippedTokensTriviaSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newTokens = VisitList(node.Tokens) If node.Tokens.Node IsNot newTokens.Node Then anyChanges = True If anyChanges Then Return New SkippedTokensTriviaSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newTokens.Node) Else Return node End If End Function Public Overrides Function VisitDocumentationCommentTrivia(ByVal node As DocumentationCommentTriviaSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newContent = VisitList(node.Content) If node._content IsNot newContent.Node Then anyChanges = True If anyChanges Then Return New DocumentationCommentTriviaSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newContent.Node) Else Return node End If End Function Public Overrides Function VisitXmlCrefAttribute(ByVal node As XmlCrefAttributeSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newName = DirectCast(Visit(node.Name), XmlNameSyntax) If node.Name IsNot newName Then anyChanges = True Dim newEqualsToken = DirectCast(VisitToken(node.EqualsToken).Node, InternalSyntax.PunctuationSyntax) If node.EqualsToken.Node IsNot newEqualsToken Then anyChanges = True Dim newStartQuoteToken = DirectCast(VisitToken(node.StartQuoteToken).Node, InternalSyntax.PunctuationSyntax) If node.StartQuoteToken.Node IsNot newStartQuoteToken Then anyChanges = True Dim newReference = DirectCast(Visit(node.Reference), CrefReferenceSyntax) If node.Reference IsNot newReference Then anyChanges = True Dim newEndQuoteToken = DirectCast(VisitToken(node.EndQuoteToken).Node, InternalSyntax.PunctuationSyntax) If node.EndQuoteToken.Node IsNot newEndQuoteToken Then anyChanges = True If anyChanges Then Return New XmlCrefAttributeSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newName, newEqualsToken, newStartQuoteToken, newReference, newEndQuoteToken) Else Return node End If End Function Public Overrides Function VisitXmlNameAttribute(ByVal node As XmlNameAttributeSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newName = DirectCast(Visit(node.Name), XmlNameSyntax) If node.Name IsNot newName Then anyChanges = True Dim newEqualsToken = DirectCast(VisitToken(node.EqualsToken).Node, InternalSyntax.PunctuationSyntax) If node.EqualsToken.Node IsNot newEqualsToken Then anyChanges = True Dim newStartQuoteToken = DirectCast(VisitToken(node.StartQuoteToken).Node, InternalSyntax.PunctuationSyntax) If node.StartQuoteToken.Node IsNot newStartQuoteToken Then anyChanges = True Dim newReference = DirectCast(Visit(node.Reference), IdentifierNameSyntax) If node.Reference IsNot newReference Then anyChanges = True Dim newEndQuoteToken = DirectCast(VisitToken(node.EndQuoteToken).Node, InternalSyntax.PunctuationSyntax) If node.EndQuoteToken.Node IsNot newEndQuoteToken Then anyChanges = True If anyChanges Then Return New XmlNameAttributeSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newName, newEqualsToken, newStartQuoteToken, newReference, newEndQuoteToken) Else Return node End If End Function Public Overrides Function VisitConditionalAccessExpression(ByVal node As ConditionalAccessExpressionSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newExpression = DirectCast(Visit(node.Expression), ExpressionSyntax) If node.Expression IsNot newExpression Then anyChanges = True Dim newQuestionMarkToken = DirectCast(VisitToken(node.QuestionMarkToken).Node, InternalSyntax.PunctuationSyntax) If node.QuestionMarkToken.Node IsNot newQuestionMarkToken Then anyChanges = True Dim newWhenNotNull = DirectCast(Visit(node.WhenNotNull), ExpressionSyntax) If node.WhenNotNull IsNot newWhenNotNull Then anyChanges = True If anyChanges Then Return New ConditionalAccessExpressionSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newExpression, newQuestionMarkToken, newWhenNotNull) Else Return node End If End Function Public Overrides Function VisitNameOfExpression(ByVal node As NameOfExpressionSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newNameOfKeyword = DirectCast(VisitToken(node.NameOfKeyword).Node, InternalSyntax.KeywordSyntax) If node.NameOfKeyword.Node IsNot newNameOfKeyword Then anyChanges = True Dim newOpenParenToken = DirectCast(VisitToken(node.OpenParenToken).Node, InternalSyntax.PunctuationSyntax) If node.OpenParenToken.Node IsNot newOpenParenToken Then anyChanges = True Dim newArgument = DirectCast(Visit(node.Argument), ExpressionSyntax) If node.Argument IsNot newArgument Then anyChanges = True Dim newCloseParenToken = DirectCast(VisitToken(node.CloseParenToken).Node, InternalSyntax.PunctuationSyntax) If node.CloseParenToken.Node IsNot newCloseParenToken Then anyChanges = True If anyChanges Then Return New NameOfExpressionSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newNameOfKeyword, newOpenParenToken, newArgument, newCloseParenToken) Else Return node End If End Function Public Overrides Function VisitInterpolatedStringExpression(ByVal node As InterpolatedStringExpressionSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newDollarSignDoubleQuoteToken = DirectCast(VisitToken(node.DollarSignDoubleQuoteToken).Node, InternalSyntax.PunctuationSyntax) If node.DollarSignDoubleQuoteToken.Node IsNot newDollarSignDoubleQuoteToken Then anyChanges = True Dim newContents = VisitList(node.Contents) If node._contents IsNot newContents.Node Then anyChanges = True Dim newDoubleQuoteToken = DirectCast(VisitToken(node.DoubleQuoteToken).Node, InternalSyntax.PunctuationSyntax) If node.DoubleQuoteToken.Node IsNot newDoubleQuoteToken Then anyChanges = True If anyChanges Then Return New InterpolatedStringExpressionSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newDollarSignDoubleQuoteToken, newContents.Node, newDoubleQuoteToken) Else Return node End If End Function Public Overrides Function VisitInterpolatedStringText(ByVal node As InterpolatedStringTextSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newTextToken = DirectCast(VisitToken(node.TextToken).Node, InternalSyntax.InterpolatedStringTextTokenSyntax) If node.TextToken.Node IsNot newTextToken Then anyChanges = True If anyChanges Then Return New InterpolatedStringTextSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newTextToken) Else Return node End If End Function Public Overrides Function VisitInterpolation(ByVal node As InterpolationSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newOpenBraceToken = DirectCast(VisitToken(node.OpenBraceToken).Node, InternalSyntax.PunctuationSyntax) If node.OpenBraceToken.Node IsNot newOpenBraceToken Then anyChanges = True Dim newExpression = DirectCast(Visit(node.Expression), ExpressionSyntax) If node.Expression IsNot newExpression Then anyChanges = True Dim newAlignmentClause = DirectCast(Visit(node.AlignmentClause), InterpolationAlignmentClauseSyntax) If node.AlignmentClause IsNot newAlignmentClause Then anyChanges = True Dim newFormatClause = DirectCast(Visit(node.FormatClause), InterpolationFormatClauseSyntax) If node.FormatClause IsNot newFormatClause Then anyChanges = True Dim newCloseBraceToken = DirectCast(VisitToken(node.CloseBraceToken).Node, InternalSyntax.PunctuationSyntax) If node.CloseBraceToken.Node IsNot newCloseBraceToken Then anyChanges = True If anyChanges Then Return New InterpolationSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newOpenBraceToken, newExpression, newAlignmentClause, newFormatClause, newCloseBraceToken) Else Return node End If End Function Public Overrides Function VisitInterpolationAlignmentClause(ByVal node As InterpolationAlignmentClauseSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newCommaToken = DirectCast(VisitToken(node.CommaToken).Node, InternalSyntax.PunctuationSyntax) If node.CommaToken.Node IsNot newCommaToken Then anyChanges = True Dim newValue = DirectCast(Visit(node.Value), ExpressionSyntax) If node.Value IsNot newValue Then anyChanges = True If anyChanges Then Return New InterpolationAlignmentClauseSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newCommaToken, newValue) Else Return node End If End Function Public Overrides Function VisitInterpolationFormatClause(ByVal node As InterpolationFormatClauseSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newColonToken = DirectCast(VisitToken(node.ColonToken).Node, InternalSyntax.PunctuationSyntax) If node.ColonToken.Node IsNot newColonToken Then anyChanges = True Dim newFormatStringToken = DirectCast(VisitToken(node.FormatStringToken).Node, InternalSyntax.InterpolatedStringTextTokenSyntax) If node.FormatStringToken.Node IsNot newFormatStringToken Then anyChanges = True If anyChanges Then Return New InterpolationFormatClauseSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newColonToken, newFormatStringToken) Else Return node End If End Function Public Overrides Function VisitConstDirectiveTrivia(ByVal node As ConstDirectiveTriviaSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newHashToken = DirectCast(VisitToken(node.HashToken).Node, InternalSyntax.PunctuationSyntax) If node.HashToken.Node IsNot newHashToken Then anyChanges = True Dim newConstKeyword = DirectCast(VisitToken(node.ConstKeyword).Node, InternalSyntax.KeywordSyntax) If node.ConstKeyword.Node IsNot newConstKeyword Then anyChanges = True Dim newName = DirectCast(VisitToken(node.Name).Node, InternalSyntax.IdentifierTokenSyntax) If node.Name.Node IsNot newName Then anyChanges = True Dim newEqualsToken = DirectCast(VisitToken(node.EqualsToken).Node, InternalSyntax.PunctuationSyntax) If node.EqualsToken.Node IsNot newEqualsToken Then anyChanges = True Dim newValue = DirectCast(Visit(node.Value), ExpressionSyntax) If node.Value IsNot newValue Then anyChanges = True If anyChanges Then Return New ConstDirectiveTriviaSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newHashToken, newConstKeyword, newName, newEqualsToken, newValue) Else Return node End If End Function Public Overrides Function VisitIfDirectiveTrivia(ByVal node As IfDirectiveTriviaSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newHashToken = DirectCast(VisitToken(node.HashToken).Node, InternalSyntax.PunctuationSyntax) If node.HashToken.Node IsNot newHashToken Then anyChanges = True Dim newElseKeyword = DirectCast(VisitToken(node.ElseKeyword).Node, InternalSyntax.KeywordSyntax) If node.ElseKeyword.Node IsNot newElseKeyword Then anyChanges = True Dim newIfOrElseIfKeyword = DirectCast(VisitToken(node.IfOrElseIfKeyword).Node, InternalSyntax.KeywordSyntax) If node.IfOrElseIfKeyword.Node IsNot newIfOrElseIfKeyword Then anyChanges = True Dim newCondition = DirectCast(Visit(node.Condition), ExpressionSyntax) If node.Condition IsNot newCondition Then anyChanges = True Dim newThenKeyword = DirectCast(VisitToken(node.ThenKeyword).Node, InternalSyntax.KeywordSyntax) If node.ThenKeyword.Node IsNot newThenKeyword Then anyChanges = True If anyChanges Then Return New IfDirectiveTriviaSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newHashToken, newElseKeyword, newIfOrElseIfKeyword, newCondition, newThenKeyword) Else Return node End If End Function Public Overrides Function VisitElseDirectiveTrivia(ByVal node As ElseDirectiveTriviaSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newHashToken = DirectCast(VisitToken(node.HashToken).Node, InternalSyntax.PunctuationSyntax) If node.HashToken.Node IsNot newHashToken Then anyChanges = True Dim newElseKeyword = DirectCast(VisitToken(node.ElseKeyword).Node, InternalSyntax.KeywordSyntax) If node.ElseKeyword.Node IsNot newElseKeyword Then anyChanges = True If anyChanges Then Return New ElseDirectiveTriviaSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newHashToken, newElseKeyword) Else Return node End If End Function Public Overrides Function VisitEndIfDirectiveTrivia(ByVal node As EndIfDirectiveTriviaSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newHashToken = DirectCast(VisitToken(node.HashToken).Node, InternalSyntax.PunctuationSyntax) If node.HashToken.Node IsNot newHashToken Then anyChanges = True Dim newEndKeyword = DirectCast(VisitToken(node.EndKeyword).Node, InternalSyntax.KeywordSyntax) If node.EndKeyword.Node IsNot newEndKeyword Then anyChanges = True Dim newIfKeyword = DirectCast(VisitToken(node.IfKeyword).Node, InternalSyntax.KeywordSyntax) If node.IfKeyword.Node IsNot newIfKeyword Then anyChanges = True If anyChanges Then Return New EndIfDirectiveTriviaSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newHashToken, newEndKeyword, newIfKeyword) Else Return node End If End Function Public Overrides Function VisitRegionDirectiveTrivia(ByVal node As RegionDirectiveTriviaSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newHashToken = DirectCast(VisitToken(node.HashToken).Node, InternalSyntax.PunctuationSyntax) If node.HashToken.Node IsNot newHashToken Then anyChanges = True Dim newRegionKeyword = DirectCast(VisitToken(node.RegionKeyword).Node, InternalSyntax.KeywordSyntax) If node.RegionKeyword.Node IsNot newRegionKeyword Then anyChanges = True Dim newName = DirectCast(VisitToken(node.Name).Node, InternalSyntax.StringLiteralTokenSyntax) If node.Name.Node IsNot newName Then anyChanges = True If anyChanges Then Return New RegionDirectiveTriviaSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newHashToken, newRegionKeyword, newName) Else Return node End If End Function Public Overrides Function VisitEndRegionDirectiveTrivia(ByVal node As EndRegionDirectiveTriviaSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newHashToken = DirectCast(VisitToken(node.HashToken).Node, InternalSyntax.PunctuationSyntax) If node.HashToken.Node IsNot newHashToken Then anyChanges = True Dim newEndKeyword = DirectCast(VisitToken(node.EndKeyword).Node, InternalSyntax.KeywordSyntax) If node.EndKeyword.Node IsNot newEndKeyword Then anyChanges = True Dim newRegionKeyword = DirectCast(VisitToken(node.RegionKeyword).Node, InternalSyntax.KeywordSyntax) If node.RegionKeyword.Node IsNot newRegionKeyword Then anyChanges = True If anyChanges Then Return New EndRegionDirectiveTriviaSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newHashToken, newEndKeyword, newRegionKeyword) Else Return node End If End Function Public Overrides Function VisitExternalSourceDirectiveTrivia(ByVal node As ExternalSourceDirectiveTriviaSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newHashToken = DirectCast(VisitToken(node.HashToken).Node, InternalSyntax.PunctuationSyntax) If node.HashToken.Node IsNot newHashToken Then anyChanges = True Dim newExternalSourceKeyword = DirectCast(VisitToken(node.ExternalSourceKeyword).Node, InternalSyntax.KeywordSyntax) If node.ExternalSourceKeyword.Node IsNot newExternalSourceKeyword Then anyChanges = True Dim newOpenParenToken = DirectCast(VisitToken(node.OpenParenToken).Node, InternalSyntax.PunctuationSyntax) If node.OpenParenToken.Node IsNot newOpenParenToken Then anyChanges = True Dim newExternalSource = DirectCast(VisitToken(node.ExternalSource).Node, InternalSyntax.StringLiteralTokenSyntax) If node.ExternalSource.Node IsNot newExternalSource Then anyChanges = True Dim newCommaToken = DirectCast(VisitToken(node.CommaToken).Node, InternalSyntax.PunctuationSyntax) If node.CommaToken.Node IsNot newCommaToken Then anyChanges = True Dim newLineStart = DirectCast(VisitToken(node.LineStart).Node, InternalSyntax.IntegerLiteralTokenSyntax) If node.LineStart.Node IsNot newLineStart Then anyChanges = True Dim newCloseParenToken = DirectCast(VisitToken(node.CloseParenToken).Node, InternalSyntax.PunctuationSyntax) If node.CloseParenToken.Node IsNot newCloseParenToken Then anyChanges = True If anyChanges Then Return New ExternalSourceDirectiveTriviaSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newHashToken, newExternalSourceKeyword, newOpenParenToken, newExternalSource, newCommaToken, newLineStart, newCloseParenToken) Else Return node End If End Function Public Overrides Function VisitEndExternalSourceDirectiveTrivia(ByVal node As EndExternalSourceDirectiveTriviaSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newHashToken = DirectCast(VisitToken(node.HashToken).Node, InternalSyntax.PunctuationSyntax) If node.HashToken.Node IsNot newHashToken Then anyChanges = True Dim newEndKeyword = DirectCast(VisitToken(node.EndKeyword).Node, InternalSyntax.KeywordSyntax) If node.EndKeyword.Node IsNot newEndKeyword Then anyChanges = True Dim newExternalSourceKeyword = DirectCast(VisitToken(node.ExternalSourceKeyword).Node, InternalSyntax.KeywordSyntax) If node.ExternalSourceKeyword.Node IsNot newExternalSourceKeyword Then anyChanges = True If anyChanges Then Return New EndExternalSourceDirectiveTriviaSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newHashToken, newEndKeyword, newExternalSourceKeyword) Else Return node End If End Function Public Overrides Function VisitExternalChecksumDirectiveTrivia(ByVal node As ExternalChecksumDirectiveTriviaSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newHashToken = DirectCast(VisitToken(node.HashToken).Node, InternalSyntax.PunctuationSyntax) If node.HashToken.Node IsNot newHashToken Then anyChanges = True Dim newExternalChecksumKeyword = DirectCast(VisitToken(node.ExternalChecksumKeyword).Node, InternalSyntax.KeywordSyntax) If node.ExternalChecksumKeyword.Node IsNot newExternalChecksumKeyword Then anyChanges = True Dim newOpenParenToken = DirectCast(VisitToken(node.OpenParenToken).Node, InternalSyntax.PunctuationSyntax) If node.OpenParenToken.Node IsNot newOpenParenToken Then anyChanges = True Dim newExternalSource = DirectCast(VisitToken(node.ExternalSource).Node, InternalSyntax.StringLiteralTokenSyntax) If node.ExternalSource.Node IsNot newExternalSource Then anyChanges = True Dim newFirstCommaToken = DirectCast(VisitToken(node.FirstCommaToken).Node, InternalSyntax.PunctuationSyntax) If node.FirstCommaToken.Node IsNot newFirstCommaToken Then anyChanges = True Dim newGuid = DirectCast(VisitToken(node.Guid).Node, InternalSyntax.StringLiteralTokenSyntax) If node.Guid.Node IsNot newGuid Then anyChanges = True Dim newSecondCommaToken = DirectCast(VisitToken(node.SecondCommaToken).Node, InternalSyntax.PunctuationSyntax) If node.SecondCommaToken.Node IsNot newSecondCommaToken Then anyChanges = True Dim newChecksum = DirectCast(VisitToken(node.Checksum).Node, InternalSyntax.StringLiteralTokenSyntax) If node.Checksum.Node IsNot newChecksum Then anyChanges = True Dim newCloseParenToken = DirectCast(VisitToken(node.CloseParenToken).Node, InternalSyntax.PunctuationSyntax) If node.CloseParenToken.Node IsNot newCloseParenToken Then anyChanges = True If anyChanges Then Return New ExternalChecksumDirectiveTriviaSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newHashToken, newExternalChecksumKeyword, newOpenParenToken, newExternalSource, newFirstCommaToken, newGuid, newSecondCommaToken, newChecksum, newCloseParenToken) Else Return node End If End Function Public Overrides Function VisitEnableWarningDirectiveTrivia(ByVal node As EnableWarningDirectiveTriviaSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newHashToken = DirectCast(VisitToken(node.HashToken).Node, InternalSyntax.PunctuationSyntax) If node.HashToken.Node IsNot newHashToken Then anyChanges = True Dim newEnableKeyword = DirectCast(VisitToken(node.EnableKeyword).Node, InternalSyntax.KeywordSyntax) If node.EnableKeyword.Node IsNot newEnableKeyword Then anyChanges = True Dim newWarningKeyword = DirectCast(VisitToken(node.WarningKeyword).Node, InternalSyntax.KeywordSyntax) If node.WarningKeyword.Node IsNot newWarningKeyword Then anyChanges = True Dim newErrorCodes = VisitList(node.ErrorCodes) If node._errorCodes IsNot newErrorCodes.Node Then anyChanges = True If anyChanges Then Return New EnableWarningDirectiveTriviaSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newHashToken, newEnableKeyword, newWarningKeyword, newErrorCodes.Node) Else Return node End If End Function Public Overrides Function VisitDisableWarningDirectiveTrivia(ByVal node As DisableWarningDirectiveTriviaSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newHashToken = DirectCast(VisitToken(node.HashToken).Node, InternalSyntax.PunctuationSyntax) If node.HashToken.Node IsNot newHashToken Then anyChanges = True Dim newDisableKeyword = DirectCast(VisitToken(node.DisableKeyword).Node, InternalSyntax.KeywordSyntax) If node.DisableKeyword.Node IsNot newDisableKeyword Then anyChanges = True Dim newWarningKeyword = DirectCast(VisitToken(node.WarningKeyword).Node, InternalSyntax.KeywordSyntax) If node.WarningKeyword.Node IsNot newWarningKeyword Then anyChanges = True Dim newErrorCodes = VisitList(node.ErrorCodes) If node._errorCodes IsNot newErrorCodes.Node Then anyChanges = True If anyChanges Then Return New DisableWarningDirectiveTriviaSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newHashToken, newDisableKeyword, newWarningKeyword, newErrorCodes.Node) Else Return node End If End Function Public Overrides Function VisitReferenceDirectiveTrivia(ByVal node As ReferenceDirectiveTriviaSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newHashToken = DirectCast(VisitToken(node.HashToken).Node, InternalSyntax.PunctuationSyntax) If node.HashToken.Node IsNot newHashToken Then anyChanges = True Dim newReferenceKeyword = DirectCast(VisitToken(node.ReferenceKeyword).Node, InternalSyntax.KeywordSyntax) If node.ReferenceKeyword.Node IsNot newReferenceKeyword Then anyChanges = True Dim newFile = DirectCast(VisitToken(node.File).Node, InternalSyntax.StringLiteralTokenSyntax) If node.File.Node IsNot newFile Then anyChanges = True If anyChanges Then Return New ReferenceDirectiveTriviaSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newHashToken, newReferenceKeyword, newFile) Else Return node End If End Function Public Overrides Function VisitBadDirectiveTrivia(ByVal node As BadDirectiveTriviaSyntax) As SyntaxNode Dim anyChanges As Boolean = False Dim newHashToken = DirectCast(VisitToken(node.HashToken).Node, InternalSyntax.PunctuationSyntax) If node.HashToken.Node IsNot newHashToken Then anyChanges = True If anyChanges Then Return New BadDirectiveTriviaSyntax(node.Kind, node.Green.GetDiagnostics, node.Green.GetAnnotations, newHashToken) Else Return node End If End Function End Class End Namespace Namespace Microsoft.CodeAnalysis.VisualBasic Public Partial Class SyntaxFactory ''' <summary> ''' A class to represent an empty statement. This can occur when a colon is on a ''' line without anything else. ''' </summary> ''' <param name="empty"> ''' An empty token because all non terminals must have a token. ''' </param> Public Shared Function EmptyStatement(empty As SyntaxToken) As EmptyStatementSyntax Select Case empty.Kind() Case SyntaxKind.EmptyToken Case Else Throw new ArgumentException("empty") End Select Return New EmptyStatementSyntax(SyntaxKind.EmptyStatement, Nothing, Nothing, DirectCast(empty.Node, InternalSyntax.PunctuationSyntax)) End Function ''' <summary> ''' A class to represent an empty statement. This can occur when a colon is on a ''' line without anything else. ''' </summary> Public Shared Function EmptyStatement() As EmptyStatementSyntax Return SyntaxFactory.EmptyStatement(SyntaxFactory.Token(SyntaxKind.EmptyToken)) End Function ''' <summary> ''' Represents an "End XXX" statement, where XXX is a single keyword. ''' </summary> ''' <param name="endKeyword"> ''' The "End" keyword ''' </param> ''' <param name="blockKeyword"> ''' The keyword that ends the block. Must be one of: "If", "Using", "With", ''' "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", ''' "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", ''' "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". ''' </param> Public Shared Function EndIfStatement(endKeyword As SyntaxToken, blockKeyword As SyntaxToken) As EndBlockStatementSyntax Select Case endKeyword.Kind() Case SyntaxKind.EndKeyword Case Else Throw new ArgumentException("endKeyword") End Select Select Case blockKeyword.Kind() Case SyntaxKind.IfKeyword : Case SyntaxKind.UsingKeyword : Case SyntaxKind.WithKeyword : Case SyntaxKind.SelectKeyword : Case SyntaxKind.StructureKeyword : Case SyntaxKind.EnumKeyword : Case SyntaxKind.InterfaceKeyword : Case SyntaxKind.ClassKeyword : Case SyntaxKind.ModuleKeyword : Case SyntaxKind.NamespaceKeyword : Case SyntaxKind.SubKeyword : Case SyntaxKind.FunctionKeyword : Case SyntaxKind.GetKeyword : Case SyntaxKind.SetKeyword : Case SyntaxKind.PropertyKeyword : Case SyntaxKind.OperatorKeyword : Case SyntaxKind.EventKeyword : Case SyntaxKind.AddHandlerKeyword : Case SyntaxKind.RemoveHandlerKeyword : Case SyntaxKind.RaiseEventKeyword : Case SyntaxKind.WhileKeyword : Case SyntaxKind.TryKeyword : Case SyntaxKind.SyncLockKeyword Case Else Throw new ArgumentException("blockKeyword") End Select Return New EndBlockStatementSyntax(SyntaxKind.EndIfStatement, Nothing, Nothing, DirectCast(endKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(blockKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' Represents an "End XXX" statement, where XXX is a single keyword. ''' </summary> Public Shared Function EndIfStatement() As EndBlockStatementSyntax Return SyntaxFactory.EndIfStatement(SyntaxFactory.Token(SyntaxKind.EndKeyword), SyntaxFactory.Token(SyntaxKind.IfKeyword)) End Function ''' <summary> ''' Represents an "End XXX" statement, where XXX is a single keyword. ''' </summary> ''' <param name="endKeyword"> ''' The "End" keyword ''' </param> ''' <param name="blockKeyword"> ''' The keyword that ends the block. Must be one of: "If", "Using", "With", ''' "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", ''' "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", ''' "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". ''' </param> Public Shared Function EndUsingStatement(endKeyword As SyntaxToken, blockKeyword As SyntaxToken) As EndBlockStatementSyntax Select Case endKeyword.Kind() Case SyntaxKind.EndKeyword Case Else Throw new ArgumentException("endKeyword") End Select Select Case blockKeyword.Kind() Case SyntaxKind.UsingKeyword Case Else Throw new ArgumentException("blockKeyword") End Select Return New EndBlockStatementSyntax(SyntaxKind.EndUsingStatement, Nothing, Nothing, DirectCast(endKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(blockKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' Represents an "End XXX" statement, where XXX is a single keyword. ''' </summary> Public Shared Function EndUsingStatement() As EndBlockStatementSyntax Return SyntaxFactory.EndUsingStatement(SyntaxFactory.Token(SyntaxKind.EndKeyword), SyntaxFactory.Token(SyntaxKind.UsingKeyword)) End Function ''' <summary> ''' Represents an "End XXX" statement, where XXX is a single keyword. ''' </summary> ''' <param name="endKeyword"> ''' The "End" keyword ''' </param> ''' <param name="blockKeyword"> ''' The keyword that ends the block. Must be one of: "If", "Using", "With", ''' "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", ''' "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", ''' "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". ''' </param> Public Shared Function EndWithStatement(endKeyword As SyntaxToken, blockKeyword As SyntaxToken) As EndBlockStatementSyntax Select Case endKeyword.Kind() Case SyntaxKind.EndKeyword Case Else Throw new ArgumentException("endKeyword") End Select Select Case blockKeyword.Kind() Case SyntaxKind.WithKeyword Case Else Throw new ArgumentException("blockKeyword") End Select Return New EndBlockStatementSyntax(SyntaxKind.EndWithStatement, Nothing, Nothing, DirectCast(endKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(blockKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' Represents an "End XXX" statement, where XXX is a single keyword. ''' </summary> Public Shared Function EndWithStatement() As EndBlockStatementSyntax Return SyntaxFactory.EndWithStatement(SyntaxFactory.Token(SyntaxKind.EndKeyword), SyntaxFactory.Token(SyntaxKind.WithKeyword)) End Function ''' <summary> ''' Represents an "End XXX" statement, where XXX is a single keyword. ''' </summary> ''' <param name="endKeyword"> ''' The "End" keyword ''' </param> ''' <param name="blockKeyword"> ''' The keyword that ends the block. Must be one of: "If", "Using", "With", ''' "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", ''' "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", ''' "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". ''' </param> Public Shared Function EndSelectStatement(endKeyword As SyntaxToken, blockKeyword As SyntaxToken) As EndBlockStatementSyntax Select Case endKeyword.Kind() Case SyntaxKind.EndKeyword Case Else Throw new ArgumentException("endKeyword") End Select Select Case blockKeyword.Kind() Case SyntaxKind.SelectKeyword Case Else Throw new ArgumentException("blockKeyword") End Select Return New EndBlockStatementSyntax(SyntaxKind.EndSelectStatement, Nothing, Nothing, DirectCast(endKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(blockKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' Represents an "End XXX" statement, where XXX is a single keyword. ''' </summary> Public Shared Function EndSelectStatement() As EndBlockStatementSyntax Return SyntaxFactory.EndSelectStatement(SyntaxFactory.Token(SyntaxKind.EndKeyword), SyntaxFactory.Token(SyntaxKind.SelectKeyword)) End Function ''' <summary> ''' Represents an "End XXX" statement, where XXX is a single keyword. ''' </summary> ''' <param name="endKeyword"> ''' The "End" keyword ''' </param> ''' <param name="blockKeyword"> ''' The keyword that ends the block. Must be one of: "If", "Using", "With", ''' "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", ''' "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", ''' "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". ''' </param> Public Shared Function EndStructureStatement(endKeyword As SyntaxToken, blockKeyword As SyntaxToken) As EndBlockStatementSyntax Select Case endKeyword.Kind() Case SyntaxKind.EndKeyword Case Else Throw new ArgumentException("endKeyword") End Select Select Case blockKeyword.Kind() Case SyntaxKind.StructureKeyword Case Else Throw new ArgumentException("blockKeyword") End Select Return New EndBlockStatementSyntax(SyntaxKind.EndStructureStatement, Nothing, Nothing, DirectCast(endKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(blockKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' Represents an "End XXX" statement, where XXX is a single keyword. ''' </summary> Public Shared Function EndStructureStatement() As EndBlockStatementSyntax Return SyntaxFactory.EndStructureStatement(SyntaxFactory.Token(SyntaxKind.EndKeyword), SyntaxFactory.Token(SyntaxKind.StructureKeyword)) End Function ''' <summary> ''' Represents an "End XXX" statement, where XXX is a single keyword. ''' </summary> ''' <param name="endKeyword"> ''' The "End" keyword ''' </param> ''' <param name="blockKeyword"> ''' The keyword that ends the block. Must be one of: "If", "Using", "With", ''' "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", ''' "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", ''' "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". ''' </param> Public Shared Function EndEnumStatement(endKeyword As SyntaxToken, blockKeyword As SyntaxToken) As EndBlockStatementSyntax Select Case endKeyword.Kind() Case SyntaxKind.EndKeyword Case Else Throw new ArgumentException("endKeyword") End Select Select Case blockKeyword.Kind() Case SyntaxKind.EnumKeyword Case Else Throw new ArgumentException("blockKeyword") End Select Return New EndBlockStatementSyntax(SyntaxKind.EndEnumStatement, Nothing, Nothing, DirectCast(endKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(blockKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' Represents an "End XXX" statement, where XXX is a single keyword. ''' </summary> Public Shared Function EndEnumStatement() As EndBlockStatementSyntax Return SyntaxFactory.EndEnumStatement(SyntaxFactory.Token(SyntaxKind.EndKeyword), SyntaxFactory.Token(SyntaxKind.EnumKeyword)) End Function ''' <summary> ''' Represents an "End XXX" statement, where XXX is a single keyword. ''' </summary> ''' <param name="endKeyword"> ''' The "End" keyword ''' </param> ''' <param name="blockKeyword"> ''' The keyword that ends the block. Must be one of: "If", "Using", "With", ''' "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", ''' "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", ''' "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". ''' </param> Public Shared Function EndInterfaceStatement(endKeyword As SyntaxToken, blockKeyword As SyntaxToken) As EndBlockStatementSyntax Select Case endKeyword.Kind() Case SyntaxKind.EndKeyword Case Else Throw new ArgumentException("endKeyword") End Select Select Case blockKeyword.Kind() Case SyntaxKind.InterfaceKeyword Case Else Throw new ArgumentException("blockKeyword") End Select Return New EndBlockStatementSyntax(SyntaxKind.EndInterfaceStatement, Nothing, Nothing, DirectCast(endKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(blockKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' Represents an "End XXX" statement, where XXX is a single keyword. ''' </summary> Public Shared Function EndInterfaceStatement() As EndBlockStatementSyntax Return SyntaxFactory.EndInterfaceStatement(SyntaxFactory.Token(SyntaxKind.EndKeyword), SyntaxFactory.Token(SyntaxKind.InterfaceKeyword)) End Function ''' <summary> ''' Represents an "End XXX" statement, where XXX is a single keyword. ''' </summary> ''' <param name="endKeyword"> ''' The "End" keyword ''' </param> ''' <param name="blockKeyword"> ''' The keyword that ends the block. Must be one of: "If", "Using", "With", ''' "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", ''' "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", ''' "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". ''' </param> Public Shared Function EndClassStatement(endKeyword As SyntaxToken, blockKeyword As SyntaxToken) As EndBlockStatementSyntax Select Case endKeyword.Kind() Case SyntaxKind.EndKeyword Case Else Throw new ArgumentException("endKeyword") End Select Select Case blockKeyword.Kind() Case SyntaxKind.ClassKeyword Case Else Throw new ArgumentException("blockKeyword") End Select Return New EndBlockStatementSyntax(SyntaxKind.EndClassStatement, Nothing, Nothing, DirectCast(endKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(blockKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' Represents an "End XXX" statement, where XXX is a single keyword. ''' </summary> Public Shared Function EndClassStatement() As EndBlockStatementSyntax Return SyntaxFactory.EndClassStatement(SyntaxFactory.Token(SyntaxKind.EndKeyword), SyntaxFactory.Token(SyntaxKind.ClassKeyword)) End Function ''' <summary> ''' Represents an "End XXX" statement, where XXX is a single keyword. ''' </summary> ''' <param name="endKeyword"> ''' The "End" keyword ''' </param> ''' <param name="blockKeyword"> ''' The keyword that ends the block. Must be one of: "If", "Using", "With", ''' "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", ''' "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", ''' "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". ''' </param> Public Shared Function EndModuleStatement(endKeyword As SyntaxToken, blockKeyword As SyntaxToken) As EndBlockStatementSyntax Select Case endKeyword.Kind() Case SyntaxKind.EndKeyword Case Else Throw new ArgumentException("endKeyword") End Select Select Case blockKeyword.Kind() Case SyntaxKind.ModuleKeyword Case Else Throw new ArgumentException("blockKeyword") End Select Return New EndBlockStatementSyntax(SyntaxKind.EndModuleStatement, Nothing, Nothing, DirectCast(endKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(blockKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' Represents an "End XXX" statement, where XXX is a single keyword. ''' </summary> Public Shared Function EndModuleStatement() As EndBlockStatementSyntax Return SyntaxFactory.EndModuleStatement(SyntaxFactory.Token(SyntaxKind.EndKeyword), SyntaxFactory.Token(SyntaxKind.ModuleKeyword)) End Function ''' <summary> ''' Represents an "End XXX" statement, where XXX is a single keyword. ''' </summary> ''' <param name="endKeyword"> ''' The "End" keyword ''' </param> ''' <param name="blockKeyword"> ''' The keyword that ends the block. Must be one of: "If", "Using", "With", ''' "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", ''' "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", ''' "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". ''' </param> Public Shared Function EndNamespaceStatement(endKeyword As SyntaxToken, blockKeyword As SyntaxToken) As EndBlockStatementSyntax Select Case endKeyword.Kind() Case SyntaxKind.EndKeyword Case Else Throw new ArgumentException("endKeyword") End Select Select Case blockKeyword.Kind() Case SyntaxKind.NamespaceKeyword Case Else Throw new ArgumentException("blockKeyword") End Select Return New EndBlockStatementSyntax(SyntaxKind.EndNamespaceStatement, Nothing, Nothing, DirectCast(endKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(blockKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' Represents an "End XXX" statement, where XXX is a single keyword. ''' </summary> Public Shared Function EndNamespaceStatement() As EndBlockStatementSyntax Return SyntaxFactory.EndNamespaceStatement(SyntaxFactory.Token(SyntaxKind.EndKeyword), SyntaxFactory.Token(SyntaxKind.NamespaceKeyword)) End Function ''' <summary> ''' Represents an "End XXX" statement, where XXX is a single keyword. ''' </summary> ''' <param name="endKeyword"> ''' The "End" keyword ''' </param> ''' <param name="blockKeyword"> ''' The keyword that ends the block. Must be one of: "If", "Using", "With", ''' "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", ''' "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", ''' "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". ''' </param> Public Shared Function EndSubStatement(endKeyword As SyntaxToken, blockKeyword As SyntaxToken) As EndBlockStatementSyntax Select Case endKeyword.Kind() Case SyntaxKind.EndKeyword Case Else Throw new ArgumentException("endKeyword") End Select Select Case blockKeyword.Kind() Case SyntaxKind.SubKeyword Case Else Throw new ArgumentException("blockKeyword") End Select Return New EndBlockStatementSyntax(SyntaxKind.EndSubStatement, Nothing, Nothing, DirectCast(endKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(blockKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' Represents an "End XXX" statement, where XXX is a single keyword. ''' </summary> Public Shared Function EndSubStatement() As EndBlockStatementSyntax Return SyntaxFactory.EndSubStatement(SyntaxFactory.Token(SyntaxKind.EndKeyword), SyntaxFactory.Token(SyntaxKind.SubKeyword)) End Function ''' <summary> ''' Represents an "End XXX" statement, where XXX is a single keyword. ''' </summary> ''' <param name="endKeyword"> ''' The "End" keyword ''' </param> ''' <param name="blockKeyword"> ''' The keyword that ends the block. Must be one of: "If", "Using", "With", ''' "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", ''' "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", ''' "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". ''' </param> Public Shared Function EndFunctionStatement(endKeyword As SyntaxToken, blockKeyword As SyntaxToken) As EndBlockStatementSyntax Select Case endKeyword.Kind() Case SyntaxKind.EndKeyword Case Else Throw new ArgumentException("endKeyword") End Select Select Case blockKeyword.Kind() Case SyntaxKind.FunctionKeyword Case Else Throw new ArgumentException("blockKeyword") End Select Return New EndBlockStatementSyntax(SyntaxKind.EndFunctionStatement, Nothing, Nothing, DirectCast(endKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(blockKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' Represents an "End XXX" statement, where XXX is a single keyword. ''' </summary> Public Shared Function EndFunctionStatement() As EndBlockStatementSyntax Return SyntaxFactory.EndFunctionStatement(SyntaxFactory.Token(SyntaxKind.EndKeyword), SyntaxFactory.Token(SyntaxKind.FunctionKeyword)) End Function ''' <summary> ''' Represents an "End XXX" statement, where XXX is a single keyword. ''' </summary> ''' <param name="endKeyword"> ''' The "End" keyword ''' </param> ''' <param name="blockKeyword"> ''' The keyword that ends the block. Must be one of: "If", "Using", "With", ''' "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", ''' "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", ''' "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". ''' </param> Public Shared Function EndGetStatement(endKeyword As SyntaxToken, blockKeyword As SyntaxToken) As EndBlockStatementSyntax Select Case endKeyword.Kind() Case SyntaxKind.EndKeyword Case Else Throw new ArgumentException("endKeyword") End Select Select Case blockKeyword.Kind() Case SyntaxKind.GetKeyword Case Else Throw new ArgumentException("blockKeyword") End Select Return New EndBlockStatementSyntax(SyntaxKind.EndGetStatement, Nothing, Nothing, DirectCast(endKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(blockKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' Represents an "End XXX" statement, where XXX is a single keyword. ''' </summary> Public Shared Function EndGetStatement() As EndBlockStatementSyntax Return SyntaxFactory.EndGetStatement(SyntaxFactory.Token(SyntaxKind.EndKeyword), SyntaxFactory.Token(SyntaxKind.GetKeyword)) End Function ''' <summary> ''' Represents an "End XXX" statement, where XXX is a single keyword. ''' </summary> ''' <param name="endKeyword"> ''' The "End" keyword ''' </param> ''' <param name="blockKeyword"> ''' The keyword that ends the block. Must be one of: "If", "Using", "With", ''' "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", ''' "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", ''' "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". ''' </param> Public Shared Function EndSetStatement(endKeyword As SyntaxToken, blockKeyword As SyntaxToken) As EndBlockStatementSyntax Select Case endKeyword.Kind() Case SyntaxKind.EndKeyword Case Else Throw new ArgumentException("endKeyword") End Select Select Case blockKeyword.Kind() Case SyntaxKind.SetKeyword Case Else Throw new ArgumentException("blockKeyword") End Select Return New EndBlockStatementSyntax(SyntaxKind.EndSetStatement, Nothing, Nothing, DirectCast(endKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(blockKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' Represents an "End XXX" statement, where XXX is a single keyword. ''' </summary> Public Shared Function EndSetStatement() As EndBlockStatementSyntax Return SyntaxFactory.EndSetStatement(SyntaxFactory.Token(SyntaxKind.EndKeyword), SyntaxFactory.Token(SyntaxKind.SetKeyword)) End Function ''' <summary> ''' Represents an "End XXX" statement, where XXX is a single keyword. ''' </summary> ''' <param name="endKeyword"> ''' The "End" keyword ''' </param> ''' <param name="blockKeyword"> ''' The keyword that ends the block. Must be one of: "If", "Using", "With", ''' "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", ''' "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", ''' "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". ''' </param> Public Shared Function EndPropertyStatement(endKeyword As SyntaxToken, blockKeyword As SyntaxToken) As EndBlockStatementSyntax Select Case endKeyword.Kind() Case SyntaxKind.EndKeyword Case Else Throw new ArgumentException("endKeyword") End Select Select Case blockKeyword.Kind() Case SyntaxKind.PropertyKeyword Case Else Throw new ArgumentException("blockKeyword") End Select Return New EndBlockStatementSyntax(SyntaxKind.EndPropertyStatement, Nothing, Nothing, DirectCast(endKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(blockKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' Represents an "End XXX" statement, where XXX is a single keyword. ''' </summary> Public Shared Function EndPropertyStatement() As EndBlockStatementSyntax Return SyntaxFactory.EndPropertyStatement(SyntaxFactory.Token(SyntaxKind.EndKeyword), SyntaxFactory.Token(SyntaxKind.PropertyKeyword)) End Function ''' <summary> ''' Represents an "End XXX" statement, where XXX is a single keyword. ''' </summary> ''' <param name="endKeyword"> ''' The "End" keyword ''' </param> ''' <param name="blockKeyword"> ''' The keyword that ends the block. Must be one of: "If", "Using", "With", ''' "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", ''' "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", ''' "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". ''' </param> Public Shared Function EndOperatorStatement(endKeyword As SyntaxToken, blockKeyword As SyntaxToken) As EndBlockStatementSyntax Select Case endKeyword.Kind() Case SyntaxKind.EndKeyword Case Else Throw new ArgumentException("endKeyword") End Select Select Case blockKeyword.Kind() Case SyntaxKind.OperatorKeyword Case Else Throw new ArgumentException("blockKeyword") End Select Return New EndBlockStatementSyntax(SyntaxKind.EndOperatorStatement, Nothing, Nothing, DirectCast(endKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(blockKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' Represents an "End XXX" statement, where XXX is a single keyword. ''' </summary> Public Shared Function EndOperatorStatement() As EndBlockStatementSyntax Return SyntaxFactory.EndOperatorStatement(SyntaxFactory.Token(SyntaxKind.EndKeyword), SyntaxFactory.Token(SyntaxKind.OperatorKeyword)) End Function ''' <summary> ''' Represents an "End XXX" statement, where XXX is a single keyword. ''' </summary> ''' <param name="endKeyword"> ''' The "End" keyword ''' </param> ''' <param name="blockKeyword"> ''' The keyword that ends the block. Must be one of: "If", "Using", "With", ''' "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", ''' "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", ''' "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". ''' </param> Public Shared Function EndEventStatement(endKeyword As SyntaxToken, blockKeyword As SyntaxToken) As EndBlockStatementSyntax Select Case endKeyword.Kind() Case SyntaxKind.EndKeyword Case Else Throw new ArgumentException("endKeyword") End Select Select Case blockKeyword.Kind() Case SyntaxKind.EventKeyword Case Else Throw new ArgumentException("blockKeyword") End Select Return New EndBlockStatementSyntax(SyntaxKind.EndEventStatement, Nothing, Nothing, DirectCast(endKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(blockKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' Represents an "End XXX" statement, where XXX is a single keyword. ''' </summary> Public Shared Function EndEventStatement() As EndBlockStatementSyntax Return SyntaxFactory.EndEventStatement(SyntaxFactory.Token(SyntaxKind.EndKeyword), SyntaxFactory.Token(SyntaxKind.EventKeyword)) End Function ''' <summary> ''' Represents an "End XXX" statement, where XXX is a single keyword. ''' </summary> ''' <param name="endKeyword"> ''' The "End" keyword ''' </param> ''' <param name="blockKeyword"> ''' The keyword that ends the block. Must be one of: "If", "Using", "With", ''' "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", ''' "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", ''' "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". ''' </param> Public Shared Function EndAddHandlerStatement(endKeyword As SyntaxToken, blockKeyword As SyntaxToken) As EndBlockStatementSyntax Select Case endKeyword.Kind() Case SyntaxKind.EndKeyword Case Else Throw new ArgumentException("endKeyword") End Select Select Case blockKeyword.Kind() Case SyntaxKind.AddHandlerKeyword Case Else Throw new ArgumentException("blockKeyword") End Select Return New EndBlockStatementSyntax(SyntaxKind.EndAddHandlerStatement, Nothing, Nothing, DirectCast(endKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(blockKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' Represents an "End XXX" statement, where XXX is a single keyword. ''' </summary> Public Shared Function EndAddHandlerStatement() As EndBlockStatementSyntax Return SyntaxFactory.EndAddHandlerStatement(SyntaxFactory.Token(SyntaxKind.EndKeyword), SyntaxFactory.Token(SyntaxKind.AddHandlerKeyword)) End Function ''' <summary> ''' Represents an "End XXX" statement, where XXX is a single keyword. ''' </summary> ''' <param name="endKeyword"> ''' The "End" keyword ''' </param> ''' <param name="blockKeyword"> ''' The keyword that ends the block. Must be one of: "If", "Using", "With", ''' "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", ''' "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", ''' "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". ''' </param> Public Shared Function EndRemoveHandlerStatement(endKeyword As SyntaxToken, blockKeyword As SyntaxToken) As EndBlockStatementSyntax Select Case endKeyword.Kind() Case SyntaxKind.EndKeyword Case Else Throw new ArgumentException("endKeyword") End Select Select Case blockKeyword.Kind() Case SyntaxKind.RemoveHandlerKeyword Case Else Throw new ArgumentException("blockKeyword") End Select Return New EndBlockStatementSyntax(SyntaxKind.EndRemoveHandlerStatement, Nothing, Nothing, DirectCast(endKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(blockKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' Represents an "End XXX" statement, where XXX is a single keyword. ''' </summary> Public Shared Function EndRemoveHandlerStatement() As EndBlockStatementSyntax Return SyntaxFactory.EndRemoveHandlerStatement(SyntaxFactory.Token(SyntaxKind.EndKeyword), SyntaxFactory.Token(SyntaxKind.RemoveHandlerKeyword)) End Function ''' <summary> ''' Represents an "End XXX" statement, where XXX is a single keyword. ''' </summary> ''' <param name="endKeyword"> ''' The "End" keyword ''' </param> ''' <param name="blockKeyword"> ''' The keyword that ends the block. Must be one of: "If", "Using", "With", ''' "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", ''' "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", ''' "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". ''' </param> Public Shared Function EndRaiseEventStatement(endKeyword As SyntaxToken, blockKeyword As SyntaxToken) As EndBlockStatementSyntax Select Case endKeyword.Kind() Case SyntaxKind.EndKeyword Case Else Throw new ArgumentException("endKeyword") End Select Select Case blockKeyword.Kind() Case SyntaxKind.RaiseEventKeyword Case Else Throw new ArgumentException("blockKeyword") End Select Return New EndBlockStatementSyntax(SyntaxKind.EndRaiseEventStatement, Nothing, Nothing, DirectCast(endKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(blockKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' Represents an "End XXX" statement, where XXX is a single keyword. ''' </summary> Public Shared Function EndRaiseEventStatement() As EndBlockStatementSyntax Return SyntaxFactory.EndRaiseEventStatement(SyntaxFactory.Token(SyntaxKind.EndKeyword), SyntaxFactory.Token(SyntaxKind.RaiseEventKeyword)) End Function ''' <summary> ''' Represents an "End XXX" statement, where XXX is a single keyword. ''' </summary> ''' <param name="endKeyword"> ''' The "End" keyword ''' </param> ''' <param name="blockKeyword"> ''' The keyword that ends the block. Must be one of: "If", "Using", "With", ''' "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", ''' "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", ''' "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". ''' </param> Public Shared Function EndWhileStatement(endKeyword As SyntaxToken, blockKeyword As SyntaxToken) As EndBlockStatementSyntax Select Case endKeyword.Kind() Case SyntaxKind.EndKeyword Case Else Throw new ArgumentException("endKeyword") End Select Select Case blockKeyword.Kind() Case SyntaxKind.WhileKeyword Case Else Throw new ArgumentException("blockKeyword") End Select Return New EndBlockStatementSyntax(SyntaxKind.EndWhileStatement, Nothing, Nothing, DirectCast(endKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(blockKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' Represents an "End XXX" statement, where XXX is a single keyword. ''' </summary> Public Shared Function EndWhileStatement() As EndBlockStatementSyntax Return SyntaxFactory.EndWhileStatement(SyntaxFactory.Token(SyntaxKind.EndKeyword), SyntaxFactory.Token(SyntaxKind.WhileKeyword)) End Function ''' <summary> ''' Represents an "End XXX" statement, where XXX is a single keyword. ''' </summary> ''' <param name="endKeyword"> ''' The "End" keyword ''' </param> ''' <param name="blockKeyword"> ''' The keyword that ends the block. Must be one of: "If", "Using", "With", ''' "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", ''' "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", ''' "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". ''' </param> Public Shared Function EndTryStatement(endKeyword As SyntaxToken, blockKeyword As SyntaxToken) As EndBlockStatementSyntax Select Case endKeyword.Kind() Case SyntaxKind.EndKeyword Case Else Throw new ArgumentException("endKeyword") End Select Select Case blockKeyword.Kind() Case SyntaxKind.TryKeyword Case Else Throw new ArgumentException("blockKeyword") End Select Return New EndBlockStatementSyntax(SyntaxKind.EndTryStatement, Nothing, Nothing, DirectCast(endKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(blockKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' Represents an "End XXX" statement, where XXX is a single keyword. ''' </summary> Public Shared Function EndTryStatement() As EndBlockStatementSyntax Return SyntaxFactory.EndTryStatement(SyntaxFactory.Token(SyntaxKind.EndKeyword), SyntaxFactory.Token(SyntaxKind.TryKeyword)) End Function ''' <summary> ''' Represents an "End XXX" statement, where XXX is a single keyword. ''' </summary> ''' <param name="endKeyword"> ''' The "End" keyword ''' </param> ''' <param name="blockKeyword"> ''' The keyword that ends the block. Must be one of: "If", "Using", "With", ''' "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", ''' "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", ''' "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". ''' </param> Public Shared Function EndSyncLockStatement(endKeyword As SyntaxToken, blockKeyword As SyntaxToken) As EndBlockStatementSyntax Select Case endKeyword.Kind() Case SyntaxKind.EndKeyword Case Else Throw new ArgumentException("endKeyword") End Select Select Case blockKeyword.Kind() Case SyntaxKind.SyncLockKeyword Case Else Throw new ArgumentException("blockKeyword") End Select Return New EndBlockStatementSyntax(SyntaxKind.EndSyncLockStatement, Nothing, Nothing, DirectCast(endKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(blockKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' Represents an "End XXX" statement, where XXX is a single keyword. ''' </summary> Public Shared Function EndSyncLockStatement() As EndBlockStatementSyntax Return SyntaxFactory.EndSyncLockStatement(SyntaxFactory.Token(SyntaxKind.EndKeyword), SyntaxFactory.Token(SyntaxKind.SyncLockKeyword)) End Function ''' <summary> ''' Represents an "End XXX" statement, where XXX is a single keyword. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' EndBlockStatementSyntax. One of EndIfStatement, EndUsingStatement, ''' EndWithStatement, EndSelectStatement, EndStructureStatement, EndEnumStatement, ''' EndInterfaceStatement, EndClassStatement, EndModuleStatement, ''' EndNamespaceStatement, EndSubStatement, EndFunctionStatement, EndGetStatement, ''' EndSetStatement, EndPropertyStatement, EndOperatorStatement, EndEventStatement, ''' EndAddHandlerStatement, EndRemoveHandlerStatement, EndRaiseEventStatement, ''' EndWhileStatement, EndTryStatement, EndSyncLockStatement. ''' </param> ''' <param name="endKeyword"> ''' The "End" keyword ''' </param> ''' <param name="blockKeyword"> ''' The keyword that ends the block. Must be one of: "If", "Using", "With", ''' "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", ''' "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", ''' "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". ''' </param> Public Shared Function EndBlockStatement(ByVal kind As SyntaxKind, endKeyword As SyntaxToken, blockKeyword As SyntaxToken) As EndBlockStatementSyntax If Not SyntaxFacts.IsEndBlockStatement(kind) Then Throw New ArgumentException("kind") End If Select Case endKeyword.Kind() Case SyntaxKind.EndKeyword Case Else Throw new ArgumentException("endKeyword") End Select If (Not blockKeyword.IsKind(GetEndBlockStatementBlockKeywordKind(kind))) Then Throw new ArgumentException("blockKeyword") End If Return New EndBlockStatementSyntax(kind, Nothing, Nothing, DirectCast(endKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(blockKeyword.Node, InternalSyntax.KeywordSyntax)) End Function Private Shared Function GetEndBlockStatementBlockKeywordKind(kind As SyntaxKind) As SyntaxKind Select Case kind Case SyntaxKind.EndIfStatement Return SyntaxKind.IfKeyword Case SyntaxKind.EndUsingStatement Return SyntaxKind.UsingKeyword Case SyntaxKind.EndWithStatement Return SyntaxKind.WithKeyword Case SyntaxKind.EndSelectStatement Return SyntaxKind.SelectKeyword Case SyntaxKind.EndStructureStatement Return SyntaxKind.StructureKeyword Case SyntaxKind.EndEnumStatement Return SyntaxKind.EnumKeyword Case SyntaxKind.EndInterfaceStatement Return SyntaxKind.InterfaceKeyword Case SyntaxKind.EndClassStatement Return SyntaxKind.ClassKeyword Case SyntaxKind.EndModuleStatement Return SyntaxKind.ModuleKeyword Case SyntaxKind.EndNamespaceStatement Return SyntaxKind.NamespaceKeyword Case SyntaxKind.EndSubStatement Return SyntaxKind.SubKeyword Case SyntaxKind.EndFunctionStatement Return SyntaxKind.FunctionKeyword Case SyntaxKind.EndGetStatement Return SyntaxKind.GetKeyword Case SyntaxKind.EndSetStatement Return SyntaxKind.SetKeyword Case SyntaxKind.EndPropertyStatement Return SyntaxKind.PropertyKeyword Case SyntaxKind.EndOperatorStatement Return SyntaxKind.OperatorKeyword Case SyntaxKind.EndEventStatement Return SyntaxKind.EventKeyword Case SyntaxKind.EndAddHandlerStatement Return SyntaxKind.AddHandlerKeyword Case SyntaxKind.EndRemoveHandlerStatement Return SyntaxKind.RemoveHandlerKeyword Case SyntaxKind.EndRaiseEventStatement Return SyntaxKind.RaiseEventKeyword Case SyntaxKind.EndWhileStatement Return SyntaxKind.WhileKeyword Case SyntaxKind.EndTryStatement Return SyntaxKind.TryKeyword Case SyntaxKind.EndSyncLockStatement Return SyntaxKind.SyncLockKeyword Case Else Throw New ArgumentException("BlockKeyword") End Select End Function ''' <summary> ''' Represents an "End XXX" statement, where XXX is a single keyword. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' EndBlockStatementSyntax. One of EndIfStatement, EndUsingStatement, ''' EndWithStatement, EndSelectStatement, EndStructureStatement, EndEnumStatement, ''' EndInterfaceStatement, EndClassStatement, EndModuleStatement, ''' EndNamespaceStatement, EndSubStatement, EndFunctionStatement, EndGetStatement, ''' EndSetStatement, EndPropertyStatement, EndOperatorStatement, EndEventStatement, ''' EndAddHandlerStatement, EndRemoveHandlerStatement, EndRaiseEventStatement, ''' EndWhileStatement, EndTryStatement, EndSyncLockStatement. ''' </param> ''' <param name="blockKeyword"> ''' The keyword that ends the block. Must be one of: "If", "Using", "With", ''' "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", ''' "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", ''' "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". ''' </param> Public Shared Function EndBlockStatement(ByVal kind As SyntaxKind, blockKeyword As SyntaxToken) As EndBlockStatementSyntax Return SyntaxFactory.EndBlockStatement(kind, SyntaxFactory.Token(SyntaxKind.EndKeyword), blockKeyword) End Function ''' <summary> ''' Represents an entire source file of VB code. ''' </summary> ''' <param name="options"> ''' Represents the list of Option statements at the beginning of a source file. ''' </param> ''' <param name="imports"> ''' Represents the list of Imports statements at the beginning of a source file. ''' </param> ''' <param name="attributes"> ''' Represents the list of AttributeStatements at the beginning of a source file ''' that contain the Assembly and Module attributes. ''' </param> ''' <param name="members"> ''' Represents the members of the default namespace for this source file: all the ''' top-level type and namespace declarations in the file. May also contain ''' Statements that are not valid ''' </param> ''' <param name="endOfFileToken"> ''' Represents the end of the source file. This token may have trivia (whitespace, ''' comments, ...) attached to it. ''' </param> Public Shared Function CompilationUnit(options As SyntaxList(of OptionStatementSyntax), [imports] As SyntaxList(of ImportsStatementSyntax), attributes As SyntaxList(of AttributesStatementSyntax), members As SyntaxList(of StatementSyntax), endOfFileToken As SyntaxToken) As CompilationUnitSyntax Select Case endOfFileToken.Kind() Case SyntaxKind.EndOfFileToken Case Else Throw new ArgumentException("endOfFileToken") End Select Return New CompilationUnitSyntax(SyntaxKind.CompilationUnit, Nothing, Nothing, options.Node, [imports].Node, attributes.Node, members.Node, DirectCast(endOfFileToken.Node, InternalSyntax.PunctuationSyntax)) End Function ''' <summary> ''' Represents an entire source file of VB code. ''' </summary> ''' <param name="options"> ''' Represents the list of Option statements at the beginning of a source file. ''' </param> ''' <param name="imports"> ''' Represents the list of Imports statements at the beginning of a source file. ''' </param> ''' <param name="attributes"> ''' Represents the list of AttributeStatements at the beginning of a source file ''' that contain the Assembly and Module attributes. ''' </param> ''' <param name="members"> ''' Represents the members of the default namespace for this source file: all the ''' top-level type and namespace declarations in the file. May also contain ''' Statements that are not valid ''' </param> Public Shared Function CompilationUnit(options As SyntaxList(of OptionStatementSyntax), [imports] As SyntaxList(of ImportsStatementSyntax), attributes As SyntaxList(of AttributesStatementSyntax), members As SyntaxList(of StatementSyntax)) As CompilationUnitSyntax Return SyntaxFactory.CompilationUnit(options, [imports], attributes, members, SyntaxFactory.Token(SyntaxKind.EndOfFileToken)) End Function ''' <summary> ''' Represents an entire source file of VB code. ''' </summary> Public Shared Function CompilationUnit() As CompilationUnitSyntax Return SyntaxFactory.CompilationUnit(Nothing, Nothing, Nothing, Nothing, SyntaxFactory.Token(SyntaxKind.EndOfFileToken)) End Function ''' <summary> ''' Represents an Option statement, such as "Option Strict On". ''' </summary> ''' <param name="optionKeyword"> ''' The "Option" keyword. ''' </param> ''' <param name="nameKeyword"> ''' The keyword that identifies the option being set: Explicit, Strict, Compare or ''' Infer. ''' </param> ''' <param name="valueKeyword"> ''' The keyword that identifiers the value being set for the option: On, Off, Text ''' or Binary. ''' </param> Public Shared Function OptionStatement(optionKeyword As SyntaxToken, nameKeyword As SyntaxToken, valueKeyword As SyntaxToken) As OptionStatementSyntax Select Case optionKeyword.Kind() Case SyntaxKind.OptionKeyword Case Else Throw new ArgumentException("optionKeyword") End Select Select Case nameKeyword.Kind() Case SyntaxKind.ExplicitKeyword : Case SyntaxKind.StrictKeyword : Case SyntaxKind.CompareKeyword : Case SyntaxKind.InferKeyword Case Else Throw new ArgumentException("nameKeyword") End Select Return New OptionStatementSyntax(SyntaxKind.OptionStatement, Nothing, Nothing, DirectCast(optionKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(nameKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(valueKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' Represents an Option statement, such as "Option Strict On". ''' </summary> ''' <param name="nameKeyword"> ''' The keyword that identifies the option being set: Explicit, Strict, Compare or ''' Infer. ''' </param> ''' <param name="valueKeyword"> ''' The keyword that identifiers the value being set for the option: On, Off, Text ''' or Binary. ''' </param> Public Shared Function OptionStatement(nameKeyword As SyntaxToken, valueKeyword As SyntaxToken) As OptionStatementSyntax Return SyntaxFactory.OptionStatement(SyntaxFactory.Token(SyntaxKind.OptionKeyword), nameKeyword, valueKeyword) End Function ''' <summary> ''' Represents an Option statement, such as "Option Strict On". ''' </summary> ''' <param name="nameKeyword"> ''' The keyword that identifies the option being set: Explicit, Strict, Compare or ''' Infer. ''' </param> Public Shared Function OptionStatement(nameKeyword As SyntaxToken) As OptionStatementSyntax Return SyntaxFactory.OptionStatement(SyntaxFactory.Token(SyntaxKind.OptionKeyword), nameKeyword, Nothing) End Function ''' <summary> ''' Represents an Imports statement, which has one or more imports clauses. ''' </summary> ''' <param name="importsKeyword"> ''' The "Imports" keyword. ''' </param> ''' <param name="importsClauses"> ''' A list of one or more import clauses. Each clause is either an alias, namespace ''' or XML namespace import. ''' </param> Public Shared Function ImportsStatement(importsKeyword As SyntaxToken, importsClauses As SeparatedSyntaxList(Of ImportsClauseSyntax)) As ImportsStatementSyntax Select Case importsKeyword.Kind() Case SyntaxKind.ImportsKeyword Case Else Throw new ArgumentException("importsKeyword") End Select Return New ImportsStatementSyntax(SyntaxKind.ImportsStatement, Nothing, Nothing, DirectCast(importsKeyword.Node, InternalSyntax.KeywordSyntax), importsClauses.Node) End Function ''' <summary> ''' Represents an Imports statement, which has one or more imports clauses. ''' </summary> ''' <param name="importsClauses"> ''' A list of one or more import clauses. Each clause is either an alias, namespace ''' or XML namespace import. ''' </param> Public Shared Function ImportsStatement(importsClauses As SeparatedSyntaxList(Of ImportsClauseSyntax)) As ImportsStatementSyntax Return SyntaxFactory.ImportsStatement(SyntaxFactory.Token(SyntaxKind.ImportsKeyword), importsClauses) End Function ''' <summary> ''' Represents an Imports statement, which has one or more imports clauses. ''' </summary> Public Shared Function ImportsStatement() As ImportsStatementSyntax Return SyntaxFactory.ImportsStatement(SyntaxFactory.Token(SyntaxKind.ImportsKeyword), Nothing) End Function ''' <summary> ''' Represents the clause of an Imports statement that imports all members of a ''' type or namespace or aliases a type or namespace. ''' </summary> ''' <param name="alias"> ''' An optional alias for the namespace or type being imported. ''' </param> ''' <param name="name"> ''' The namespace or type being imported. ''' </param> Public Shared Function SimpleImportsClause([alias] As ImportAliasClauseSyntax, name As NameSyntax) As SimpleImportsClauseSyntax if name Is Nothing Then Throw New ArgumentNullException(NameOf(name)) End If Select Case name.Kind() Case SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference Case Else Throw new ArgumentException("name") End Select Return New SimpleImportsClauseSyntax(SyntaxKind.SimpleImportsClause, Nothing, Nothing, [alias], name) End Function ''' <summary> ''' Represents the clause of an Imports statement that imports all members of a ''' type or namespace or aliases a type or namespace. ''' </summary> ''' <param name="name"> ''' The namespace or type being imported. ''' </param> Public Shared Function SimpleImportsClause(name As NameSyntax) As SimpleImportsClauseSyntax Return SyntaxFactory.SimpleImportsClause(Nothing, name) End Function ''' <summary> ''' Represents an alias identifier followed by an "=" token in an Imports clause. ''' </summary> ''' <param name="identifier"> ''' The identifier being introduced. ''' </param> ''' <param name="equalsToken"> ''' The "=" token. ''' </param> Public Shared Function ImportAliasClause(identifier As SyntaxToken, equalsToken As SyntaxToken) As ImportAliasClauseSyntax Select Case identifier.Kind() Case SyntaxKind.IdentifierToken Case Else Throw new ArgumentException("identifier") End Select Select Case equalsToken.Kind() Case SyntaxKind.EqualsToken Case Else Throw new ArgumentException("equalsToken") End Select Return New ImportAliasClauseSyntax(SyntaxKind.ImportAliasClause, Nothing, Nothing, DirectCast(identifier.Node, InternalSyntax.IdentifierTokenSyntax), DirectCast(equalsToken.Node, InternalSyntax.PunctuationSyntax)) End Function ''' <summary> ''' Represents an alias identifier followed by an "=" token in an Imports clause. ''' </summary> ''' <param name="identifier"> ''' The identifier being introduced. ''' </param> Public Shared Function ImportAliasClause(identifier As SyntaxToken) As ImportAliasClauseSyntax Return SyntaxFactory.ImportAliasClause(identifier, SyntaxFactory.Token(SyntaxKind.EqualsToken)) End Function ''' <summary> ''' Represents an alias identifier followed by an "=" token in an Imports clause. ''' </summary> ''' <param name="identifier"> ''' The identifier being introduced. ''' </param> Public Shared Function ImportAliasClause(identifier As String) As ImportAliasClauseSyntax Return SyntaxFactory.ImportAliasClause(SyntaxFactory.Identifier(identifier), SyntaxFactory.Token(SyntaxKind.EqualsToken)) End Function ''' <summary> ''' Defines a XML namespace for XML expressions. ''' </summary> ''' <param name="xmlNamespace"> ''' Identifies the XML namespace alias and URI. ''' </param> Public Shared Function XmlNamespaceImportsClause(lessThanToken As SyntaxToken, xmlNamespace As XmlAttributeSyntax, greaterThanToken As SyntaxToken) As XmlNamespaceImportsClauseSyntax Select Case lessThanToken.Kind() Case SyntaxKind.LessThanToken Case Else Throw new ArgumentException("lessThanToken") End Select if xmlNamespace Is Nothing Then Throw New ArgumentNullException(NameOf(xmlNamespace)) End If Select Case xmlNamespace.Kind() Case SyntaxKind.XmlAttribute Case Else Throw new ArgumentException("xmlNamespace") End Select Select Case greaterThanToken.Kind() Case SyntaxKind.GreaterThanToken Case Else Throw new ArgumentException("greaterThanToken") End Select Return New XmlNamespaceImportsClauseSyntax(SyntaxKind.XmlNamespaceImportsClause, Nothing, Nothing, DirectCast(lessThanToken.Node, InternalSyntax.PunctuationSyntax), xmlNamespace, DirectCast(greaterThanToken.Node, InternalSyntax.PunctuationSyntax)) End Function ''' <summary> ''' Defines a XML namespace for XML expressions. ''' </summary> ''' <param name="xmlNamespace"> ''' Identifies the XML namespace alias and URI. ''' </param> Public Shared Function XmlNamespaceImportsClause(xmlNamespace As XmlAttributeSyntax) As XmlNamespaceImportsClauseSyntax Return SyntaxFactory.XmlNamespaceImportsClause(SyntaxFactory.Token(SyntaxKind.LessThanToken), xmlNamespace, SyntaxFactory.Token(SyntaxKind.GreaterThanToken)) End Function ''' <summary> ''' Represents a Namespace statement, its contents and the End Namespace statement. ''' </summary> ''' <param name="namespaceStatement"> ''' The statement that begins the NamespaceBlock. ''' </param> ''' <param name="members"> ''' The declarations contained in the namespace statement. ''' </param> ''' <param name="endNamespaceStatement"> ''' The End Namespace statement that ends the block. ''' </param> Public Shared Function NamespaceBlock(namespaceStatement As NamespaceStatementSyntax, members As SyntaxList(of StatementSyntax), endNamespaceStatement As EndBlockStatementSyntax) As NamespaceBlockSyntax if namespaceStatement Is Nothing Then Throw New ArgumentNullException(NameOf(namespaceStatement)) End If Select Case namespaceStatement.Kind() Case SyntaxKind.NamespaceStatement Case Else Throw new ArgumentException("namespaceStatement") End Select if endNamespaceStatement Is Nothing Then Throw New ArgumentNullException(NameOf(endNamespaceStatement)) End If Select Case endNamespaceStatement.Kind() Case SyntaxKind.EndNamespaceStatement Case Else Throw new ArgumentException("endNamespaceStatement") End Select Return New NamespaceBlockSyntax(SyntaxKind.NamespaceBlock, Nothing, Nothing, namespaceStatement, members.Node, endNamespaceStatement) End Function ''' <summary> ''' Represents a Namespace statement, its contents and the End Namespace statement. ''' </summary> ''' <param name="namespaceStatement"> ''' The statement that begins the NamespaceBlock. ''' </param> ''' <param name="members"> ''' The declarations contained in the namespace statement. ''' </param> Public Shared Function NamespaceBlock(namespaceStatement As NamespaceStatementSyntax, members As SyntaxList(of StatementSyntax)) As NamespaceBlockSyntax Return SyntaxFactory.NamespaceBlock(namespaceStatement, members, SyntaxFactory.EndNamespaceStatement()) End Function ''' <summary> ''' Represents a Namespace statement, its contents and the End Namespace statement. ''' </summary> ''' <param name="namespaceStatement"> ''' The statement that begins the NamespaceBlock. ''' </param> Public Shared Function NamespaceBlock(namespaceStatement As NamespaceStatementSyntax) As NamespaceBlockSyntax Return SyntaxFactory.NamespaceBlock(namespaceStatement, Nothing, SyntaxFactory.EndNamespaceStatement()) End Function ''' <summary> ''' Represents the beginning statement of a namespace declaration. This node always ''' appears as the Begin of a BlockStatement with Kind=NamespaceBlock. ''' </summary> ''' <param name="namespaceKeyword"> ''' The "Namespace" keyword. ''' </param> ''' <param name="name"> ''' A (possibly dotted) name denoting the namespace being declared. ''' </param> Public Shared Function NamespaceStatement(namespaceKeyword As SyntaxToken, name As NameSyntax) As NamespaceStatementSyntax Select Case namespaceKeyword.Kind() Case SyntaxKind.NamespaceKeyword Case Else Throw new ArgumentException("namespaceKeyword") End Select if name Is Nothing Then Throw New ArgumentNullException(NameOf(name)) End If Select Case name.Kind() Case SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference Case Else Throw new ArgumentException("name") End Select Return New NamespaceStatementSyntax(SyntaxKind.NamespaceStatement, Nothing, Nothing, DirectCast(namespaceKeyword.Node, InternalSyntax.KeywordSyntax), name) End Function ''' <summary> ''' Represents the beginning statement of a namespace declaration. This node always ''' appears as the Begin of a BlockStatement with Kind=NamespaceBlock. ''' </summary> ''' <param name="name"> ''' A (possibly dotted) name denoting the namespace being declared. ''' </param> Public Shared Function NamespaceStatement(name As NameSyntax) As NamespaceStatementSyntax Return SyntaxFactory.NamespaceStatement(SyntaxFactory.Token(SyntaxKind.NamespaceKeyword), name) End Function ''' <summary> ''' Represents a declaration of Module, its contents and the End statement that ''' ends it. ''' </summary> ''' <param name="moduleStatement"> ''' The "Module" statement that begins the block. ''' </param> ''' <param name="inherits"> ''' A list of the Inherits declarations for the type. ''' </param> ''' <param name="implements"> ''' A list of the Implements declarations for the type. ''' </param> ''' <param name="members"> ''' The declarations contained in the type or module. ''' </param> ''' <param name="endModuleStatement"> ''' The "End Module" statement that ends the block. ''' </param> Public Shared Function ModuleBlock(moduleStatement As ModuleStatementSyntax, [inherits] As SyntaxList(of InheritsStatementSyntax), [implements] As SyntaxList(of ImplementsStatementSyntax), members As SyntaxList(of StatementSyntax), endModuleStatement As EndBlockStatementSyntax) As ModuleBlockSyntax if moduleStatement Is Nothing Then Throw New ArgumentNullException(NameOf(moduleStatement)) End If Select Case moduleStatement.Kind() Case SyntaxKind.ModuleStatement Case Else Throw new ArgumentException("moduleStatement") End Select if endModuleStatement Is Nothing Then Throw New ArgumentNullException(NameOf(endModuleStatement)) End If Select Case endModuleStatement.Kind() Case SyntaxKind.EndModuleStatement Case Else Throw new ArgumentException("endModuleStatement") End Select Return New ModuleBlockSyntax(SyntaxKind.ModuleBlock, Nothing, Nothing, moduleStatement, [inherits].Node, [implements].Node, members.Node, endModuleStatement) End Function ''' <summary> ''' Represents a declaration of Module, its contents and the End statement that ''' ends it. ''' </summary> ''' <param name="moduleStatement"> ''' The "Module" statement that begins the block. ''' </param> ''' <param name="inherits"> ''' A list of the Inherits declarations for the type. ''' </param> ''' <param name="implements"> ''' A list of the Implements declarations for the type. ''' </param> ''' <param name="members"> ''' The declarations contained in the type or module. ''' </param> Public Shared Function ModuleBlock(moduleStatement As ModuleStatementSyntax, [inherits] As SyntaxList(of InheritsStatementSyntax), [implements] As SyntaxList(of ImplementsStatementSyntax), members As SyntaxList(of StatementSyntax)) As ModuleBlockSyntax Return SyntaxFactory.ModuleBlock(moduleStatement, [inherits], [implements], members, SyntaxFactory.EndModuleStatement()) End Function ''' <summary> ''' Represents a declaration of Module, its contents and the End statement that ''' ends it. ''' </summary> ''' <param name="moduleStatement"> ''' The "Module" statement that begins the block. ''' </param> Public Shared Function ModuleBlock(moduleStatement As ModuleStatementSyntax) As ModuleBlockSyntax Return SyntaxFactory.ModuleBlock(moduleStatement, Nothing, Nothing, Nothing, SyntaxFactory.EndModuleStatement()) End Function ''' <summary> ''' Represents a declaration of a Structure, its contents and the End statement ''' that ends it. ''' </summary> ''' <param name="structureStatement"> ''' The "Structure" statement that begins the block. ''' </param> ''' <param name="inherits"> ''' A list of the Inherits declarations for the type. ''' </param> ''' <param name="implements"> ''' A list of the Implements declarations for the type. ''' </param> ''' <param name="members"> ''' The declarations contained in the type or module. ''' </param> ''' <param name="endStructureStatement"> ''' The "End Structure" statement that ends the block. ''' </param> Public Shared Function StructureBlock(structureStatement As StructureStatementSyntax, [inherits] As SyntaxList(of InheritsStatementSyntax), [implements] As SyntaxList(of ImplementsStatementSyntax), members As SyntaxList(of StatementSyntax), endStructureStatement As EndBlockStatementSyntax) As StructureBlockSyntax if structureStatement Is Nothing Then Throw New ArgumentNullException(NameOf(structureStatement)) End If Select Case structureStatement.Kind() Case SyntaxKind.StructureStatement Case Else Throw new ArgumentException("structureStatement") End Select if endStructureStatement Is Nothing Then Throw New ArgumentNullException(NameOf(endStructureStatement)) End If Select Case endStructureStatement.Kind() Case SyntaxKind.EndStructureStatement Case Else Throw new ArgumentException("endStructureStatement") End Select Return New StructureBlockSyntax(SyntaxKind.StructureBlock, Nothing, Nothing, structureStatement, [inherits].Node, [implements].Node, members.Node, endStructureStatement) End Function ''' <summary> ''' Represents a declaration of a Structure, its contents and the End statement ''' that ends it. ''' </summary> ''' <param name="structureStatement"> ''' The "Structure" statement that begins the block. ''' </param> ''' <param name="inherits"> ''' A list of the Inherits declarations for the type. ''' </param> ''' <param name="implements"> ''' A list of the Implements declarations for the type. ''' </param> ''' <param name="members"> ''' The declarations contained in the type or module. ''' </param> Public Shared Function StructureBlock(structureStatement As StructureStatementSyntax, [inherits] As SyntaxList(of InheritsStatementSyntax), [implements] As SyntaxList(of ImplementsStatementSyntax), members As SyntaxList(of StatementSyntax)) As StructureBlockSyntax Return SyntaxFactory.StructureBlock(structureStatement, [inherits], [implements], members, SyntaxFactory.EndStructureStatement()) End Function ''' <summary> ''' Represents a declaration of a Structure, its contents and the End statement ''' that ends it. ''' </summary> ''' <param name="structureStatement"> ''' The "Structure" statement that begins the block. ''' </param> Public Shared Function StructureBlock(structureStatement As StructureStatementSyntax) As StructureBlockSyntax Return SyntaxFactory.StructureBlock(structureStatement, Nothing, Nothing, Nothing, SyntaxFactory.EndStructureStatement()) End Function ''' <summary> ''' Represents a declaration of a Interface, its contents and the End statement ''' that ends it. ''' </summary> ''' <param name="interfaceStatement"> ''' The "Interface" statement that begins the block. ''' </param> ''' <param name="inherits"> ''' A list of the Inherits declarations for the type. ''' </param> ''' <param name="implements"> ''' A list of the Implements declarations for the type. ''' </param> ''' <param name="members"> ''' The declarations contained in the type or module. ''' </param> ''' <param name="endInterfaceStatement"> ''' The "End Interface" statement that ends the block. ''' </param> Public Shared Function InterfaceBlock(interfaceStatement As InterfaceStatementSyntax, [inherits] As SyntaxList(of InheritsStatementSyntax), [implements] As SyntaxList(of ImplementsStatementSyntax), members As SyntaxList(of StatementSyntax), endInterfaceStatement As EndBlockStatementSyntax) As InterfaceBlockSyntax if interfaceStatement Is Nothing Then Throw New ArgumentNullException(NameOf(interfaceStatement)) End If Select Case interfaceStatement.Kind() Case SyntaxKind.InterfaceStatement Case Else Throw new ArgumentException("interfaceStatement") End Select if endInterfaceStatement Is Nothing Then Throw New ArgumentNullException(NameOf(endInterfaceStatement)) End If Select Case endInterfaceStatement.Kind() Case SyntaxKind.EndInterfaceStatement Case Else Throw new ArgumentException("endInterfaceStatement") End Select Return New InterfaceBlockSyntax(SyntaxKind.InterfaceBlock, Nothing, Nothing, interfaceStatement, [inherits].Node, [implements].Node, members.Node, endInterfaceStatement) End Function ''' <summary> ''' Represents a declaration of a Interface, its contents and the End statement ''' that ends it. ''' </summary> ''' <param name="interfaceStatement"> ''' The "Interface" statement that begins the block. ''' </param> ''' <param name="inherits"> ''' A list of the Inherits declarations for the type. ''' </param> ''' <param name="implements"> ''' A list of the Implements declarations for the type. ''' </param> ''' <param name="members"> ''' The declarations contained in the type or module. ''' </param> Public Shared Function InterfaceBlock(interfaceStatement As InterfaceStatementSyntax, [inherits] As SyntaxList(of InheritsStatementSyntax), [implements] As SyntaxList(of ImplementsStatementSyntax), members As SyntaxList(of StatementSyntax)) As InterfaceBlockSyntax Return SyntaxFactory.InterfaceBlock(interfaceStatement, [inherits], [implements], members, SyntaxFactory.EndInterfaceStatement()) End Function ''' <summary> ''' Represents a declaration of a Interface, its contents and the End statement ''' that ends it. ''' </summary> ''' <param name="interfaceStatement"> ''' The "Interface" statement that begins the block. ''' </param> Public Shared Function InterfaceBlock(interfaceStatement As InterfaceStatementSyntax) As InterfaceBlockSyntax Return SyntaxFactory.InterfaceBlock(interfaceStatement, Nothing, Nothing, Nothing, SyntaxFactory.EndInterfaceStatement()) End Function ''' <summary> ''' Represents a declaration of a Class its contents and the End statement that ''' ends it. ''' </summary> ''' <param name="classStatement"> ''' The "Class" statement that begins the block. ''' </param> ''' <param name="inherits"> ''' A list of the Inherits declarations for the type. ''' </param> ''' <param name="implements"> ''' A list of the Implements declarations for the type. ''' </param> ''' <param name="members"> ''' The declarations contained in the type or module. ''' </param> ''' <param name="endClassStatement"> ''' The "End Class" statement that ends the block. ''' </param> Public Shared Function ClassBlock(classStatement As ClassStatementSyntax, [inherits] As SyntaxList(of InheritsStatementSyntax), [implements] As SyntaxList(of ImplementsStatementSyntax), members As SyntaxList(of StatementSyntax), endClassStatement As EndBlockStatementSyntax) As ClassBlockSyntax if classStatement Is Nothing Then Throw New ArgumentNullException(NameOf(classStatement)) End If Select Case classStatement.Kind() Case SyntaxKind.ClassStatement Case Else Throw new ArgumentException("classStatement") End Select if endClassStatement Is Nothing Then Throw New ArgumentNullException(NameOf(endClassStatement)) End If Select Case endClassStatement.Kind() Case SyntaxKind.EndClassStatement Case Else Throw new ArgumentException("endClassStatement") End Select Return New ClassBlockSyntax(SyntaxKind.ClassBlock, Nothing, Nothing, classStatement, [inherits].Node, [implements].Node, members.Node, endClassStatement) End Function ''' <summary> ''' Represents a declaration of a Class its contents and the End statement that ''' ends it. ''' </summary> ''' <param name="classStatement"> ''' The "Class" statement that begins the block. ''' </param> ''' <param name="inherits"> ''' A list of the Inherits declarations for the type. ''' </param> ''' <param name="implements"> ''' A list of the Implements declarations for the type. ''' </param> ''' <param name="members"> ''' The declarations contained in the type or module. ''' </param> Public Shared Function ClassBlock(classStatement As ClassStatementSyntax, [inherits] As SyntaxList(of InheritsStatementSyntax), [implements] As SyntaxList(of ImplementsStatementSyntax), members As SyntaxList(of StatementSyntax)) As ClassBlockSyntax Return SyntaxFactory.ClassBlock(classStatement, [inherits], [implements], members, SyntaxFactory.EndClassStatement()) End Function ''' <summary> ''' Represents a declaration of a Class its contents and the End statement that ''' ends it. ''' </summary> ''' <param name="classStatement"> ''' The "Class" statement that begins the block. ''' </param> Public Shared Function ClassBlock(classStatement As ClassStatementSyntax) As ClassBlockSyntax Return SyntaxFactory.ClassBlock(classStatement, Nothing, Nothing, Nothing, SyntaxFactory.EndClassStatement()) End Function ''' <summary> ''' Represents a declaration of an Enum, its contents and the End Enum statement ''' that ends it. ''' </summary> ''' <param name="enumStatement"> ''' The statement that begins the type or module. ''' </param> ''' <param name="members"> ''' The declarations contained in the enumeration. ''' </param> ''' <param name="endEnumStatement"> ''' The End XXX statement that ends the block. ''' </param> Public Shared Function EnumBlock(enumStatement As EnumStatementSyntax, members As SyntaxList(of StatementSyntax), endEnumStatement As EndBlockStatementSyntax) As EnumBlockSyntax if enumStatement Is Nothing Then Throw New ArgumentNullException(NameOf(enumStatement)) End If Select Case enumStatement.Kind() Case SyntaxKind.EnumStatement Case Else Throw new ArgumentException("enumStatement") End Select if endEnumStatement Is Nothing Then Throw New ArgumentNullException(NameOf(endEnumStatement)) End If Select Case endEnumStatement.Kind() Case SyntaxKind.EndEnumStatement Case Else Throw new ArgumentException("endEnumStatement") End Select Return New EnumBlockSyntax(SyntaxKind.EnumBlock, Nothing, Nothing, enumStatement, members.Node, endEnumStatement) End Function ''' <summary> ''' Represents a declaration of an Enum, its contents and the End Enum statement ''' that ends it. ''' </summary> ''' <param name="enumStatement"> ''' The statement that begins the type or module. ''' </param> ''' <param name="members"> ''' The declarations contained in the enumeration. ''' </param> Public Shared Function EnumBlock(enumStatement As EnumStatementSyntax, members As SyntaxList(of StatementSyntax)) As EnumBlockSyntax Return SyntaxFactory.EnumBlock(enumStatement, members, SyntaxFactory.EndEnumStatement()) End Function ''' <summary> ''' Represents a declaration of an Enum, its contents and the End Enum statement ''' that ends it. ''' </summary> ''' <param name="enumStatement"> ''' The statement that begins the type or module. ''' </param> Public Shared Function EnumBlock(enumStatement As EnumStatementSyntax) As EnumBlockSyntax Return SyntaxFactory.EnumBlock(enumStatement, Nothing, SyntaxFactory.EndEnumStatement()) End Function ''' <summary> ''' Represents an Inherits statement in a Class, Structure or Interface. ''' </summary> ''' <param name="inheritsKeyword"> ''' The "Inherits" keyword. ''' </param> ''' <param name="types"> ''' A list of the types being inherited. ''' </param> Public Shared Function InheritsStatement(inheritsKeyword As SyntaxToken, types As SeparatedSyntaxList(Of TypeSyntax)) As InheritsStatementSyntax Select Case inheritsKeyword.Kind() Case SyntaxKind.InheritsKeyword Case Else Throw new ArgumentException("inheritsKeyword") End Select Return New InheritsStatementSyntax(SyntaxKind.InheritsStatement, Nothing, Nothing, DirectCast(inheritsKeyword.Node, InternalSyntax.KeywordSyntax), types.Node) End Function ''' <summary> ''' Represents an Inherits statement in a Class, Structure or Interface. ''' </summary> ''' <param name="types"> ''' A list of the types being inherited. ''' </param> Public Shared Function InheritsStatement(types As SeparatedSyntaxList(Of TypeSyntax)) As InheritsStatementSyntax Return SyntaxFactory.InheritsStatement(SyntaxFactory.Token(SyntaxKind.InheritsKeyword), types) End Function ''' <summary> ''' Represents an Inherits statement in a Class, Structure or Interface. ''' </summary> ''' <param name="types"> ''' A list of the types being inherited. ''' </param> Public Shared Function InheritsStatement(ParamArray types As TypeSyntax()) As InheritsStatementSyntax Return SyntaxFactory.InheritsStatement(SyntaxFactory.Token(SyntaxKind.InheritsKeyword), SyntaxFactory.SeparatedList(Of TypeSyntax)().AddRange(types)) End Function ''' <summary> ''' Represents an Implements statement in a Class or Structure. ''' </summary> ''' <param name="implementsKeyword"> ''' The "Implements" keyword. ''' </param> ''' <param name="types"> ''' A list of the types being implemented. ''' </param> Public Shared Function ImplementsStatement(implementsKeyword As SyntaxToken, types As SeparatedSyntaxList(Of TypeSyntax)) As ImplementsStatementSyntax Select Case implementsKeyword.Kind() Case SyntaxKind.ImplementsKeyword Case Else Throw new ArgumentException("implementsKeyword") End Select Return New ImplementsStatementSyntax(SyntaxKind.ImplementsStatement, Nothing, Nothing, DirectCast(implementsKeyword.Node, InternalSyntax.KeywordSyntax), types.Node) End Function ''' <summary> ''' Represents an Implements statement in a Class or Structure. ''' </summary> ''' <param name="types"> ''' A list of the types being implemented. ''' </param> Public Shared Function ImplementsStatement(types As SeparatedSyntaxList(Of TypeSyntax)) As ImplementsStatementSyntax Return SyntaxFactory.ImplementsStatement(SyntaxFactory.Token(SyntaxKind.ImplementsKeyword), types) End Function ''' <summary> ''' Represents an Implements statement in a Class or Structure. ''' </summary> ''' <param name="types"> ''' A list of the types being implemented. ''' </param> Public Shared Function ImplementsStatement(ParamArray types As TypeSyntax()) As ImplementsStatementSyntax Return SyntaxFactory.ImplementsStatement(SyntaxFactory.Token(SyntaxKind.ImplementsKeyword), SyntaxFactory.SeparatedList(Of TypeSyntax)().AddRange(types)) End Function ''' <summary> ''' Represents the beginning statement of a Module declaration. This node always ''' appears as the Begin of a TypeBlock with Kind=ModuleDeclarationBlock. ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, an empty list is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. ''' </param> ''' <param name="moduleKeyword"> ''' The "Module" keyword. ''' </param> ''' <param name="identifier"> ''' The name of the type being declared. ''' </param> ''' <param name="typeParameterList"> ''' If present, a type parameter list with generic parameters for this type. If no ''' generic parameters were present, Nothing is returned. ''' </param> Public Shared Function ModuleStatement(attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, moduleKeyword As SyntaxToken, identifier As SyntaxToken, typeParameterList As TypeParameterListSyntax) As ModuleStatementSyntax Select Case moduleKeyword.Kind() Case SyntaxKind.ModuleKeyword Case Else Throw new ArgumentException("moduleKeyword") End Select Select Case identifier.Kind() Case SyntaxKind.IdentifierToken Case Else Throw new ArgumentException("identifier") End Select Return New ModuleStatementSyntax(SyntaxKind.ModuleStatement, Nothing, Nothing, attributeLists.Node, modifiers.Node, DirectCast(moduleKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(identifier.Node, InternalSyntax.IdentifierTokenSyntax), typeParameterList) End Function ''' <summary> ''' Represents the beginning statement of a Module declaration. This node always ''' appears as the Begin of a TypeBlock with Kind=ModuleDeclarationBlock. ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, an empty list is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. ''' </param> ''' <param name="identifier"> ''' The name of the type being declared. ''' </param> ''' <param name="typeParameterList"> ''' If present, a type parameter list with generic parameters for this type. If no ''' generic parameters were present, Nothing is returned. ''' </param> Public Shared Function ModuleStatement(attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, identifier As SyntaxToken, typeParameterList As TypeParameterListSyntax) As ModuleStatementSyntax Return SyntaxFactory.ModuleStatement(attributeLists, modifiers, SyntaxFactory.Token(SyntaxKind.ModuleKeyword), identifier, typeParameterList) End Function ''' <summary> ''' Represents the beginning statement of a Module declaration. This node always ''' appears as the Begin of a TypeBlock with Kind=ModuleDeclarationBlock. ''' </summary> ''' <param name="identifier"> ''' The name of the type being declared. ''' </param> Public Shared Function ModuleStatement(identifier As SyntaxToken) As ModuleStatementSyntax Return SyntaxFactory.ModuleStatement(Nothing, Nothing, SyntaxFactory.Token(SyntaxKind.ModuleKeyword), identifier, Nothing) End Function ''' <summary> ''' Represents the beginning statement of a Module declaration. This node always ''' appears as the Begin of a TypeBlock with Kind=ModuleDeclarationBlock. ''' </summary> ''' <param name="identifier"> ''' The name of the type being declared. ''' </param> Public Shared Function ModuleStatement(identifier As String) As ModuleStatementSyntax Return SyntaxFactory.ModuleStatement(Nothing, Nothing, SyntaxFactory.Token(SyntaxKind.ModuleKeyword), SyntaxFactory.Identifier(identifier), Nothing) End Function ''' <summary> ''' Represents the beginning statement of a Structure declaration. This node always ''' appears as the Begin of a TypeBlock with Kind=StructureDeclarationBlock. ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, an empty list is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. ''' </param> ''' <param name="structureKeyword"> ''' The "Structure" keyword. ''' </param> ''' <param name="identifier"> ''' The name of the type being declared. ''' </param> ''' <param name="typeParameterList"> ''' If present, a type parameter list with generic parameters for this type. If no ''' generic parameters were present, Nothing is returned. ''' </param> Public Shared Function StructureStatement(attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, structureKeyword As SyntaxToken, identifier As SyntaxToken, typeParameterList As TypeParameterListSyntax) As StructureStatementSyntax Select Case structureKeyword.Kind() Case SyntaxKind.StructureKeyword Case Else Throw new ArgumentException("structureKeyword") End Select Select Case identifier.Kind() Case SyntaxKind.IdentifierToken Case Else Throw new ArgumentException("identifier") End Select Return New StructureStatementSyntax(SyntaxKind.StructureStatement, Nothing, Nothing, attributeLists.Node, modifiers.Node, DirectCast(structureKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(identifier.Node, InternalSyntax.IdentifierTokenSyntax), typeParameterList) End Function ''' <summary> ''' Represents the beginning statement of a Structure declaration. This node always ''' appears as the Begin of a TypeBlock with Kind=StructureDeclarationBlock. ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, an empty list is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. ''' </param> ''' <param name="identifier"> ''' The name of the type being declared. ''' </param> ''' <param name="typeParameterList"> ''' If present, a type parameter list with generic parameters for this type. If no ''' generic parameters were present, Nothing is returned. ''' </param> Public Shared Function StructureStatement(attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, identifier As SyntaxToken, typeParameterList As TypeParameterListSyntax) As StructureStatementSyntax Return SyntaxFactory.StructureStatement(attributeLists, modifiers, SyntaxFactory.Token(SyntaxKind.StructureKeyword), identifier, typeParameterList) End Function ''' <summary> ''' Represents the beginning statement of a Structure declaration. This node always ''' appears as the Begin of a TypeBlock with Kind=StructureDeclarationBlock. ''' </summary> ''' <param name="identifier"> ''' The name of the type being declared. ''' </param> Public Shared Function StructureStatement(identifier As SyntaxToken) As StructureStatementSyntax Return SyntaxFactory.StructureStatement(Nothing, Nothing, SyntaxFactory.Token(SyntaxKind.StructureKeyword), identifier, Nothing) End Function ''' <summary> ''' Represents the beginning statement of a Structure declaration. This node always ''' appears as the Begin of a TypeBlock with Kind=StructureDeclarationBlock. ''' </summary> ''' <param name="identifier"> ''' The name of the type being declared. ''' </param> Public Shared Function StructureStatement(identifier As String) As StructureStatementSyntax Return SyntaxFactory.StructureStatement(Nothing, Nothing, SyntaxFactory.Token(SyntaxKind.StructureKeyword), SyntaxFactory.Identifier(identifier), Nothing) End Function ''' <summary> ''' Represents the beginning statement of a Interface declaration. This node always ''' appears as the Begin of a TypeBlock with Kind=InterfaceDeclarationBlock. ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, an empty list is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. ''' </param> ''' <param name="interfaceKeyword"> ''' The "Interface" keyword. ''' </param> ''' <param name="identifier"> ''' The name of the type being declared. ''' </param> ''' <param name="typeParameterList"> ''' If present, a type parameter list with generic parameters for this type. If no ''' generic parameters were present, Nothing is returned. ''' </param> Public Shared Function InterfaceStatement(attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, interfaceKeyword As SyntaxToken, identifier As SyntaxToken, typeParameterList As TypeParameterListSyntax) As InterfaceStatementSyntax Select Case interfaceKeyword.Kind() Case SyntaxKind.InterfaceKeyword Case Else Throw new ArgumentException("interfaceKeyword") End Select Select Case identifier.Kind() Case SyntaxKind.IdentifierToken Case Else Throw new ArgumentException("identifier") End Select Return New InterfaceStatementSyntax(SyntaxKind.InterfaceStatement, Nothing, Nothing, attributeLists.Node, modifiers.Node, DirectCast(interfaceKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(identifier.Node, InternalSyntax.IdentifierTokenSyntax), typeParameterList) End Function ''' <summary> ''' Represents the beginning statement of a Interface declaration. This node always ''' appears as the Begin of a TypeBlock with Kind=InterfaceDeclarationBlock. ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, an empty list is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. ''' </param> ''' <param name="identifier"> ''' The name of the type being declared. ''' </param> ''' <param name="typeParameterList"> ''' If present, a type parameter list with generic parameters for this type. If no ''' generic parameters were present, Nothing is returned. ''' </param> Public Shared Function InterfaceStatement(attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, identifier As SyntaxToken, typeParameterList As TypeParameterListSyntax) As InterfaceStatementSyntax Return SyntaxFactory.InterfaceStatement(attributeLists, modifiers, SyntaxFactory.Token(SyntaxKind.InterfaceKeyword), identifier, typeParameterList) End Function ''' <summary> ''' Represents the beginning statement of a Interface declaration. This node always ''' appears as the Begin of a TypeBlock with Kind=InterfaceDeclarationBlock. ''' </summary> ''' <param name="identifier"> ''' The name of the type being declared. ''' </param> Public Shared Function InterfaceStatement(identifier As SyntaxToken) As InterfaceStatementSyntax Return SyntaxFactory.InterfaceStatement(Nothing, Nothing, SyntaxFactory.Token(SyntaxKind.InterfaceKeyword), identifier, Nothing) End Function ''' <summary> ''' Represents the beginning statement of a Interface declaration. This node always ''' appears as the Begin of a TypeBlock with Kind=InterfaceDeclarationBlock. ''' </summary> ''' <param name="identifier"> ''' The name of the type being declared. ''' </param> Public Shared Function InterfaceStatement(identifier As String) As InterfaceStatementSyntax Return SyntaxFactory.InterfaceStatement(Nothing, Nothing, SyntaxFactory.Token(SyntaxKind.InterfaceKeyword), SyntaxFactory.Identifier(identifier), Nothing) End Function ''' <summary> ''' Represents the beginning statement of a Class declaration. This node always ''' appears as the Begin of a TypeBlock with Kind=ClassDeclarationBlock. ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, an empty list is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. ''' </param> ''' <param name="classKeyword"> ''' The "Class" keyword. ''' </param> ''' <param name="identifier"> ''' The name of the type being declared. ''' </param> ''' <param name="typeParameterList"> ''' If present, a type parameter list with generic parameters for this type. If no ''' generic parameters were present, Nothing is returned. ''' </param> Public Shared Function ClassStatement(attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, classKeyword As SyntaxToken, identifier As SyntaxToken, typeParameterList As TypeParameterListSyntax) As ClassStatementSyntax Select Case classKeyword.Kind() Case SyntaxKind.ClassKeyword Case Else Throw new ArgumentException("classKeyword") End Select Select Case identifier.Kind() Case SyntaxKind.IdentifierToken Case Else Throw new ArgumentException("identifier") End Select Return New ClassStatementSyntax(SyntaxKind.ClassStatement, Nothing, Nothing, attributeLists.Node, modifiers.Node, DirectCast(classKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(identifier.Node, InternalSyntax.IdentifierTokenSyntax), typeParameterList) End Function ''' <summary> ''' Represents the beginning statement of a Class declaration. This node always ''' appears as the Begin of a TypeBlock with Kind=ClassDeclarationBlock. ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, an empty list is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. ''' </param> ''' <param name="identifier"> ''' The name of the type being declared. ''' </param> ''' <param name="typeParameterList"> ''' If present, a type parameter list with generic parameters for this type. If no ''' generic parameters were present, Nothing is returned. ''' </param> Public Shared Function ClassStatement(attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, identifier As SyntaxToken, typeParameterList As TypeParameterListSyntax) As ClassStatementSyntax Return SyntaxFactory.ClassStatement(attributeLists, modifiers, SyntaxFactory.Token(SyntaxKind.ClassKeyword), identifier, typeParameterList) End Function ''' <summary> ''' Represents the beginning statement of a Class declaration. This node always ''' appears as the Begin of a TypeBlock with Kind=ClassDeclarationBlock. ''' </summary> ''' <param name="identifier"> ''' The name of the type being declared. ''' </param> Public Shared Function ClassStatement(identifier As SyntaxToken) As ClassStatementSyntax Return SyntaxFactory.ClassStatement(Nothing, Nothing, SyntaxFactory.Token(SyntaxKind.ClassKeyword), identifier, Nothing) End Function ''' <summary> ''' Represents the beginning statement of a Class declaration. This node always ''' appears as the Begin of a TypeBlock with Kind=ClassDeclarationBlock. ''' </summary> ''' <param name="identifier"> ''' The name of the type being declared. ''' </param> Public Shared Function ClassStatement(identifier As String) As ClassStatementSyntax Return SyntaxFactory.ClassStatement(Nothing, Nothing, SyntaxFactory.Token(SyntaxKind.ClassKeyword), SyntaxFactory.Identifier(identifier), Nothing) End Function ''' <summary> ''' Represents the beginning statement of an Enum declaration. This node always ''' appears as the Begin of an EnumBlock with Kind=EnumDeclarationBlock. ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, an empty list is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. ''' </param> ''' <param name="enumKeyword"> ''' The "Enum" keyword. ''' </param> ''' <param name="identifier"> ''' The name of the enum being declared. ''' </param> ''' <param name="underlyingType"> ''' Optional "As XXX" clause describing the underlying type of the enumeration. If ''' no As clause was specified, Nothing is returned. ''' </param> Public Shared Function EnumStatement(attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, enumKeyword As SyntaxToken, identifier As SyntaxToken, underlyingType As AsClauseSyntax) As EnumStatementSyntax Select Case enumKeyword.Kind() Case SyntaxKind.EnumKeyword Case Else Throw new ArgumentException("enumKeyword") End Select Select Case identifier.Kind() Case SyntaxKind.IdentifierToken Case Else Throw new ArgumentException("identifier") End Select Return New EnumStatementSyntax(SyntaxKind.EnumStatement, Nothing, Nothing, attributeLists.Node, modifiers.Node, DirectCast(enumKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(identifier.Node, InternalSyntax.IdentifierTokenSyntax), underlyingType) End Function ''' <summary> ''' Represents the beginning statement of an Enum declaration. This node always ''' appears as the Begin of an EnumBlock with Kind=EnumDeclarationBlock. ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, an empty list is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. ''' </param> ''' <param name="identifier"> ''' The name of the enum being declared. ''' </param> ''' <param name="underlyingType"> ''' Optional "As XXX" clause describing the underlying type of the enumeration. If ''' no As clause was specified, Nothing is returned. ''' </param> Public Shared Function EnumStatement(attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, identifier As SyntaxToken, underlyingType As AsClauseSyntax) As EnumStatementSyntax Return SyntaxFactory.EnumStatement(attributeLists, modifiers, SyntaxFactory.Token(SyntaxKind.EnumKeyword), identifier, underlyingType) End Function ''' <summary> ''' Represents the beginning statement of an Enum declaration. This node always ''' appears as the Begin of an EnumBlock with Kind=EnumDeclarationBlock. ''' </summary> ''' <param name="identifier"> ''' The name of the enum being declared. ''' </param> Public Shared Function EnumStatement(identifier As SyntaxToken) As EnumStatementSyntax Return SyntaxFactory.EnumStatement(Nothing, Nothing, SyntaxFactory.Token(SyntaxKind.EnumKeyword), identifier, Nothing) End Function ''' <summary> ''' Represents the beginning statement of an Enum declaration. This node always ''' appears as the Begin of an EnumBlock with Kind=EnumDeclarationBlock. ''' </summary> ''' <param name="identifier"> ''' The name of the enum being declared. ''' </param> Public Shared Function EnumStatement(identifier As String) As EnumStatementSyntax Return SyntaxFactory.EnumStatement(Nothing, Nothing, SyntaxFactory.Token(SyntaxKind.EnumKeyword), SyntaxFactory.Identifier(identifier), Nothing) End Function ''' <summary> ''' Represents the type parameter list in a declaration. ''' </summary> ''' <param name="openParenToken"> ''' The "(" token. ''' </param> ''' <param name="ofKeyword"> ''' The "Of" keyword. ''' </param> ''' <param name="parameters"> ''' A list of the type parameters. There must be at least one type parameter in the ''' list. ''' </param> ''' <param name="closeParenToken"> ''' The ")" token. ''' </param> Public Shared Function TypeParameterList(openParenToken As SyntaxToken, ofKeyword As SyntaxToken, parameters As SeparatedSyntaxList(Of TypeParameterSyntax), closeParenToken As SyntaxToken) As TypeParameterListSyntax Select Case openParenToken.Kind() Case SyntaxKind.OpenParenToken Case Else Throw new ArgumentException("openParenToken") End Select Select Case ofKeyword.Kind() Case SyntaxKind.OfKeyword Case Else Throw new ArgumentException("ofKeyword") End Select Select Case closeParenToken.Kind() Case SyntaxKind.CloseParenToken Case Else Throw new ArgumentException("closeParenToken") End Select Return New TypeParameterListSyntax(SyntaxKind.TypeParameterList, Nothing, Nothing, DirectCast(openParenToken.Node, InternalSyntax.PunctuationSyntax), DirectCast(ofKeyword.Node, InternalSyntax.KeywordSyntax), parameters.Node, DirectCast(closeParenToken.Node, InternalSyntax.PunctuationSyntax)) End Function ''' <summary> ''' Represents the type parameter list in a declaration. ''' </summary> ''' <param name="parameters"> ''' A list of the type parameters. There must be at least one type parameter in the ''' list. ''' </param> Public Shared Function TypeParameterList(parameters As SeparatedSyntaxList(Of TypeParameterSyntax)) As TypeParameterListSyntax Return SyntaxFactory.TypeParameterList(SyntaxFactory.Token(SyntaxKind.OpenParenToken), SyntaxFactory.Token(SyntaxKind.OfKeyword), parameters, SyntaxFactory.Token(SyntaxKind.CloseParenToken)) End Function ''' <summary> ''' Represents the type parameter list in a declaration. ''' </summary> ''' <param name="parameters"> ''' A list of the type parameters. There must be at least one type parameter in the ''' list. ''' </param> Public Shared Function TypeParameterList(ParamArray parameters As TypeParameterSyntax()) As TypeParameterListSyntax Return SyntaxFactory.TypeParameterList(SyntaxFactory.Token(SyntaxKind.OpenParenToken), SyntaxFactory.Token(SyntaxKind.OfKeyword), SyntaxFactory.SeparatedList(Of TypeParameterSyntax)().AddRange(parameters), SyntaxFactory.Token(SyntaxKind.CloseParenToken)) End Function ''' <summary> ''' Represents a type parameter on a generic type declaration. ''' </summary> ''' <param name="varianceKeyword"> ''' Represents the "In" or "Out" variance keyword on a type parameter, if present. ''' If no variance modifier was present, Nothing is returned. ''' </param> ''' <param name="identifier"> ''' The name of the type parameter ''' </param> ''' <param name="typeParameterConstraintClause"> ''' The "As" keyword, if any type constraints were supplied. If no type constraints ''' were supplied, Nothing is returned. ''' </param> Public Shared Function TypeParameter(varianceKeyword As SyntaxToken, identifier As SyntaxToken, typeParameterConstraintClause As TypeParameterConstraintClauseSyntax) As TypeParameterSyntax Select Case identifier.Kind() Case SyntaxKind.IdentifierToken Case Else Throw new ArgumentException("identifier") End Select Return New TypeParameterSyntax(SyntaxKind.TypeParameter, Nothing, Nothing, DirectCast(varianceKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(identifier.Node, InternalSyntax.IdentifierTokenSyntax), typeParameterConstraintClause) End Function ''' <summary> ''' Represents a type parameter on a generic type declaration. ''' </summary> ''' <param name="identifier"> ''' The name of the type parameter ''' </param> Public Shared Function TypeParameter(identifier As SyntaxToken) As TypeParameterSyntax Return SyntaxFactory.TypeParameter(Nothing, identifier, Nothing) End Function ''' <summary> ''' Represents a type parameter on a generic type declaration. ''' </summary> ''' <param name="identifier"> ''' The name of the type parameter ''' </param> Public Shared Function TypeParameter(identifier As String) As TypeParameterSyntax Return SyntaxFactory.TypeParameter(Nothing, SyntaxFactory.Identifier(identifier), Nothing) End Function ''' <summary> ''' One of the type parameter constraints clauses. This represents a constraint ''' clause in the form of "As Constraint". ''' </summary> ''' <param name="asKeyword"> ''' The "As" keyword, if any type constraints were supplied. If no type constraints ''' were supplied, Nothing is returned. ''' </param> ''' <param name="constraint"> ''' A list of the supplied constraints. If no constraints were supplied, Nothing is ''' returned. ''' </param> Public Shared Function TypeParameterSingleConstraintClause(asKeyword As SyntaxToken, constraint As ConstraintSyntax) As TypeParameterSingleConstraintClauseSyntax Select Case asKeyword.Kind() Case SyntaxKind.AsKeyword Case Else Throw new ArgumentException("asKeyword") End Select if constraint Is Nothing Then Throw New ArgumentNullException(NameOf(constraint)) End If Select Case constraint.Kind() Case SyntaxKind.NewConstraint, SyntaxKind.ClassConstraint, SyntaxKind.StructureConstraint, SyntaxKind.TypeConstraint Case Else Throw new ArgumentException("constraint") End Select Return New TypeParameterSingleConstraintClauseSyntax(SyntaxKind.TypeParameterSingleConstraintClause, Nothing, Nothing, DirectCast(asKeyword.Node, InternalSyntax.KeywordSyntax), constraint) End Function ''' <summary> ''' One of the type parameter constraints clauses. This represents a constraint ''' clause in the form of "As Constraint". ''' </summary> ''' <param name="constraint"> ''' A list of the supplied constraints. If no constraints were supplied, Nothing is ''' returned. ''' </param> Public Shared Function TypeParameterSingleConstraintClause(constraint As ConstraintSyntax) As TypeParameterSingleConstraintClauseSyntax Return SyntaxFactory.TypeParameterSingleConstraintClause(SyntaxFactory.Token(SyntaxKind.AsKeyword), constraint) End Function ''' <summary> ''' One of the type parameter constraints clauses. This represents a constraint ''' clause in the form of "As { Constraints }". ''' </summary> ''' <param name="asKeyword"> ''' The "As" keyword. ''' </param> ''' <param name="openBraceToken"> ''' The "{" token. ''' </param> ''' <param name="constraints"> ''' A list of the supplied constraints. If no constraints were supplied, an empty ''' list is returned. ''' </param> ''' <param name="closeBraceToken"> ''' The "}" token. ''' </param> Public Shared Function TypeParameterMultipleConstraintClause(asKeyword As SyntaxToken, openBraceToken As SyntaxToken, constraints As SeparatedSyntaxList(Of ConstraintSyntax), closeBraceToken As SyntaxToken) As TypeParameterMultipleConstraintClauseSyntax Select Case asKeyword.Kind() Case SyntaxKind.AsKeyword Case Else Throw new ArgumentException("asKeyword") End Select Select Case openBraceToken.Kind() Case SyntaxKind.OpenBraceToken Case Else Throw new ArgumentException("openBraceToken") End Select Select Case closeBraceToken.Kind() Case SyntaxKind.CloseBraceToken Case Else Throw new ArgumentException("closeBraceToken") End Select Return New TypeParameterMultipleConstraintClauseSyntax(SyntaxKind.TypeParameterMultipleConstraintClause, Nothing, Nothing, DirectCast(asKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(openBraceToken.Node, InternalSyntax.PunctuationSyntax), constraints.Node, DirectCast(closeBraceToken.Node, InternalSyntax.PunctuationSyntax)) End Function ''' <summary> ''' One of the type parameter constraints clauses. This represents a constraint ''' clause in the form of "As { Constraints }". ''' </summary> ''' <param name="constraints"> ''' A list of the supplied constraints. If no constraints were supplied, an empty ''' list is returned. ''' </param> Public Shared Function TypeParameterMultipleConstraintClause(constraints As SeparatedSyntaxList(Of ConstraintSyntax)) As TypeParameterMultipleConstraintClauseSyntax Return SyntaxFactory.TypeParameterMultipleConstraintClause(SyntaxFactory.Token(SyntaxKind.AsKeyword), SyntaxFactory.Token(SyntaxKind.OpenBraceToken), constraints, SyntaxFactory.Token(SyntaxKind.CloseBraceToken)) End Function ''' <summary> ''' One of the type parameter constraints clauses. This represents a constraint ''' clause in the form of "As { Constraints }". ''' </summary> ''' <param name="constraints"> ''' A list of the supplied constraints. If no constraints were supplied, an empty ''' list is returned. ''' </param> Public Shared Function TypeParameterMultipleConstraintClause(ParamArray constraints As ConstraintSyntax()) As TypeParameterMultipleConstraintClauseSyntax Return SyntaxFactory.TypeParameterMultipleConstraintClause(SyntaxFactory.Token(SyntaxKind.AsKeyword), SyntaxFactory.Token(SyntaxKind.OpenBraceToken), SyntaxFactory.SeparatedList(Of ConstraintSyntax)().AddRange(constraints), SyntaxFactory.Token(SyntaxKind.CloseBraceToken)) End Function ''' <summary> ''' One of the special type parameter constraints: New, Class or Structure. Which ''' kind of special constraint it is can be obtained from the Kind property and is ''' one of: NewConstraint, ReferenceConstraint or ValueConstraint. ''' </summary> ''' <param name="constraintKeyword"> ''' The "New", "Class" or "Structure" keyword that denotes the kind of special ''' constraint. ''' </param> Public Shared Function NewConstraint(constraintKeyword As SyntaxToken) As SpecialConstraintSyntax Select Case constraintKeyword.Kind() Case SyntaxKind.NewKeyword : Case SyntaxKind.ClassKeyword : Case SyntaxKind.StructureKeyword Case Else Throw new ArgumentException("constraintKeyword") End Select Return New SpecialConstraintSyntax(SyntaxKind.NewConstraint, Nothing, Nothing, DirectCast(constraintKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' One of the special type parameter constraints: New, Class or Structure. Which ''' kind of special constraint it is can be obtained from the Kind property and is ''' one of: NewConstraint, ReferenceConstraint or ValueConstraint. ''' </summary> ''' <param name="constraintKeyword"> ''' The "New", "Class" or "Structure" keyword that denotes the kind of special ''' constraint. ''' </param> Public Shared Function ClassConstraint(constraintKeyword As SyntaxToken) As SpecialConstraintSyntax Select Case constraintKeyword.Kind() Case SyntaxKind.NewKeyword : Case SyntaxKind.ClassKeyword : Case SyntaxKind.StructureKeyword Case Else Throw new ArgumentException("constraintKeyword") End Select Return New SpecialConstraintSyntax(SyntaxKind.ClassConstraint, Nothing, Nothing, DirectCast(constraintKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' One of the special type parameter constraints: New, Class or Structure. Which ''' kind of special constraint it is can be obtained from the Kind property and is ''' one of: NewConstraint, ReferenceConstraint or ValueConstraint. ''' </summary> ''' <param name="constraintKeyword"> ''' The "New", "Class" or "Structure" keyword that denotes the kind of special ''' constraint. ''' </param> Public Shared Function StructureConstraint(constraintKeyword As SyntaxToken) As SpecialConstraintSyntax Select Case constraintKeyword.Kind() Case SyntaxKind.NewKeyword : Case SyntaxKind.ClassKeyword : Case SyntaxKind.StructureKeyword Case Else Throw new ArgumentException("constraintKeyword") End Select Return New SpecialConstraintSyntax(SyntaxKind.StructureConstraint, Nothing, Nothing, DirectCast(constraintKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' One of the special type parameter constraints: New, Class or Structure. Which ''' kind of special constraint it is can be obtained from the Kind property and is ''' one of: NewConstraint, ReferenceConstraint or ValueConstraint. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' SpecialConstraintSyntax. One of NewConstraint, ClassConstraint, ''' StructureConstraint. ''' </param> ''' <param name="constraintKeyword"> ''' The "New", "Class" or "Structure" keyword that denotes the kind of special ''' constraint. ''' </param> Public Shared Function SpecialConstraint(ByVal kind As SyntaxKind, constraintKeyword As SyntaxToken) As SpecialConstraintSyntax If Not SyntaxFacts.IsSpecialConstraint(kind) Then Throw New ArgumentException("kind") End If Select Case constraintKeyword.Kind() Case SyntaxKind.NewKeyword : Case SyntaxKind.ClassKeyword : Case SyntaxKind.StructureKeyword Case Else Throw new ArgumentException("constraintKeyword") End Select Return New SpecialConstraintSyntax(kind, Nothing, Nothing, DirectCast(constraintKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' Represents a type parameter constraint that is a type. ''' </summary> ''' <param name="type"> ''' The type describing the constraint. ''' </param> Public Shared Function TypeConstraint(type As TypeSyntax) As TypeConstraintSyntax if type Is Nothing Then Throw New ArgumentNullException(NameOf(type)) End If Select Case type.Kind() Case SyntaxKind.TupleType, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference Case Else Throw new ArgumentException("type") End Select Return New TypeConstraintSyntax(SyntaxKind.TypeConstraint, Nothing, Nothing, type) End Function ''' <summary> ''' Represents a name and value in an EnumDeclarationBlock. ''' </summary> ''' <param name="initializer"> ''' An optional value for the enum member. ''' </param> Public Shared Function EnumMemberDeclaration(attributeLists As SyntaxList(of AttributeListSyntax), identifier As SyntaxToken, initializer As EqualsValueSyntax) As EnumMemberDeclarationSyntax Select Case identifier.Kind() Case SyntaxKind.IdentifierToken Case Else Throw new ArgumentException("identifier") End Select Return New EnumMemberDeclarationSyntax(SyntaxKind.EnumMemberDeclaration, Nothing, Nothing, attributeLists.Node, DirectCast(identifier.Node, InternalSyntax.IdentifierTokenSyntax), initializer) End Function ''' <summary> ''' Represents a name and value in an EnumDeclarationBlock. ''' </summary> Public Shared Function EnumMemberDeclaration(identifier As SyntaxToken) As EnumMemberDeclarationSyntax Return SyntaxFactory.EnumMemberDeclaration(Nothing, identifier, Nothing) End Function ''' <summary> ''' Represents a name and value in an EnumDeclarationBlock. ''' </summary> Public Shared Function EnumMemberDeclaration(identifier As String) As EnumMemberDeclarationSyntax Return SyntaxFactory.EnumMemberDeclaration(Nothing, SyntaxFactory.Identifier(identifier), Nothing) End Function ''' <summary> ''' Represents a Function or Sub block declaration: A declaration that has a ''' beginning declaration, a body of executable statements and an end statement. ''' </summary> ''' <param name="subOrFunctionStatement"> ''' The "Sub" or "Function" statement that begins the block. ''' </param> ''' <param name="statements"> ''' The statements contained in the block statement. This might be an empty list. ''' </param> ''' <param name="endSubOrFunctionStatement"> ''' The "End Sub" or "End Function" statement that ends the block. ''' </param> Public Shared Function SubBlock(subOrFunctionStatement As MethodStatementSyntax, statements As SyntaxList(of StatementSyntax), endSubOrFunctionStatement As EndBlockStatementSyntax) As MethodBlockSyntax if subOrFunctionStatement Is Nothing Then Throw New ArgumentNullException(NameOf(subOrFunctionStatement)) End If Select Case subOrFunctionStatement.Kind() Case SyntaxKind.SubStatement, SyntaxKind.FunctionStatement Case Else Throw new ArgumentException("subOrFunctionStatement") End Select if endSubOrFunctionStatement Is Nothing Then Throw New ArgumentNullException(NameOf(endSubOrFunctionStatement)) End If Select Case endSubOrFunctionStatement.Kind() Case SyntaxKind.EndSubStatement, SyntaxKind.EndFunctionStatement Case Else Throw new ArgumentException("endSubOrFunctionStatement") End Select Return New MethodBlockSyntax(SyntaxKind.SubBlock, Nothing, Nothing, subOrFunctionStatement, statements.Node, endSubOrFunctionStatement) End Function ''' <summary> ''' Represents a Function or Sub block declaration: A declaration that has a ''' beginning declaration, a body of executable statements and an end statement. ''' </summary> ''' <param name="subOrFunctionStatement"> ''' The "Sub" or "Function" statement that begins the block. ''' </param> ''' <param name="statements"> ''' The statements contained in the block statement. This might be an empty list. ''' </param> Public Shared Function SubBlock(subOrFunctionStatement As MethodStatementSyntax, statements As SyntaxList(of StatementSyntax)) As MethodBlockSyntax Return SyntaxFactory.SubBlock(subOrFunctionStatement, statements, SyntaxFactory.EndSubStatement()) End Function ''' <summary> ''' Represents a Function or Sub block declaration: A declaration that has a ''' beginning declaration, a body of executable statements and an end statement. ''' </summary> ''' <param name="subOrFunctionStatement"> ''' The "Sub" or "Function" statement that begins the block. ''' </param> Public Shared Function SubBlock(subOrFunctionStatement As MethodStatementSyntax) As MethodBlockSyntax Return SyntaxFactory.SubBlock(subOrFunctionStatement, Nothing, SyntaxFactory.EndSubStatement()) End Function ''' <summary> ''' Represents a Function or Sub block declaration: A declaration that has a ''' beginning declaration, a body of executable statements and an end statement. ''' </summary> ''' <param name="subOrFunctionStatement"> ''' The "Sub" or "Function" statement that begins the block. ''' </param> ''' <param name="statements"> ''' The statements contained in the block statement. This might be an empty list. ''' </param> ''' <param name="endSubOrFunctionStatement"> ''' The "End Sub" or "End Function" statement that ends the block. ''' </param> Public Shared Function FunctionBlock(subOrFunctionStatement As MethodStatementSyntax, statements As SyntaxList(of StatementSyntax), endSubOrFunctionStatement As EndBlockStatementSyntax) As MethodBlockSyntax if subOrFunctionStatement Is Nothing Then Throw New ArgumentNullException(NameOf(subOrFunctionStatement)) End If Select Case subOrFunctionStatement.Kind() Case SyntaxKind.FunctionStatement Case Else Throw new ArgumentException("subOrFunctionStatement") End Select if endSubOrFunctionStatement Is Nothing Then Throw New ArgumentNullException(NameOf(endSubOrFunctionStatement)) End If Select Case endSubOrFunctionStatement.Kind() Case SyntaxKind.EndFunctionStatement Case Else Throw new ArgumentException("endSubOrFunctionStatement") End Select Return New MethodBlockSyntax(SyntaxKind.FunctionBlock, Nothing, Nothing, subOrFunctionStatement, statements.Node, endSubOrFunctionStatement) End Function ''' <summary> ''' Represents a Function or Sub block declaration: A declaration that has a ''' beginning declaration, a body of executable statements and an end statement. ''' </summary> ''' <param name="subOrFunctionStatement"> ''' The "Sub" or "Function" statement that begins the block. ''' </param> ''' <param name="statements"> ''' The statements contained in the block statement. This might be an empty list. ''' </param> Public Shared Function FunctionBlock(subOrFunctionStatement As MethodStatementSyntax, statements As SyntaxList(of StatementSyntax)) As MethodBlockSyntax Return SyntaxFactory.FunctionBlock(subOrFunctionStatement, statements, SyntaxFactory.EndFunctionStatement()) End Function ''' <summary> ''' Represents a Function or Sub block declaration: A declaration that has a ''' beginning declaration, a body of executable statements and an end statement. ''' </summary> ''' <param name="subOrFunctionStatement"> ''' The "Sub" or "Function" statement that begins the block. ''' </param> Public Shared Function FunctionBlock(subOrFunctionStatement As MethodStatementSyntax) As MethodBlockSyntax Return SyntaxFactory.FunctionBlock(subOrFunctionStatement, Nothing, SyntaxFactory.EndFunctionStatement()) End Function ''' <summary> ''' Represents a Function or Sub block declaration: A declaration that has a ''' beginning declaration, a body of executable statements and an end statement. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of MethodBlockSyntax. ''' One of SubBlock, FunctionBlock. ''' </param> ''' <param name="subOrFunctionStatement"> ''' The "Sub" or "Function" statement that begins the block. ''' </param> ''' <param name="statements"> ''' The statements contained in the block statement. This might be an empty list. ''' </param> ''' <param name="endSubOrFunctionStatement"> ''' The "End Sub" or "End Function" statement that ends the block. ''' </param> Public Shared Function MethodBlock(ByVal kind As SyntaxKind, subOrFunctionStatement As MethodStatementSyntax, statements As SyntaxList(of StatementSyntax), endSubOrFunctionStatement As EndBlockStatementSyntax) As MethodBlockSyntax If Not SyntaxFacts.IsMethodBlock(kind) Then Throw New ArgumentException("kind") End If if subOrFunctionStatement Is Nothing Then Throw New ArgumentNullException(NameOf(subOrFunctionStatement)) End If If (Not subOrFunctionStatement.IsKind(GetMethodBlockSubOrFunctionStatementKind(kind))) Then Throw new ArgumentException("subOrFunctionStatement") End If if endSubOrFunctionStatement Is Nothing Then Throw New ArgumentNullException(NameOf(endSubOrFunctionStatement)) End If If (Not endSubOrFunctionStatement.IsKind(GetMethodBlockEndSubOrFunctionStatementKind(kind))) Then Throw new ArgumentException("endSubOrFunctionStatement") End If Return New MethodBlockSyntax(kind, Nothing, Nothing, subOrFunctionStatement, statements.Node, endSubOrFunctionStatement) End Function Private Shared Function GetMethodBlockSubOrFunctionStatementKind(kind As SyntaxKind) As SyntaxKind Select Case kind Case SyntaxKind.SubBlock Return SyntaxKind.SubStatement Case SyntaxKind.FunctionBlock Return SyntaxKind.FunctionStatement Case Else Throw New ArgumentException("SubOrFunctionStatement") End Select End Function Private Shared Function GetMethodBlockEndSubOrFunctionStatementKind(kind As SyntaxKind) As SyntaxKind Select Case kind Case SyntaxKind.SubBlock Return SyntaxKind.EndSubStatement Case SyntaxKind.FunctionBlock Return SyntaxKind.EndFunctionStatement Case Else Throw New ArgumentException("EndSubOrFunctionStatement") End Select End Function ''' <summary> ''' Represents a Function or Sub block declaration: A declaration that has a ''' beginning declaration, a body of executable statements and an end statement. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of MethodBlockSyntax. ''' One of SubBlock, FunctionBlock. ''' </param> ''' <param name="subOrFunctionStatement"> ''' The "Sub" or "Function" statement that begins the block. ''' </param> ''' <param name="endSubOrFunctionStatement"> ''' The "End Sub" or "End Function" statement that ends the block. ''' </param> Public Shared Function MethodBlock(ByVal kind As SyntaxKind, subOrFunctionStatement As MethodStatementSyntax, endSubOrFunctionStatement As EndBlockStatementSyntax) As MethodBlockSyntax Return SyntaxFactory.MethodBlock(kind, subOrFunctionStatement, Nothing, endSubOrFunctionStatement) End Function ''' <summary> ''' Represents a constructor block declaration: A declaration that has a beginning ''' declaration, a body of executable statements and an end statement. ''' </summary> ''' <param name="subNewStatement"> ''' The "Sub New" statement that begins the block. ''' </param> ''' <param name="statements"> ''' The statements contained in the block statement. This might be an empty list. ''' </param> ''' <param name="endSubStatement"> ''' The "End Sub" statement that ends the block declaration. ''' </param> Public Shared Function ConstructorBlock(subNewStatement As SubNewStatementSyntax, statements As SyntaxList(of StatementSyntax), endSubStatement As EndBlockStatementSyntax) As ConstructorBlockSyntax if subNewStatement Is Nothing Then Throw New ArgumentNullException(NameOf(subNewStatement)) End If Select Case subNewStatement.Kind() Case SyntaxKind.SubNewStatement Case Else Throw new ArgumentException("subNewStatement") End Select if endSubStatement Is Nothing Then Throw New ArgumentNullException(NameOf(endSubStatement)) End If Select Case endSubStatement.Kind() Case SyntaxKind.EndSubStatement Case Else Throw new ArgumentException("endSubStatement") End Select Return New ConstructorBlockSyntax(SyntaxKind.ConstructorBlock, Nothing, Nothing, subNewStatement, statements.Node, endSubStatement) End Function ''' <summary> ''' Represents a constructor block declaration: A declaration that has a beginning ''' declaration, a body of executable statements and an end statement. ''' </summary> ''' <param name="subNewStatement"> ''' The "Sub New" statement that begins the block. ''' </param> ''' <param name="statements"> ''' The statements contained in the block statement. This might be an empty list. ''' </param> Public Shared Function ConstructorBlock(subNewStatement As SubNewStatementSyntax, statements As SyntaxList(of StatementSyntax)) As ConstructorBlockSyntax Return SyntaxFactory.ConstructorBlock(subNewStatement, statements, SyntaxFactory.EndSubStatement()) End Function ''' <summary> ''' Represents a constructor block declaration: A declaration that has a beginning ''' declaration, a body of executable statements and an end statement. ''' </summary> ''' <param name="subNewStatement"> ''' The "Sub New" statement that begins the block. ''' </param> Public Shared Function ConstructorBlock(subNewStatement As SubNewStatementSyntax) As ConstructorBlockSyntax Return SyntaxFactory.ConstructorBlock(subNewStatement, Nothing, SyntaxFactory.EndSubStatement()) End Function ''' <summary> ''' Represents an Operator block member declaration: A declaration that has a ''' beginning declaration, a body of executable statements and an end statement. ''' </summary> ''' <param name="operatorStatement"> ''' The "Operator" statement that begins the block. ''' </param> ''' <param name="statements"> ''' The statements contained in the block statement. This might be an empty list. ''' </param> ''' <param name="endOperatorStatement"> ''' The "End Operator" statement that ends the block declaration. ''' </param> Public Shared Function OperatorBlock(operatorStatement As OperatorStatementSyntax, statements As SyntaxList(of StatementSyntax), endOperatorStatement As EndBlockStatementSyntax) As OperatorBlockSyntax if operatorStatement Is Nothing Then Throw New ArgumentNullException(NameOf(operatorStatement)) End If Select Case operatorStatement.Kind() Case SyntaxKind.OperatorStatement Case Else Throw new ArgumentException("operatorStatement") End Select if endOperatorStatement Is Nothing Then Throw New ArgumentNullException(NameOf(endOperatorStatement)) End If Select Case endOperatorStatement.Kind() Case SyntaxKind.EndOperatorStatement Case Else Throw new ArgumentException("endOperatorStatement") End Select Return New OperatorBlockSyntax(SyntaxKind.OperatorBlock, Nothing, Nothing, operatorStatement, statements.Node, endOperatorStatement) End Function ''' <summary> ''' Represents an Operator block member declaration: A declaration that has a ''' beginning declaration, a body of executable statements and an end statement. ''' </summary> ''' <param name="operatorStatement"> ''' The "Operator" statement that begins the block. ''' </param> ''' <param name="statements"> ''' The statements contained in the block statement. This might be an empty list. ''' </param> Public Shared Function OperatorBlock(operatorStatement As OperatorStatementSyntax, statements As SyntaxList(of StatementSyntax)) As OperatorBlockSyntax Return SyntaxFactory.OperatorBlock(operatorStatement, statements, SyntaxFactory.EndOperatorStatement()) End Function ''' <summary> ''' Represents an Operator block member declaration: A declaration that has a ''' beginning declaration, a body of executable statements and an end statement. ''' </summary> ''' <param name="operatorStatement"> ''' The "Operator" statement that begins the block. ''' </param> Public Shared Function OperatorBlock(operatorStatement As OperatorStatementSyntax) As OperatorBlockSyntax Return SyntaxFactory.OperatorBlock(operatorStatement, Nothing, SyntaxFactory.EndOperatorStatement()) End Function ''' <summary> ''' Represents an accessor block member declaration: A declaration that has a ''' beginning declaration, a body of executable statements and an end statement. ''' Examples include property accessors and custom event accessors. ''' </summary> ''' <param name="accessorStatement"> ''' The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that ''' begins the accessor block. ''' </param> ''' <param name="statements"> ''' The statements contained in the block statement. This might be an empty list. ''' </param> ''' <param name="endAccessorStatement"> ''' The "End Get", "End Set", "End AddHandler", "End RemoveHandler", or "End ''' RaiseEvent" statement that ends the accessor block. ''' </param> Public Shared Function GetAccessorBlock(accessorStatement As AccessorStatementSyntax, statements As SyntaxList(of StatementSyntax), endAccessorStatement As EndBlockStatementSyntax) As AccessorBlockSyntax if accessorStatement Is Nothing Then Throw New ArgumentNullException(NameOf(accessorStatement)) End If Select Case accessorStatement.Kind() Case SyntaxKind.GetAccessorStatement, SyntaxKind.SetAccessorStatement, SyntaxKind.AddHandlerAccessorStatement, SyntaxKind.RemoveHandlerAccessorStatement, SyntaxKind.RaiseEventAccessorStatement Case Else Throw new ArgumentException("accessorStatement") End Select if endAccessorStatement Is Nothing Then Throw New ArgumentNullException(NameOf(endAccessorStatement)) End If Select Case endAccessorStatement.Kind() Case SyntaxKind.EndGetStatement, SyntaxKind.EndSetStatement, SyntaxKind.EndAddHandlerStatement, SyntaxKind.EndRemoveHandlerStatement, SyntaxKind.EndRaiseEventStatement Case Else Throw new ArgumentException("endAccessorStatement") End Select Return New AccessorBlockSyntax(SyntaxKind.GetAccessorBlock, Nothing, Nothing, accessorStatement, statements.Node, endAccessorStatement) End Function ''' <summary> ''' Represents an accessor block member declaration: A declaration that has a ''' beginning declaration, a body of executable statements and an end statement. ''' Examples include property accessors and custom event accessors. ''' </summary> ''' <param name="accessorStatement"> ''' The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that ''' begins the accessor block. ''' </param> ''' <param name="statements"> ''' The statements contained in the block statement. This might be an empty list. ''' </param> Public Shared Function GetAccessorBlock(accessorStatement As AccessorStatementSyntax, statements As SyntaxList(of StatementSyntax)) As AccessorBlockSyntax Return SyntaxFactory.GetAccessorBlock(accessorStatement, statements, SyntaxFactory.EndGetStatement()) End Function ''' <summary> ''' Represents an accessor block member declaration: A declaration that has a ''' beginning declaration, a body of executable statements and an end statement. ''' Examples include property accessors and custom event accessors. ''' </summary> ''' <param name="accessorStatement"> ''' The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that ''' begins the accessor block. ''' </param> Public Shared Function GetAccessorBlock(accessorStatement As AccessorStatementSyntax) As AccessorBlockSyntax Return SyntaxFactory.GetAccessorBlock(accessorStatement, Nothing, SyntaxFactory.EndGetStatement()) End Function ''' <summary> ''' Represents an accessor block member declaration: A declaration that has a ''' beginning declaration, a body of executable statements and an end statement. ''' Examples include property accessors and custom event accessors. ''' </summary> ''' <param name="accessorStatement"> ''' The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that ''' begins the accessor block. ''' </param> ''' <param name="statements"> ''' The statements contained in the block statement. This might be an empty list. ''' </param> ''' <param name="endAccessorStatement"> ''' The "End Get", "End Set", "End AddHandler", "End RemoveHandler", or "End ''' RaiseEvent" statement that ends the accessor block. ''' </param> Public Shared Function SetAccessorBlock(accessorStatement As AccessorStatementSyntax, statements As SyntaxList(of StatementSyntax), endAccessorStatement As EndBlockStatementSyntax) As AccessorBlockSyntax if accessorStatement Is Nothing Then Throw New ArgumentNullException(NameOf(accessorStatement)) End If Select Case accessorStatement.Kind() Case SyntaxKind.SetAccessorStatement Case Else Throw new ArgumentException("accessorStatement") End Select if endAccessorStatement Is Nothing Then Throw New ArgumentNullException(NameOf(endAccessorStatement)) End If Select Case endAccessorStatement.Kind() Case SyntaxKind.EndSetStatement Case Else Throw new ArgumentException("endAccessorStatement") End Select Return New AccessorBlockSyntax(SyntaxKind.SetAccessorBlock, Nothing, Nothing, accessorStatement, statements.Node, endAccessorStatement) End Function ''' <summary> ''' Represents an accessor block member declaration: A declaration that has a ''' beginning declaration, a body of executable statements and an end statement. ''' Examples include property accessors and custom event accessors. ''' </summary> ''' <param name="accessorStatement"> ''' The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that ''' begins the accessor block. ''' </param> ''' <param name="statements"> ''' The statements contained in the block statement. This might be an empty list. ''' </param> Public Shared Function SetAccessorBlock(accessorStatement As AccessorStatementSyntax, statements As SyntaxList(of StatementSyntax)) As AccessorBlockSyntax Return SyntaxFactory.SetAccessorBlock(accessorStatement, statements, SyntaxFactory.EndSetStatement()) End Function ''' <summary> ''' Represents an accessor block member declaration: A declaration that has a ''' beginning declaration, a body of executable statements and an end statement. ''' Examples include property accessors and custom event accessors. ''' </summary> ''' <param name="accessorStatement"> ''' The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that ''' begins the accessor block. ''' </param> Public Shared Function SetAccessorBlock(accessorStatement As AccessorStatementSyntax) As AccessorBlockSyntax Return SyntaxFactory.SetAccessorBlock(accessorStatement, Nothing, SyntaxFactory.EndSetStatement()) End Function ''' <summary> ''' Represents an accessor block member declaration: A declaration that has a ''' beginning declaration, a body of executable statements and an end statement. ''' Examples include property accessors and custom event accessors. ''' </summary> ''' <param name="accessorStatement"> ''' The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that ''' begins the accessor block. ''' </param> ''' <param name="statements"> ''' The statements contained in the block statement. This might be an empty list. ''' </param> ''' <param name="endAccessorStatement"> ''' The "End Get", "End Set", "End AddHandler", "End RemoveHandler", or "End ''' RaiseEvent" statement that ends the accessor block. ''' </param> Public Shared Function AddHandlerAccessorBlock(accessorStatement As AccessorStatementSyntax, statements As SyntaxList(of StatementSyntax), endAccessorStatement As EndBlockStatementSyntax) As AccessorBlockSyntax if accessorStatement Is Nothing Then Throw New ArgumentNullException(NameOf(accessorStatement)) End If Select Case accessorStatement.Kind() Case SyntaxKind.AddHandlerAccessorStatement Case Else Throw new ArgumentException("accessorStatement") End Select if endAccessorStatement Is Nothing Then Throw New ArgumentNullException(NameOf(endAccessorStatement)) End If Select Case endAccessorStatement.Kind() Case SyntaxKind.EndAddHandlerStatement Case Else Throw new ArgumentException("endAccessorStatement") End Select Return New AccessorBlockSyntax(SyntaxKind.AddHandlerAccessorBlock, Nothing, Nothing, accessorStatement, statements.Node, endAccessorStatement) End Function ''' <summary> ''' Represents an accessor block member declaration: A declaration that has a ''' beginning declaration, a body of executable statements and an end statement. ''' Examples include property accessors and custom event accessors. ''' </summary> ''' <param name="accessorStatement"> ''' The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that ''' begins the accessor block. ''' </param> ''' <param name="statements"> ''' The statements contained in the block statement. This might be an empty list. ''' </param> Public Shared Function AddHandlerAccessorBlock(accessorStatement As AccessorStatementSyntax, statements As SyntaxList(of StatementSyntax)) As AccessorBlockSyntax Return SyntaxFactory.AddHandlerAccessorBlock(accessorStatement, statements, SyntaxFactory.EndAddHandlerStatement()) End Function ''' <summary> ''' Represents an accessor block member declaration: A declaration that has a ''' beginning declaration, a body of executable statements and an end statement. ''' Examples include property accessors and custom event accessors. ''' </summary> ''' <param name="accessorStatement"> ''' The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that ''' begins the accessor block. ''' </param> Public Shared Function AddHandlerAccessorBlock(accessorStatement As AccessorStatementSyntax) As AccessorBlockSyntax Return SyntaxFactory.AddHandlerAccessorBlock(accessorStatement, Nothing, SyntaxFactory.EndAddHandlerStatement()) End Function ''' <summary> ''' Represents an accessor block member declaration: A declaration that has a ''' beginning declaration, a body of executable statements and an end statement. ''' Examples include property accessors and custom event accessors. ''' </summary> ''' <param name="accessorStatement"> ''' The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that ''' begins the accessor block. ''' </param> ''' <param name="statements"> ''' The statements contained in the block statement. This might be an empty list. ''' </param> ''' <param name="endAccessorStatement"> ''' The "End Get", "End Set", "End AddHandler", "End RemoveHandler", or "End ''' RaiseEvent" statement that ends the accessor block. ''' </param> Public Shared Function RemoveHandlerAccessorBlock(accessorStatement As AccessorStatementSyntax, statements As SyntaxList(of StatementSyntax), endAccessorStatement As EndBlockStatementSyntax) As AccessorBlockSyntax if accessorStatement Is Nothing Then Throw New ArgumentNullException(NameOf(accessorStatement)) End If Select Case accessorStatement.Kind() Case SyntaxKind.RemoveHandlerAccessorStatement Case Else Throw new ArgumentException("accessorStatement") End Select if endAccessorStatement Is Nothing Then Throw New ArgumentNullException(NameOf(endAccessorStatement)) End If Select Case endAccessorStatement.Kind() Case SyntaxKind.EndRemoveHandlerStatement Case Else Throw new ArgumentException("endAccessorStatement") End Select Return New AccessorBlockSyntax(SyntaxKind.RemoveHandlerAccessorBlock, Nothing, Nothing, accessorStatement, statements.Node, endAccessorStatement) End Function ''' <summary> ''' Represents an accessor block member declaration: A declaration that has a ''' beginning declaration, a body of executable statements and an end statement. ''' Examples include property accessors and custom event accessors. ''' </summary> ''' <param name="accessorStatement"> ''' The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that ''' begins the accessor block. ''' </param> ''' <param name="statements"> ''' The statements contained in the block statement. This might be an empty list. ''' </param> Public Shared Function RemoveHandlerAccessorBlock(accessorStatement As AccessorStatementSyntax, statements As SyntaxList(of StatementSyntax)) As AccessorBlockSyntax Return SyntaxFactory.RemoveHandlerAccessorBlock(accessorStatement, statements, SyntaxFactory.EndRemoveHandlerStatement()) End Function ''' <summary> ''' Represents an accessor block member declaration: A declaration that has a ''' beginning declaration, a body of executable statements and an end statement. ''' Examples include property accessors and custom event accessors. ''' </summary> ''' <param name="accessorStatement"> ''' The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that ''' begins the accessor block. ''' </param> Public Shared Function RemoveHandlerAccessorBlock(accessorStatement As AccessorStatementSyntax) As AccessorBlockSyntax Return SyntaxFactory.RemoveHandlerAccessorBlock(accessorStatement, Nothing, SyntaxFactory.EndRemoveHandlerStatement()) End Function ''' <summary> ''' Represents an accessor block member declaration: A declaration that has a ''' beginning declaration, a body of executable statements and an end statement. ''' Examples include property accessors and custom event accessors. ''' </summary> ''' <param name="accessorStatement"> ''' The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that ''' begins the accessor block. ''' </param> ''' <param name="statements"> ''' The statements contained in the block statement. This might be an empty list. ''' </param> ''' <param name="endAccessorStatement"> ''' The "End Get", "End Set", "End AddHandler", "End RemoveHandler", or "End ''' RaiseEvent" statement that ends the accessor block. ''' </param> Public Shared Function RaiseEventAccessorBlock(accessorStatement As AccessorStatementSyntax, statements As SyntaxList(of StatementSyntax), endAccessorStatement As EndBlockStatementSyntax) As AccessorBlockSyntax if accessorStatement Is Nothing Then Throw New ArgumentNullException(NameOf(accessorStatement)) End If Select Case accessorStatement.Kind() Case SyntaxKind.RaiseEventAccessorStatement Case Else Throw new ArgumentException("accessorStatement") End Select if endAccessorStatement Is Nothing Then Throw New ArgumentNullException(NameOf(endAccessorStatement)) End If Select Case endAccessorStatement.Kind() Case SyntaxKind.EndRaiseEventStatement Case Else Throw new ArgumentException("endAccessorStatement") End Select Return New AccessorBlockSyntax(SyntaxKind.RaiseEventAccessorBlock, Nothing, Nothing, accessorStatement, statements.Node, endAccessorStatement) End Function ''' <summary> ''' Represents an accessor block member declaration: A declaration that has a ''' beginning declaration, a body of executable statements and an end statement. ''' Examples include property accessors and custom event accessors. ''' </summary> ''' <param name="accessorStatement"> ''' The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that ''' begins the accessor block. ''' </param> ''' <param name="statements"> ''' The statements contained in the block statement. This might be an empty list. ''' </param> Public Shared Function RaiseEventAccessorBlock(accessorStatement As AccessorStatementSyntax, statements As SyntaxList(of StatementSyntax)) As AccessorBlockSyntax Return SyntaxFactory.RaiseEventAccessorBlock(accessorStatement, statements, SyntaxFactory.EndRaiseEventStatement()) End Function ''' <summary> ''' Represents an accessor block member declaration: A declaration that has a ''' beginning declaration, a body of executable statements and an end statement. ''' Examples include property accessors and custom event accessors. ''' </summary> ''' <param name="accessorStatement"> ''' The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that ''' begins the accessor block. ''' </param> Public Shared Function RaiseEventAccessorBlock(accessorStatement As AccessorStatementSyntax) As AccessorBlockSyntax Return SyntaxFactory.RaiseEventAccessorBlock(accessorStatement, Nothing, SyntaxFactory.EndRaiseEventStatement()) End Function ''' <summary> ''' Represents an accessor block member declaration: A declaration that has a ''' beginning declaration, a body of executable statements and an end statement. ''' Examples include property accessors and custom event accessors. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' AccessorBlockSyntax. One of GetAccessorBlock, SetAccessorBlock, ''' AddHandlerAccessorBlock, RemoveHandlerAccessorBlock, RaiseEventAccessorBlock. ''' </param> ''' <param name="accessorStatement"> ''' The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that ''' begins the accessor block. ''' </param> ''' <param name="statements"> ''' The statements contained in the block statement. This might be an empty list. ''' </param> ''' <param name="endAccessorStatement"> ''' The "End Get", "End Set", "End AddHandler", "End RemoveHandler", or "End ''' RaiseEvent" statement that ends the accessor block. ''' </param> Public Shared Function AccessorBlock(ByVal kind As SyntaxKind, accessorStatement As AccessorStatementSyntax, statements As SyntaxList(of StatementSyntax), endAccessorStatement As EndBlockStatementSyntax) As AccessorBlockSyntax If Not SyntaxFacts.IsAccessorBlock(kind) Then Throw New ArgumentException("kind") End If if accessorStatement Is Nothing Then Throw New ArgumentNullException(NameOf(accessorStatement)) End If If (Not accessorStatement.IsKind(GetAccessorBlockAccessorStatementKind(kind))) Then Throw new ArgumentException("accessorStatement") End If if endAccessorStatement Is Nothing Then Throw New ArgumentNullException(NameOf(endAccessorStatement)) End If If (Not endAccessorStatement.IsKind(GetAccessorBlockEndAccessorStatementKind(kind))) Then Throw new ArgumentException("endAccessorStatement") End If Return New AccessorBlockSyntax(kind, Nothing, Nothing, accessorStatement, statements.Node, endAccessorStatement) End Function Private Shared Function GetAccessorBlockAccessorStatementKind(kind As SyntaxKind) As SyntaxKind Select Case kind Case SyntaxKind.GetAccessorBlock Return SyntaxKind.GetAccessorStatement Case SyntaxKind.SetAccessorBlock Return SyntaxKind.SetAccessorStatement Case SyntaxKind.AddHandlerAccessorBlock Return SyntaxKind.AddHandlerAccessorStatement Case SyntaxKind.RemoveHandlerAccessorBlock Return SyntaxKind.RemoveHandlerAccessorStatement Case SyntaxKind.RaiseEventAccessorBlock Return SyntaxKind.RaiseEventAccessorStatement Case Else Throw New ArgumentException("AccessorStatement") End Select End Function Private Shared Function GetAccessorBlockEndAccessorStatementKind(kind As SyntaxKind) As SyntaxKind Select Case kind Case SyntaxKind.GetAccessorBlock Return SyntaxKind.EndGetStatement Case SyntaxKind.SetAccessorBlock Return SyntaxKind.EndSetStatement Case SyntaxKind.AddHandlerAccessorBlock Return SyntaxKind.EndAddHandlerStatement Case SyntaxKind.RemoveHandlerAccessorBlock Return SyntaxKind.EndRemoveHandlerStatement Case SyntaxKind.RaiseEventAccessorBlock Return SyntaxKind.EndRaiseEventStatement Case Else Throw New ArgumentException("EndAccessorStatement") End Select End Function ''' <summary> ''' Represents an accessor block member declaration: A declaration that has a ''' beginning declaration, a body of executable statements and an end statement. ''' Examples include property accessors and custom event accessors. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' AccessorBlockSyntax. One of GetAccessorBlock, SetAccessorBlock, ''' AddHandlerAccessorBlock, RemoveHandlerAccessorBlock, RaiseEventAccessorBlock. ''' </param> ''' <param name="accessorStatement"> ''' The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that ''' begins the accessor block. ''' </param> ''' <param name="endAccessorStatement"> ''' The "End Get", "End Set", "End AddHandler", "End RemoveHandler", or "End ''' RaiseEvent" statement that ends the accessor block. ''' </param> Public Shared Function AccessorBlock(ByVal kind As SyntaxKind, accessorStatement As AccessorStatementSyntax, endAccessorStatement As EndBlockStatementSyntax) As AccessorBlockSyntax Return SyntaxFactory.AccessorBlock(kind, accessorStatement, Nothing, endAccessorStatement) End Function ''' <summary> ''' Represents a block property declaration: A declaration that has a beginning ''' declaration, some get or set accessor blocks and an end statement. ''' </summary> ''' <param name="propertyStatement"> ''' The property declaration that begins the block. ''' </param> ''' <param name="accessors"> ''' The accessor blocks contained in the property, between the Property and the End ''' Property statements. ''' </param> ''' <param name="endPropertyStatement"> ''' The End Property statement that ends the block. ''' </param> Public Shared Function PropertyBlock(propertyStatement As PropertyStatementSyntax, accessors As SyntaxList(of AccessorBlockSyntax), endPropertyStatement As EndBlockStatementSyntax) As PropertyBlockSyntax if propertyStatement Is Nothing Then Throw New ArgumentNullException(NameOf(propertyStatement)) End If Select Case propertyStatement.Kind() Case SyntaxKind.PropertyStatement Case Else Throw new ArgumentException("propertyStatement") End Select if endPropertyStatement Is Nothing Then Throw New ArgumentNullException(NameOf(endPropertyStatement)) End If Select Case endPropertyStatement.Kind() Case SyntaxKind.EndPropertyStatement Case Else Throw new ArgumentException("endPropertyStatement") End Select Return New PropertyBlockSyntax(SyntaxKind.PropertyBlock, Nothing, Nothing, propertyStatement, accessors.Node, endPropertyStatement) End Function ''' <summary> ''' Represents a block property declaration: A declaration that has a beginning ''' declaration, some get or set accessor blocks and an end statement. ''' </summary> ''' <param name="propertyStatement"> ''' The property declaration that begins the block. ''' </param> ''' <param name="accessors"> ''' The accessor blocks contained in the property, between the Property and the End ''' Property statements. ''' </param> Public Shared Function PropertyBlock(propertyStatement As PropertyStatementSyntax, accessors As SyntaxList(of AccessorBlockSyntax)) As PropertyBlockSyntax Return SyntaxFactory.PropertyBlock(propertyStatement, accessors, SyntaxFactory.EndPropertyStatement()) End Function ''' <summary> ''' Represents a custom event declaration: A declaration that has a beginning event ''' declaration, some accessor blocks and an end statement. ''' </summary> ''' <param name="eventStatement"> ''' The event declaration that begins the block. ''' </param> ''' <param name="accessors"> ''' The accessor blocks contained in the custom event declaration, between the ''' Event statement and the End Event statement. ''' </param> ''' <param name="endEventStatement"> ''' The End Event statement that ends the block. ''' </param> Public Shared Function EventBlock(eventStatement As EventStatementSyntax, accessors As SyntaxList(of AccessorBlockSyntax), endEventStatement As EndBlockStatementSyntax) As EventBlockSyntax if eventStatement Is Nothing Then Throw New ArgumentNullException(NameOf(eventStatement)) End If Select Case eventStatement.Kind() Case SyntaxKind.EventStatement Case Else Throw new ArgumentException("eventStatement") End Select if endEventStatement Is Nothing Then Throw New ArgumentNullException(NameOf(endEventStatement)) End If Select Case endEventStatement.Kind() Case SyntaxKind.EndEventStatement Case Else Throw new ArgumentException("endEventStatement") End Select Return New EventBlockSyntax(SyntaxKind.EventBlock, Nothing, Nothing, eventStatement, accessors.Node, endEventStatement) End Function ''' <summary> ''' Represents a custom event declaration: A declaration that has a beginning event ''' declaration, some accessor blocks and an end statement. ''' </summary> ''' <param name="eventStatement"> ''' The event declaration that begins the block. ''' </param> ''' <param name="accessors"> ''' The accessor blocks contained in the custom event declaration, between the ''' Event statement and the End Event statement. ''' </param> Public Shared Function EventBlock(eventStatement As EventStatementSyntax, accessors As SyntaxList(of AccessorBlockSyntax)) As EventBlockSyntax Return SyntaxFactory.EventBlock(eventStatement, accessors, SyntaxFactory.EndEventStatement()) End Function ''' <summary> ''' Represents the parameter list in a method declaration. ''' </summary> ''' <param name="openParenToken"> ''' The "(" token that introduces the parameter list. If no parameter list was ''' present, Nothing is returned. ''' </param> ''' <param name="parameters"> ''' The list of parameters. If no parameter list was present, Nothing is returned. ''' </param> ''' <param name="closeParenToken"> ''' The ")" token that concludes the parameter list. If no parameter list was ''' present, Nothing is returned. ''' </param> Public Shared Function ParameterList(openParenToken As SyntaxToken, parameters As SeparatedSyntaxList(Of ParameterSyntax), closeParenToken As SyntaxToken) As ParameterListSyntax Select Case openParenToken.Kind() Case SyntaxKind.OpenParenToken Case Else Throw new ArgumentException("openParenToken") End Select Select Case closeParenToken.Kind() Case SyntaxKind.CloseParenToken Case Else Throw new ArgumentException("closeParenToken") End Select Return New ParameterListSyntax(SyntaxKind.ParameterList, Nothing, Nothing, DirectCast(openParenToken.Node, InternalSyntax.PunctuationSyntax), parameters.Node, DirectCast(closeParenToken.Node, InternalSyntax.PunctuationSyntax)) End Function ''' <summary> ''' Represents the parameter list in a method declaration. ''' </summary> ''' <param name="parameters"> ''' The list of parameters. If no parameter list was present, Nothing is returned. ''' </param> Public Shared Function ParameterList(parameters As SeparatedSyntaxList(Of ParameterSyntax)) As ParameterListSyntax Return SyntaxFactory.ParameterList(SyntaxFactory.Token(SyntaxKind.OpenParenToken), parameters, SyntaxFactory.Token(SyntaxKind.CloseParenToken)) End Function ''' <summary> ''' Represents the parameter list in a method declaration. ''' </summary> Public Shared Function ParameterList() As ParameterListSyntax Return SyntaxFactory.ParameterList(SyntaxFactory.Token(SyntaxKind.OpenParenToken), Nothing, SyntaxFactory.Token(SyntaxKind.CloseParenToken)) End Function ''' <summary> ''' The statement that declares a Sub or Function. If this method has a body, this ''' statement will be the Begin of a BlockStatement with ''' Kind=MethodDeclarationBlock, and the body of the method will be the Body of ''' that BlockStatement. ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, Nothing is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. A bitfield version of all ''' the modifiers ORed together, which is in many cases easier to use, can be ''' obtained with the Modifiers property. ''' </param> ''' <param name="subOrFunctionKeyword"> ''' The "Sub" or "Function" keyword that introduces this method declaration. ''' </param> ''' <param name="identifier"> ''' The name of the method being declared. ''' </param> ''' <param name="typeParameterList"> ''' If present, a type parameter list with generic type parameters for this method. ''' If no generic type parameters were present, Nothing is returned. ''' </param> ''' <param name="parameterList"> ''' The method's parameter list including the parentheses. If no parameter list was ''' present, Nothing is returned. ''' </param> ''' <param name="asClause"> ''' The "As" clause that describes the return type. If no As clause was present, ''' Nothing is returned. ''' </param> ''' <param name="handlesClause"> ''' If present, a Handles clause indicated the events that this method handles. ''' </param> ''' <param name="implementsClause"> ''' If present, an Implements clause indicated the interface methods that this ''' method implements. ''' </param> Public Shared Function SubStatement(attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, subOrFunctionKeyword As SyntaxToken, identifier As SyntaxToken, typeParameterList As TypeParameterListSyntax, parameterList As ParameterListSyntax, asClause As SimpleAsClauseSyntax, handlesClause As HandlesClauseSyntax, implementsClause As ImplementsClauseSyntax) As MethodStatementSyntax Select Case subOrFunctionKeyword.Kind() Case SyntaxKind.SubKeyword : Case SyntaxKind.FunctionKeyword Case Else Throw new ArgumentException("subOrFunctionKeyword") End Select Select Case identifier.Kind() Case SyntaxKind.IdentifierToken Case Else Throw new ArgumentException("identifier") End Select Return New MethodStatementSyntax(SyntaxKind.SubStatement, Nothing, Nothing, attributeLists.Node, modifiers.Node, DirectCast(subOrFunctionKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(identifier.Node, InternalSyntax.IdentifierTokenSyntax), typeParameterList, parameterList, asClause, handlesClause, implementsClause) End Function ''' <summary> ''' The statement that declares a Sub or Function. If this method has a body, this ''' statement will be the Begin of a BlockStatement with ''' Kind=MethodDeclarationBlock, and the body of the method will be the Body of ''' that BlockStatement. ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, Nothing is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. A bitfield version of all ''' the modifiers ORed together, which is in many cases easier to use, can be ''' obtained with the Modifiers property. ''' </param> ''' <param name="identifier"> ''' The name of the method being declared. ''' </param> ''' <param name="typeParameterList"> ''' If present, a type parameter list with generic type parameters for this method. ''' If no generic type parameters were present, Nothing is returned. ''' </param> ''' <param name="parameterList"> ''' The method's parameter list including the parentheses. If no parameter list was ''' present, Nothing is returned. ''' </param> ''' <param name="asClause"> ''' The "As" clause that describes the return type. If no As clause was present, ''' Nothing is returned. ''' </param> ''' <param name="handlesClause"> ''' If present, a Handles clause indicated the events that this method handles. ''' </param> ''' <param name="implementsClause"> ''' If present, an Implements clause indicated the interface methods that this ''' method implements. ''' </param> Public Shared Function SubStatement(attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, identifier As SyntaxToken, typeParameterList As TypeParameterListSyntax, parameterList As ParameterListSyntax, asClause As SimpleAsClauseSyntax, handlesClause As HandlesClauseSyntax, implementsClause As ImplementsClauseSyntax) As MethodStatementSyntax Return SyntaxFactory.SubStatement(attributeLists, modifiers, SyntaxFactory.Token(SyntaxKind.SubKeyword), identifier, typeParameterList, parameterList, asClause, handlesClause, implementsClause) End Function ''' <summary> ''' The statement that declares a Sub or Function. If this method has a body, this ''' statement will be the Begin of a BlockStatement with ''' Kind=MethodDeclarationBlock, and the body of the method will be the Body of ''' that BlockStatement. ''' </summary> ''' <param name="identifier"> ''' The name of the method being declared. ''' </param> Public Shared Function SubStatement(identifier As SyntaxToken) As MethodStatementSyntax Return SyntaxFactory.SubStatement(Nothing, Nothing, SyntaxFactory.Token(SyntaxKind.SubKeyword), identifier, Nothing, Nothing, Nothing, Nothing, Nothing) End Function ''' <summary> ''' The statement that declares a Sub or Function. If this method has a body, this ''' statement will be the Begin of a BlockStatement with ''' Kind=MethodDeclarationBlock, and the body of the method will be the Body of ''' that BlockStatement. ''' </summary> ''' <param name="identifier"> ''' The name of the method being declared. ''' </param> Public Shared Function SubStatement(identifier As String) As MethodStatementSyntax Return SyntaxFactory.SubStatement(Nothing, Nothing, SyntaxFactory.Token(SyntaxKind.SubKeyword), SyntaxFactory.Identifier(identifier), Nothing, Nothing, Nothing, Nothing, Nothing) End Function ''' <summary> ''' The statement that declares a Sub or Function. If this method has a body, this ''' statement will be the Begin of a BlockStatement with ''' Kind=MethodDeclarationBlock, and the body of the method will be the Body of ''' that BlockStatement. ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, Nothing is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. A bitfield version of all ''' the modifiers ORed together, which is in many cases easier to use, can be ''' obtained with the Modifiers property. ''' </param> ''' <param name="subOrFunctionKeyword"> ''' The "Sub" or "Function" keyword that introduces this method declaration. ''' </param> ''' <param name="identifier"> ''' The name of the method being declared. ''' </param> ''' <param name="typeParameterList"> ''' If present, a type parameter list with generic type parameters for this method. ''' If no generic type parameters were present, Nothing is returned. ''' </param> ''' <param name="parameterList"> ''' The method's parameter list including the parentheses. If no parameter list was ''' present, Nothing is returned. ''' </param> ''' <param name="asClause"> ''' The "As" clause that describes the return type. If no As clause was present, ''' Nothing is returned. ''' </param> ''' <param name="handlesClause"> ''' If present, a Handles clause indicated the events that this method handles. ''' </param> ''' <param name="implementsClause"> ''' If present, an Implements clause indicated the interface methods that this ''' method implements. ''' </param> Public Shared Function FunctionStatement(attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, subOrFunctionKeyword As SyntaxToken, identifier As SyntaxToken, typeParameterList As TypeParameterListSyntax, parameterList As ParameterListSyntax, asClause As SimpleAsClauseSyntax, handlesClause As HandlesClauseSyntax, implementsClause As ImplementsClauseSyntax) As MethodStatementSyntax Select Case subOrFunctionKeyword.Kind() Case SyntaxKind.FunctionKeyword Case Else Throw new ArgumentException("subOrFunctionKeyword") End Select Select Case identifier.Kind() Case SyntaxKind.IdentifierToken Case Else Throw new ArgumentException("identifier") End Select Return New MethodStatementSyntax(SyntaxKind.FunctionStatement, Nothing, Nothing, attributeLists.Node, modifiers.Node, DirectCast(subOrFunctionKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(identifier.Node, InternalSyntax.IdentifierTokenSyntax), typeParameterList, parameterList, asClause, handlesClause, implementsClause) End Function ''' <summary> ''' The statement that declares a Sub or Function. If this method has a body, this ''' statement will be the Begin of a BlockStatement with ''' Kind=MethodDeclarationBlock, and the body of the method will be the Body of ''' that BlockStatement. ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, Nothing is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. A bitfield version of all ''' the modifiers ORed together, which is in many cases easier to use, can be ''' obtained with the Modifiers property. ''' </param> ''' <param name="identifier"> ''' The name of the method being declared. ''' </param> ''' <param name="typeParameterList"> ''' If present, a type parameter list with generic type parameters for this method. ''' If no generic type parameters were present, Nothing is returned. ''' </param> ''' <param name="parameterList"> ''' The method's parameter list including the parentheses. If no parameter list was ''' present, Nothing is returned. ''' </param> ''' <param name="asClause"> ''' The "As" clause that describes the return type. If no As clause was present, ''' Nothing is returned. ''' </param> ''' <param name="handlesClause"> ''' If present, a Handles clause indicated the events that this method handles. ''' </param> ''' <param name="implementsClause"> ''' If present, an Implements clause indicated the interface methods that this ''' method implements. ''' </param> Public Shared Function FunctionStatement(attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, identifier As SyntaxToken, typeParameterList As TypeParameterListSyntax, parameterList As ParameterListSyntax, asClause As SimpleAsClauseSyntax, handlesClause As HandlesClauseSyntax, implementsClause As ImplementsClauseSyntax) As MethodStatementSyntax Return SyntaxFactory.FunctionStatement(attributeLists, modifiers, SyntaxFactory.Token(SyntaxKind.FunctionKeyword), identifier, typeParameterList, parameterList, asClause, handlesClause, implementsClause) End Function ''' <summary> ''' The statement that declares a Sub or Function. If this method has a body, this ''' statement will be the Begin of a BlockStatement with ''' Kind=MethodDeclarationBlock, and the body of the method will be the Body of ''' that BlockStatement. ''' </summary> ''' <param name="identifier"> ''' The name of the method being declared. ''' </param> Public Shared Function FunctionStatement(identifier As SyntaxToken) As MethodStatementSyntax Return SyntaxFactory.FunctionStatement(Nothing, Nothing, SyntaxFactory.Token(SyntaxKind.FunctionKeyword), identifier, Nothing, Nothing, Nothing, Nothing, Nothing) End Function ''' <summary> ''' The statement that declares a Sub or Function. If this method has a body, this ''' statement will be the Begin of a BlockStatement with ''' Kind=MethodDeclarationBlock, and the body of the method will be the Body of ''' that BlockStatement. ''' </summary> ''' <param name="identifier"> ''' The name of the method being declared. ''' </param> Public Shared Function FunctionStatement(identifier As String) As MethodStatementSyntax Return SyntaxFactory.FunctionStatement(Nothing, Nothing, SyntaxFactory.Token(SyntaxKind.FunctionKeyword), SyntaxFactory.Identifier(identifier), Nothing, Nothing, Nothing, Nothing, Nothing) End Function ''' <summary> ''' The statement that declares a Sub or Function. If this method has a body, this ''' statement will be the Begin of a BlockStatement with ''' Kind=MethodDeclarationBlock, and the body of the method will be the Body of ''' that BlockStatement. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' MethodStatementSyntax. One of SubStatement, FunctionStatement. ''' </param> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, Nothing is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. A bitfield version of all ''' the modifiers ORed together, which is in many cases easier to use, can be ''' obtained with the Modifiers property. ''' </param> ''' <param name="subOrFunctionKeyword"> ''' The "Sub" or "Function" keyword that introduces this method declaration. ''' </param> ''' <param name="identifier"> ''' The name of the method being declared. ''' </param> ''' <param name="typeParameterList"> ''' If present, a type parameter list with generic type parameters for this method. ''' If no generic type parameters were present, Nothing is returned. ''' </param> ''' <param name="parameterList"> ''' The method's parameter list including the parentheses. If no parameter list was ''' present, Nothing is returned. ''' </param> ''' <param name="asClause"> ''' The "As" clause that describes the return type. If no As clause was present, ''' Nothing is returned. ''' </param> ''' <param name="handlesClause"> ''' If present, a Handles clause indicated the events that this method handles. ''' </param> ''' <param name="implementsClause"> ''' If present, an Implements clause indicated the interface methods that this ''' method implements. ''' </param> Public Shared Function MethodStatement(ByVal kind As SyntaxKind, attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, subOrFunctionKeyword As SyntaxToken, identifier As SyntaxToken, typeParameterList As TypeParameterListSyntax, parameterList As ParameterListSyntax, asClause As SimpleAsClauseSyntax, handlesClause As HandlesClauseSyntax, implementsClause As ImplementsClauseSyntax) As MethodStatementSyntax If Not SyntaxFacts.IsMethodStatement(kind) Then Throw New ArgumentException("kind") End If If (Not subOrFunctionKeyword.IsKind(GetMethodStatementSubOrFunctionKeywordKind(kind))) Then Throw new ArgumentException("subOrFunctionKeyword") End If Select Case identifier.Kind() Case SyntaxKind.IdentifierToken Case Else Throw new ArgumentException("identifier") End Select Return New MethodStatementSyntax(kind, Nothing, Nothing, attributeLists.Node, modifiers.Node, DirectCast(subOrFunctionKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(identifier.Node, InternalSyntax.IdentifierTokenSyntax), typeParameterList, parameterList, asClause, handlesClause, implementsClause) End Function Private Shared Function GetMethodStatementSubOrFunctionKeywordKind(kind As SyntaxKind) As SyntaxKind Select Case kind Case SyntaxKind.SubStatement Return SyntaxKind.SubKeyword Case SyntaxKind.FunctionStatement Return SyntaxKind.FunctionKeyword Case Else Throw New ArgumentException("SubOrFunctionKeyword") End Select End Function ''' <summary> ''' The statement that declares a Sub or Function. If this method has a body, this ''' statement will be the Begin of a BlockStatement with ''' Kind=MethodDeclarationBlock, and the body of the method will be the Body of ''' that BlockStatement. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' MethodStatementSyntax. One of SubStatement, FunctionStatement. ''' </param> ''' <param name="subOrFunctionKeyword"> ''' The "Sub" or "Function" keyword that introduces this method declaration. ''' </param> ''' <param name="identifier"> ''' The name of the method being declared. ''' </param> Public Shared Function MethodStatement(ByVal kind As SyntaxKind, subOrFunctionKeyword As SyntaxToken, identifier As SyntaxToken) As MethodStatementSyntax Return SyntaxFactory.MethodStatement(kind, Nothing, Nothing, subOrFunctionKeyword, identifier, Nothing, Nothing, Nothing, Nothing, Nothing) End Function ''' <summary> ''' The statement that declares a Sub or Function. If this method has a body, this ''' statement will be the Begin of a BlockStatement with ''' Kind=MethodDeclarationBlock, and the body of the method will be the Body of ''' that BlockStatement. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' MethodStatementSyntax. One of SubStatement, FunctionStatement. ''' </param> ''' <param name="subOrFunctionKeyword"> ''' The "Sub" or "Function" keyword that introduces this method declaration. ''' </param> ''' <param name="identifier"> ''' The name of the method being declared. ''' </param> Public Shared Function MethodStatement(ByVal kind As SyntaxKind, subOrFunctionKeyword As SyntaxToken, identifier As String) As MethodStatementSyntax Return SyntaxFactory.MethodStatement(kind, Nothing, Nothing, subOrFunctionKeyword, SyntaxFactory.Identifier(identifier), Nothing, Nothing, Nothing, Nothing, Nothing) End Function ''' <summary> ''' A statement that declares a constructor. This statement will be the Begin of a ''' BlockStatement with Kind=MethodDeclarationBlock, and the body of the method ''' will be the Body of that BlockStatement. ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, Nothing is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. A bitfield version of all ''' the modifiers ORed together, which is in many cases easier to use, can be ''' obtained with the Modifiers property. ''' </param> ''' <param name="subKeyword"> ''' The "Sub" keyword. ''' </param> ''' <param name="newKeyword"> ''' The "New" keyword in the constructor declaration. ''' </param> ''' <param name="parameterList"> ''' The method's parameter list including the parentheses. If no parameter list was ''' present, Nothing is returned. ''' </param> Public Shared Function SubNewStatement(attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, subKeyword As SyntaxToken, newKeyword As SyntaxToken, parameterList As ParameterListSyntax) As SubNewStatementSyntax Select Case subKeyword.Kind() Case SyntaxKind.SubKeyword Case Else Throw new ArgumentException("subKeyword") End Select Select Case newKeyword.Kind() Case SyntaxKind.NewKeyword Case Else Throw new ArgumentException("newKeyword") End Select Return New SubNewStatementSyntax(SyntaxKind.SubNewStatement, Nothing, Nothing, attributeLists.Node, modifiers.Node, DirectCast(subKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(newKeyword.Node, InternalSyntax.KeywordSyntax), parameterList) End Function ''' <summary> ''' A statement that declares a constructor. This statement will be the Begin of a ''' BlockStatement with Kind=MethodDeclarationBlock, and the body of the method ''' will be the Body of that BlockStatement. ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, Nothing is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. A bitfield version of all ''' the modifiers ORed together, which is in many cases easier to use, can be ''' obtained with the Modifiers property. ''' </param> ''' <param name="parameterList"> ''' The method's parameter list including the parentheses. If no parameter list was ''' present, Nothing is returned. ''' </param> Public Shared Function SubNewStatement(attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, parameterList As ParameterListSyntax) As SubNewStatementSyntax Return SyntaxFactory.SubNewStatement(attributeLists, modifiers, SyntaxFactory.Token(SyntaxKind.SubKeyword), SyntaxFactory.Token(SyntaxKind.NewKeyword), parameterList) End Function ''' <summary> ''' A statement that declares a constructor. This statement will be the Begin of a ''' BlockStatement with Kind=MethodDeclarationBlock, and the body of the method ''' will be the Body of that BlockStatement. ''' </summary> Public Shared Function SubNewStatement() As SubNewStatementSyntax Return SyntaxFactory.SubNewStatement(Nothing, Nothing, SyntaxFactory.Token(SyntaxKind.SubKeyword), SyntaxFactory.Token(SyntaxKind.NewKeyword), Nothing) End Function ''' <summary> ''' A Declare statement that declares an external DLL method. ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, Nothing is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. A bitfield version of all ''' the modifiers ORed together, which is in many cases easier to use, can be ''' obtained with the Modifiers property. ''' </param> ''' <param name="declareKeyword"> ''' The "Declare" keyword. ''' </param> ''' <param name="charsetKeyword"> ''' If present, the keyword that defines the string translation semantics of the ''' external method. ''' </param> ''' <param name="subOrFunctionKeyword"> ''' The "Sub" or "Function" keyword. ''' </param> ''' <param name="identifier"> ''' The name of the method being declared. ''' </param> ''' <param name="libKeyword"> ''' The "Lib" keyword. ''' </param> ''' <param name="libraryName"> ''' The string literal with the library name. ''' </param> ''' <param name="aliasKeyword"> ''' If present, the "Alias" keyword. If not present, returns Nothing. ''' </param> ''' <param name="aliasName"> ''' The string literal with the alias. If not present, returns Nothing. ''' </param> ''' <param name="parameterList"> ''' The method's parameter list including the parentheses. If no parameter list was ''' present, Nothing is returned. ''' </param> ''' <param name="asClause"> ''' The "As" clause that describes the return type. If no As clause was present, ''' Nothing is returned. ''' </param> Public Shared Function DeclareSubStatement(attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, declareKeyword As SyntaxToken, charsetKeyword As SyntaxToken, subOrFunctionKeyword As SyntaxToken, identifier As SyntaxToken, libKeyword As SyntaxToken, libraryName As LiteralExpressionSyntax, aliasKeyword As SyntaxToken, aliasName As LiteralExpressionSyntax, parameterList As ParameterListSyntax, asClause As SimpleAsClauseSyntax) As DeclareStatementSyntax Select Case declareKeyword.Kind() Case SyntaxKind.DeclareKeyword Case Else Throw new ArgumentException("declareKeyword") End Select Select Case subOrFunctionKeyword.Kind() Case SyntaxKind.SubKeyword : Case SyntaxKind.FunctionKeyword Case Else Throw new ArgumentException("subOrFunctionKeyword") End Select Select Case identifier.Kind() Case SyntaxKind.IdentifierToken Case Else Throw new ArgumentException("identifier") End Select Select Case libKeyword.Kind() Case SyntaxKind.LibKeyword Case Else Throw new ArgumentException("libKeyword") End Select if libraryName Is Nothing Then Throw New ArgumentNullException(NameOf(libraryName)) End If Select Case libraryName.Kind() Case SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression Case Else Throw new ArgumentException("libraryName") End Select Return New DeclareStatementSyntax(SyntaxKind.DeclareSubStatement, Nothing, Nothing, attributeLists.Node, modifiers.Node, DirectCast(declareKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(charsetKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(subOrFunctionKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(identifier.Node, InternalSyntax.IdentifierTokenSyntax), DirectCast(libKeyword.Node, InternalSyntax.KeywordSyntax), libraryName, DirectCast(aliasKeyword.Node, InternalSyntax.KeywordSyntax), aliasName, parameterList, asClause) End Function ''' <summary> ''' A Declare statement that declares an external DLL method. ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, Nothing is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. A bitfield version of all ''' the modifiers ORed together, which is in many cases easier to use, can be ''' obtained with the Modifiers property. ''' </param> ''' <param name="charsetKeyword"> ''' If present, the keyword that defines the string translation semantics of the ''' external method. ''' </param> ''' <param name="identifier"> ''' The name of the method being declared. ''' </param> ''' <param name="libraryName"> ''' The string literal with the library name. ''' </param> ''' <param name="aliasName"> ''' The string literal with the alias. If not present, returns Nothing. ''' </param> ''' <param name="parameterList"> ''' The method's parameter list including the parentheses. If no parameter list was ''' present, Nothing is returned. ''' </param> ''' <param name="asClause"> ''' The "As" clause that describes the return type. If no As clause was present, ''' Nothing is returned. ''' </param> Public Shared Function DeclareSubStatement(attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, charsetKeyword As SyntaxToken, identifier As SyntaxToken, libraryName As LiteralExpressionSyntax, aliasName As LiteralExpressionSyntax, parameterList As ParameterListSyntax, asClause As SimpleAsClauseSyntax) As DeclareStatementSyntax Return SyntaxFactory.DeclareSubStatement(attributeLists, modifiers, SyntaxFactory.Token(SyntaxKind.DeclareKeyword), charsetKeyword, SyntaxFactory.Token(SyntaxKind.SubKeyword), identifier, SyntaxFactory.Token(SyntaxKind.LibKeyword), libraryName, Nothing, aliasName, parameterList, asClause) End Function ''' <summary> ''' A Declare statement that declares an external DLL method. ''' </summary> ''' <param name="identifier"> ''' The name of the method being declared. ''' </param> ''' <param name="libraryName"> ''' The string literal with the library name. ''' </param> Public Shared Function DeclareSubStatement(identifier As SyntaxToken, libraryName As LiteralExpressionSyntax) As DeclareStatementSyntax Return SyntaxFactory.DeclareSubStatement(Nothing, Nothing, SyntaxFactory.Token(SyntaxKind.DeclareKeyword), Nothing, SyntaxFactory.Token(SyntaxKind.SubKeyword), identifier, SyntaxFactory.Token(SyntaxKind.LibKeyword), libraryName, Nothing, Nothing, Nothing, Nothing) End Function ''' <summary> ''' A Declare statement that declares an external DLL method. ''' </summary> ''' <param name="identifier"> ''' The name of the method being declared. ''' </param> ''' <param name="libraryName"> ''' The string literal with the library name. ''' </param> Public Shared Function DeclareSubStatement(identifier As String, libraryName As LiteralExpressionSyntax) As DeclareStatementSyntax Return SyntaxFactory.DeclareSubStatement(Nothing, Nothing, SyntaxFactory.Token(SyntaxKind.DeclareKeyword), Nothing, SyntaxFactory.Token(SyntaxKind.SubKeyword), SyntaxFactory.Identifier(identifier), SyntaxFactory.Token(SyntaxKind.LibKeyword), libraryName, Nothing, Nothing, Nothing, Nothing) End Function ''' <summary> ''' A Declare statement that declares an external DLL method. ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, Nothing is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. A bitfield version of all ''' the modifiers ORed together, which is in many cases easier to use, can be ''' obtained with the Modifiers property. ''' </param> ''' <param name="declareKeyword"> ''' The "Declare" keyword. ''' </param> ''' <param name="charsetKeyword"> ''' If present, the keyword that defines the string translation semantics of the ''' external method. ''' </param> ''' <param name="subOrFunctionKeyword"> ''' The "Sub" or "Function" keyword. ''' </param> ''' <param name="identifier"> ''' The name of the method being declared. ''' </param> ''' <param name="libKeyword"> ''' The "Lib" keyword. ''' </param> ''' <param name="libraryName"> ''' The string literal with the library name. ''' </param> ''' <param name="aliasKeyword"> ''' If present, the "Alias" keyword. If not present, returns Nothing. ''' </param> ''' <param name="aliasName"> ''' The string literal with the alias. If not present, returns Nothing. ''' </param> ''' <param name="parameterList"> ''' The method's parameter list including the parentheses. If no parameter list was ''' present, Nothing is returned. ''' </param> ''' <param name="asClause"> ''' The "As" clause that describes the return type. If no As clause was present, ''' Nothing is returned. ''' </param> Public Shared Function DeclareFunctionStatement(attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, declareKeyword As SyntaxToken, charsetKeyword As SyntaxToken, subOrFunctionKeyword As SyntaxToken, identifier As SyntaxToken, libKeyword As SyntaxToken, libraryName As LiteralExpressionSyntax, aliasKeyword As SyntaxToken, aliasName As LiteralExpressionSyntax, parameterList As ParameterListSyntax, asClause As SimpleAsClauseSyntax) As DeclareStatementSyntax Select Case declareKeyword.Kind() Case SyntaxKind.DeclareKeyword Case Else Throw new ArgumentException("declareKeyword") End Select Select Case subOrFunctionKeyword.Kind() Case SyntaxKind.FunctionKeyword Case Else Throw new ArgumentException("subOrFunctionKeyword") End Select Select Case identifier.Kind() Case SyntaxKind.IdentifierToken Case Else Throw new ArgumentException("identifier") End Select Select Case libKeyword.Kind() Case SyntaxKind.LibKeyword Case Else Throw new ArgumentException("libKeyword") End Select if libraryName Is Nothing Then Throw New ArgumentNullException(NameOf(libraryName)) End If Select Case libraryName.Kind() Case SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression Case Else Throw new ArgumentException("libraryName") End Select Return New DeclareStatementSyntax(SyntaxKind.DeclareFunctionStatement, Nothing, Nothing, attributeLists.Node, modifiers.Node, DirectCast(declareKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(charsetKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(subOrFunctionKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(identifier.Node, InternalSyntax.IdentifierTokenSyntax), DirectCast(libKeyword.Node, InternalSyntax.KeywordSyntax), libraryName, DirectCast(aliasKeyword.Node, InternalSyntax.KeywordSyntax), aliasName, parameterList, asClause) End Function ''' <summary> ''' A Declare statement that declares an external DLL method. ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, Nothing is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. A bitfield version of all ''' the modifiers ORed together, which is in many cases easier to use, can be ''' obtained with the Modifiers property. ''' </param> ''' <param name="charsetKeyword"> ''' If present, the keyword that defines the string translation semantics of the ''' external method. ''' </param> ''' <param name="identifier"> ''' The name of the method being declared. ''' </param> ''' <param name="libraryName"> ''' The string literal with the library name. ''' </param> ''' <param name="aliasName"> ''' The string literal with the alias. If not present, returns Nothing. ''' </param> ''' <param name="parameterList"> ''' The method's parameter list including the parentheses. If no parameter list was ''' present, Nothing is returned. ''' </param> ''' <param name="asClause"> ''' The "As" clause that describes the return type. If no As clause was present, ''' Nothing is returned. ''' </param> Public Shared Function DeclareFunctionStatement(attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, charsetKeyword As SyntaxToken, identifier As SyntaxToken, libraryName As LiteralExpressionSyntax, aliasName As LiteralExpressionSyntax, parameterList As ParameterListSyntax, asClause As SimpleAsClauseSyntax) As DeclareStatementSyntax Return SyntaxFactory.DeclareFunctionStatement(attributeLists, modifiers, SyntaxFactory.Token(SyntaxKind.DeclareKeyword), charsetKeyword, SyntaxFactory.Token(SyntaxKind.FunctionKeyword), identifier, SyntaxFactory.Token(SyntaxKind.LibKeyword), libraryName, Nothing, aliasName, parameterList, asClause) End Function ''' <summary> ''' A Declare statement that declares an external DLL method. ''' </summary> ''' <param name="identifier"> ''' The name of the method being declared. ''' </param> ''' <param name="libraryName"> ''' The string literal with the library name. ''' </param> Public Shared Function DeclareFunctionStatement(identifier As SyntaxToken, libraryName As LiteralExpressionSyntax) As DeclareStatementSyntax Return SyntaxFactory.DeclareFunctionStatement(Nothing, Nothing, SyntaxFactory.Token(SyntaxKind.DeclareKeyword), Nothing, SyntaxFactory.Token(SyntaxKind.FunctionKeyword), identifier, SyntaxFactory.Token(SyntaxKind.LibKeyword), libraryName, Nothing, Nothing, Nothing, Nothing) End Function ''' <summary> ''' A Declare statement that declares an external DLL method. ''' </summary> ''' <param name="identifier"> ''' The name of the method being declared. ''' </param> ''' <param name="libraryName"> ''' The string literal with the library name. ''' </param> Public Shared Function DeclareFunctionStatement(identifier As String, libraryName As LiteralExpressionSyntax) As DeclareStatementSyntax Return SyntaxFactory.DeclareFunctionStatement(Nothing, Nothing, SyntaxFactory.Token(SyntaxKind.DeclareKeyword), Nothing, SyntaxFactory.Token(SyntaxKind.FunctionKeyword), SyntaxFactory.Identifier(identifier), SyntaxFactory.Token(SyntaxKind.LibKeyword), libraryName, Nothing, Nothing, Nothing, Nothing) End Function ''' <summary> ''' A Declare statement that declares an external DLL method. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' DeclareStatementSyntax. One of DeclareSubStatement, DeclareFunctionStatement. ''' </param> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, Nothing is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. A bitfield version of all ''' the modifiers ORed together, which is in many cases easier to use, can be ''' obtained with the Modifiers property. ''' </param> ''' <param name="declareKeyword"> ''' The "Declare" keyword. ''' </param> ''' <param name="charsetKeyword"> ''' If present, the keyword that defines the string translation semantics of the ''' external method. ''' </param> ''' <param name="subOrFunctionKeyword"> ''' The "Sub" or "Function" keyword. ''' </param> ''' <param name="identifier"> ''' The name of the method being declared. ''' </param> ''' <param name="libKeyword"> ''' The "Lib" keyword. ''' </param> ''' <param name="libraryName"> ''' The string literal with the library name. ''' </param> ''' <param name="aliasKeyword"> ''' If present, the "Alias" keyword. If not present, returns Nothing. ''' </param> ''' <param name="aliasName"> ''' The string literal with the alias. If not present, returns Nothing. ''' </param> ''' <param name="parameterList"> ''' The method's parameter list including the parentheses. If no parameter list was ''' present, Nothing is returned. ''' </param> ''' <param name="asClause"> ''' The "As" clause that describes the return type. If no As clause was present, ''' Nothing is returned. ''' </param> Public Shared Function DeclareStatement(ByVal kind As SyntaxKind, attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, declareKeyword As SyntaxToken, charsetKeyword As SyntaxToken, subOrFunctionKeyword As SyntaxToken, identifier As SyntaxToken, libKeyword As SyntaxToken, libraryName As LiteralExpressionSyntax, aliasKeyword As SyntaxToken, aliasName As LiteralExpressionSyntax, parameterList As ParameterListSyntax, asClause As SimpleAsClauseSyntax) As DeclareStatementSyntax If Not SyntaxFacts.IsDeclareStatement(kind) Then Throw New ArgumentException("kind") End If Select Case declareKeyword.Kind() Case SyntaxKind.DeclareKeyword Case Else Throw new ArgumentException("declareKeyword") End Select If (Not subOrFunctionKeyword.IsKind(GetDeclareStatementSubOrFunctionKeywordKind(kind))) Then Throw new ArgumentException("subOrFunctionKeyword") End If Select Case identifier.Kind() Case SyntaxKind.IdentifierToken Case Else Throw new ArgumentException("identifier") End Select Select Case libKeyword.Kind() Case SyntaxKind.LibKeyword Case Else Throw new ArgumentException("libKeyword") End Select if libraryName Is Nothing Then Throw New ArgumentNullException(NameOf(libraryName)) End If Select Case libraryName.Kind() Case SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression Case Else Throw new ArgumentException("libraryName") End Select Return New DeclareStatementSyntax(kind, Nothing, Nothing, attributeLists.Node, modifiers.Node, DirectCast(declareKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(charsetKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(subOrFunctionKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(identifier.Node, InternalSyntax.IdentifierTokenSyntax), DirectCast(libKeyword.Node, InternalSyntax.KeywordSyntax), libraryName, DirectCast(aliasKeyword.Node, InternalSyntax.KeywordSyntax), aliasName, parameterList, asClause) End Function Private Shared Function GetDeclareStatementSubOrFunctionKeywordKind(kind As SyntaxKind) As SyntaxKind Select Case kind Case SyntaxKind.DeclareSubStatement Return SyntaxKind.SubKeyword Case SyntaxKind.DeclareFunctionStatement Return SyntaxKind.FunctionKeyword Case Else Throw New ArgumentException("SubOrFunctionKeyword") End Select End Function ''' <summary> ''' A Declare statement that declares an external DLL method. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' DeclareStatementSyntax. One of DeclareSubStatement, DeclareFunctionStatement. ''' </param> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, Nothing is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. A bitfield version of all ''' the modifiers ORed together, which is in many cases easier to use, can be ''' obtained with the Modifiers property. ''' </param> ''' <param name="charsetKeyword"> ''' If present, the keyword that defines the string translation semantics of the ''' external method. ''' </param> ''' <param name="subOrFunctionKeyword"> ''' The "Sub" or "Function" keyword. ''' </param> ''' <param name="identifier"> ''' The name of the method being declared. ''' </param> ''' <param name="libraryName"> ''' The string literal with the library name. ''' </param> ''' <param name="aliasName"> ''' The string literal with the alias. If not present, returns Nothing. ''' </param> ''' <param name="parameterList"> ''' The method's parameter list including the parentheses. If no parameter list was ''' present, Nothing is returned. ''' </param> ''' <param name="asClause"> ''' The "As" clause that describes the return type. If no As clause was present, ''' Nothing is returned. ''' </param> Public Shared Function DeclareStatement(ByVal kind As SyntaxKind, attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, charsetKeyword As SyntaxToken, subOrFunctionKeyword As SyntaxToken, identifier As SyntaxToken, libraryName As LiteralExpressionSyntax, aliasName As LiteralExpressionSyntax, parameterList As ParameterListSyntax, asClause As SimpleAsClauseSyntax) As DeclareStatementSyntax Return SyntaxFactory.DeclareStatement(kind, attributeLists, modifiers, SyntaxFactory.Token(SyntaxKind.DeclareKeyword), charsetKeyword, subOrFunctionKeyword, identifier, SyntaxFactory.Token(SyntaxKind.LibKeyword), libraryName, Nothing, aliasName, parameterList, asClause) End Function ''' <summary> ''' A Declare statement that declares an external DLL method. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' DeclareStatementSyntax. One of DeclareSubStatement, DeclareFunctionStatement. ''' </param> ''' <param name="subOrFunctionKeyword"> ''' The "Sub" or "Function" keyword. ''' </param> ''' <param name="identifier"> ''' The name of the method being declared. ''' </param> ''' <param name="libraryName"> ''' The string literal with the library name. ''' </param> Public Shared Function DeclareStatement(ByVal kind As SyntaxKind, subOrFunctionKeyword As SyntaxToken, identifier As SyntaxToken, libraryName As LiteralExpressionSyntax) As DeclareStatementSyntax Return SyntaxFactory.DeclareStatement(kind, Nothing, Nothing, SyntaxFactory.Token(SyntaxKind.DeclareKeyword), Nothing, subOrFunctionKeyword, identifier, SyntaxFactory.Token(SyntaxKind.LibKeyword), libraryName, Nothing, Nothing, Nothing, Nothing) End Function ''' <summary> ''' A Declare statement that declares an external DLL method. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' DeclareStatementSyntax. One of DeclareSubStatement, DeclareFunctionStatement. ''' </param> ''' <param name="subOrFunctionKeyword"> ''' The "Sub" or "Function" keyword. ''' </param> ''' <param name="identifier"> ''' The name of the method being declared. ''' </param> ''' <param name="libraryName"> ''' The string literal with the library name. ''' </param> Public Shared Function DeclareStatement(ByVal kind As SyntaxKind, subOrFunctionKeyword As SyntaxToken, identifier As String, libraryName As LiteralExpressionSyntax) As DeclareStatementSyntax Return SyntaxFactory.DeclareStatement(kind, Nothing, Nothing, SyntaxFactory.Token(SyntaxKind.DeclareKeyword), Nothing, subOrFunctionKeyword, SyntaxFactory.Identifier(identifier), SyntaxFactory.Token(SyntaxKind.LibKeyword), libraryName, Nothing, Nothing, Nothing, Nothing) End Function ''' <summary> ''' A statement that declares a delegate type. ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, Nothing is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. A bitfield version of all ''' the modifiers ORed together, which is in many cases easier to use, can be ''' obtained with the Modifiers property. ''' </param> ''' <param name="delegateKeyword"> ''' The "Delegate" keyword. ''' </param> ''' <param name="subOrFunctionKeyword"> ''' The "Sub" or "Function" keyword. ''' </param> ''' <param name="identifier"> ''' The name of the delegate being declared. ''' </param> ''' <param name="typeParameterList"> ''' If present, a type parameter list with generic type parameters for this ''' delegate. If no generic type parameters were present, Nothing is returned. ''' </param> ''' <param name="parameterList"> ''' The method's parameter list including the parentheses. If no parameter list was ''' present, Nothing is returned. ''' </param> ''' <param name="asClause"> ''' The "As" clause that describes the return type. If no As clause was present, ''' Nothing is returned. ''' </param> Public Shared Function DelegateSubStatement(attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, delegateKeyword As SyntaxToken, subOrFunctionKeyword As SyntaxToken, identifier As SyntaxToken, typeParameterList As TypeParameterListSyntax, parameterList As ParameterListSyntax, asClause As SimpleAsClauseSyntax) As DelegateStatementSyntax Select Case delegateKeyword.Kind() Case SyntaxKind.DelegateKeyword Case Else Throw new ArgumentException("delegateKeyword") End Select Select Case subOrFunctionKeyword.Kind() Case SyntaxKind.SubKeyword : Case SyntaxKind.FunctionKeyword Case Else Throw new ArgumentException("subOrFunctionKeyword") End Select Select Case identifier.Kind() Case SyntaxKind.IdentifierToken Case Else Throw new ArgumentException("identifier") End Select Return New DelegateStatementSyntax(SyntaxKind.DelegateSubStatement, Nothing, Nothing, attributeLists.Node, modifiers.Node, DirectCast(delegateKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(subOrFunctionKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(identifier.Node, InternalSyntax.IdentifierTokenSyntax), typeParameterList, parameterList, asClause) End Function ''' <summary> ''' A statement that declares a delegate type. ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, Nothing is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. A bitfield version of all ''' the modifiers ORed together, which is in many cases easier to use, can be ''' obtained with the Modifiers property. ''' </param> ''' <param name="identifier"> ''' The name of the delegate being declared. ''' </param> ''' <param name="typeParameterList"> ''' If present, a type parameter list with generic type parameters for this ''' delegate. If no generic type parameters were present, Nothing is returned. ''' </param> ''' <param name="parameterList"> ''' The method's parameter list including the parentheses. If no parameter list was ''' present, Nothing is returned. ''' </param> ''' <param name="asClause"> ''' The "As" clause that describes the return type. If no As clause was present, ''' Nothing is returned. ''' </param> Public Shared Function DelegateSubStatement(attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, identifier As SyntaxToken, typeParameterList As TypeParameterListSyntax, parameterList As ParameterListSyntax, asClause As SimpleAsClauseSyntax) As DelegateStatementSyntax Return SyntaxFactory.DelegateSubStatement(attributeLists, modifiers, SyntaxFactory.Token(SyntaxKind.DelegateKeyword), SyntaxFactory.Token(SyntaxKind.SubKeyword), identifier, typeParameterList, parameterList, asClause) End Function ''' <summary> ''' A statement that declares a delegate type. ''' </summary> ''' <param name="identifier"> ''' The name of the delegate being declared. ''' </param> Public Shared Function DelegateSubStatement(identifier As SyntaxToken) As DelegateStatementSyntax Return SyntaxFactory.DelegateSubStatement(Nothing, Nothing, SyntaxFactory.Token(SyntaxKind.DelegateKeyword), SyntaxFactory.Token(SyntaxKind.SubKeyword), identifier, Nothing, Nothing, Nothing) End Function ''' <summary> ''' A statement that declares a delegate type. ''' </summary> ''' <param name="identifier"> ''' The name of the delegate being declared. ''' </param> Public Shared Function DelegateSubStatement(identifier As String) As DelegateStatementSyntax Return SyntaxFactory.DelegateSubStatement(Nothing, Nothing, SyntaxFactory.Token(SyntaxKind.DelegateKeyword), SyntaxFactory.Token(SyntaxKind.SubKeyword), SyntaxFactory.Identifier(identifier), Nothing, Nothing, Nothing) End Function ''' <summary> ''' A statement that declares a delegate type. ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, Nothing is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. A bitfield version of all ''' the modifiers ORed together, which is in many cases easier to use, can be ''' obtained with the Modifiers property. ''' </param> ''' <param name="delegateKeyword"> ''' The "Delegate" keyword. ''' </param> ''' <param name="subOrFunctionKeyword"> ''' The "Sub" or "Function" keyword. ''' </param> ''' <param name="identifier"> ''' The name of the delegate being declared. ''' </param> ''' <param name="typeParameterList"> ''' If present, a type parameter list with generic type parameters for this ''' delegate. If no generic type parameters were present, Nothing is returned. ''' </param> ''' <param name="parameterList"> ''' The method's parameter list including the parentheses. If no parameter list was ''' present, Nothing is returned. ''' </param> ''' <param name="asClause"> ''' The "As" clause that describes the return type. If no As clause was present, ''' Nothing is returned. ''' </param> Public Shared Function DelegateFunctionStatement(attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, delegateKeyword As SyntaxToken, subOrFunctionKeyword As SyntaxToken, identifier As SyntaxToken, typeParameterList As TypeParameterListSyntax, parameterList As ParameterListSyntax, asClause As SimpleAsClauseSyntax) As DelegateStatementSyntax Select Case delegateKeyword.Kind() Case SyntaxKind.DelegateKeyword Case Else Throw new ArgumentException("delegateKeyword") End Select Select Case subOrFunctionKeyword.Kind() Case SyntaxKind.FunctionKeyword Case Else Throw new ArgumentException("subOrFunctionKeyword") End Select Select Case identifier.Kind() Case SyntaxKind.IdentifierToken Case Else Throw new ArgumentException("identifier") End Select Return New DelegateStatementSyntax(SyntaxKind.DelegateFunctionStatement, Nothing, Nothing, attributeLists.Node, modifiers.Node, DirectCast(delegateKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(subOrFunctionKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(identifier.Node, InternalSyntax.IdentifierTokenSyntax), typeParameterList, parameterList, asClause) End Function ''' <summary> ''' A statement that declares a delegate type. ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, Nothing is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. A bitfield version of all ''' the modifiers ORed together, which is in many cases easier to use, can be ''' obtained with the Modifiers property. ''' </param> ''' <param name="identifier"> ''' The name of the delegate being declared. ''' </param> ''' <param name="typeParameterList"> ''' If present, a type parameter list with generic type parameters for this ''' delegate. If no generic type parameters were present, Nothing is returned. ''' </param> ''' <param name="parameterList"> ''' The method's parameter list including the parentheses. If no parameter list was ''' present, Nothing is returned. ''' </param> ''' <param name="asClause"> ''' The "As" clause that describes the return type. If no As clause was present, ''' Nothing is returned. ''' </param> Public Shared Function DelegateFunctionStatement(attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, identifier As SyntaxToken, typeParameterList As TypeParameterListSyntax, parameterList As ParameterListSyntax, asClause As SimpleAsClauseSyntax) As DelegateStatementSyntax Return SyntaxFactory.DelegateFunctionStatement(attributeLists, modifiers, SyntaxFactory.Token(SyntaxKind.DelegateKeyword), SyntaxFactory.Token(SyntaxKind.FunctionKeyword), identifier, typeParameterList, parameterList, asClause) End Function ''' <summary> ''' A statement that declares a delegate type. ''' </summary> ''' <param name="identifier"> ''' The name of the delegate being declared. ''' </param> Public Shared Function DelegateFunctionStatement(identifier As SyntaxToken) As DelegateStatementSyntax Return SyntaxFactory.DelegateFunctionStatement(Nothing, Nothing, SyntaxFactory.Token(SyntaxKind.DelegateKeyword), SyntaxFactory.Token(SyntaxKind.FunctionKeyword), identifier, Nothing, Nothing, Nothing) End Function ''' <summary> ''' A statement that declares a delegate type. ''' </summary> ''' <param name="identifier"> ''' The name of the delegate being declared. ''' </param> Public Shared Function DelegateFunctionStatement(identifier As String) As DelegateStatementSyntax Return SyntaxFactory.DelegateFunctionStatement(Nothing, Nothing, SyntaxFactory.Token(SyntaxKind.DelegateKeyword), SyntaxFactory.Token(SyntaxKind.FunctionKeyword), SyntaxFactory.Identifier(identifier), Nothing, Nothing, Nothing) End Function ''' <summary> ''' A statement that declares a delegate type. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' DelegateStatementSyntax. One of DelegateSubStatement, ''' DelegateFunctionStatement. ''' </param> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, Nothing is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. A bitfield version of all ''' the modifiers ORed together, which is in many cases easier to use, can be ''' obtained with the Modifiers property. ''' </param> ''' <param name="delegateKeyword"> ''' The "Delegate" keyword. ''' </param> ''' <param name="subOrFunctionKeyword"> ''' The "Sub" or "Function" keyword. ''' </param> ''' <param name="identifier"> ''' The name of the delegate being declared. ''' </param> ''' <param name="typeParameterList"> ''' If present, a type parameter list with generic type parameters for this ''' delegate. If no generic type parameters were present, Nothing is returned. ''' </param> ''' <param name="parameterList"> ''' The method's parameter list including the parentheses. If no parameter list was ''' present, Nothing is returned. ''' </param> ''' <param name="asClause"> ''' The "As" clause that describes the return type. If no As clause was present, ''' Nothing is returned. ''' </param> Public Shared Function DelegateStatement(ByVal kind As SyntaxKind, attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, delegateKeyword As SyntaxToken, subOrFunctionKeyword As SyntaxToken, identifier As SyntaxToken, typeParameterList As TypeParameterListSyntax, parameterList As ParameterListSyntax, asClause As SimpleAsClauseSyntax) As DelegateStatementSyntax If Not SyntaxFacts.IsDelegateStatement(kind) Then Throw New ArgumentException("kind") End If Select Case delegateKeyword.Kind() Case SyntaxKind.DelegateKeyword Case Else Throw new ArgumentException("delegateKeyword") End Select If (Not subOrFunctionKeyword.IsKind(GetDelegateStatementSubOrFunctionKeywordKind(kind))) Then Throw new ArgumentException("subOrFunctionKeyword") End If Select Case identifier.Kind() Case SyntaxKind.IdentifierToken Case Else Throw new ArgumentException("identifier") End Select Return New DelegateStatementSyntax(kind, Nothing, Nothing, attributeLists.Node, modifiers.Node, DirectCast(delegateKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(subOrFunctionKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(identifier.Node, InternalSyntax.IdentifierTokenSyntax), typeParameterList, parameterList, asClause) End Function Private Shared Function GetDelegateStatementSubOrFunctionKeywordKind(kind As SyntaxKind) As SyntaxKind Select Case kind Case SyntaxKind.DelegateSubStatement Return SyntaxKind.SubKeyword Case SyntaxKind.DelegateFunctionStatement Return SyntaxKind.FunctionKeyword Case Else Throw New ArgumentException("SubOrFunctionKeyword") End Select End Function ''' <summary> ''' A statement that declares a delegate type. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' DelegateStatementSyntax. One of DelegateSubStatement, ''' DelegateFunctionStatement. ''' </param> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, Nothing is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. A bitfield version of all ''' the modifiers ORed together, which is in many cases easier to use, can be ''' obtained with the Modifiers property. ''' </param> ''' <param name="subOrFunctionKeyword"> ''' The "Sub" or "Function" keyword. ''' </param> ''' <param name="identifier"> ''' The name of the delegate being declared. ''' </param> ''' <param name="typeParameterList"> ''' If present, a type parameter list with generic type parameters for this ''' delegate. If no generic type parameters were present, Nothing is returned. ''' </param> ''' <param name="parameterList"> ''' The method's parameter list including the parentheses. If no parameter list was ''' present, Nothing is returned. ''' </param> ''' <param name="asClause"> ''' The "As" clause that describes the return type. If no As clause was present, ''' Nothing is returned. ''' </param> Public Shared Function DelegateStatement(ByVal kind As SyntaxKind, attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, subOrFunctionKeyword As SyntaxToken, identifier As SyntaxToken, typeParameterList As TypeParameterListSyntax, parameterList As ParameterListSyntax, asClause As SimpleAsClauseSyntax) As DelegateStatementSyntax Return SyntaxFactory.DelegateStatement(kind, attributeLists, modifiers, SyntaxFactory.Token(SyntaxKind.DelegateKeyword), subOrFunctionKeyword, identifier, typeParameterList, parameterList, asClause) End Function ''' <summary> ''' A statement that declares a delegate type. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' DelegateStatementSyntax. One of DelegateSubStatement, ''' DelegateFunctionStatement. ''' </param> ''' <param name="subOrFunctionKeyword"> ''' The "Sub" or "Function" keyword. ''' </param> ''' <param name="identifier"> ''' The name of the delegate being declared. ''' </param> Public Shared Function DelegateStatement(ByVal kind As SyntaxKind, subOrFunctionKeyword As SyntaxToken, identifier As SyntaxToken) As DelegateStatementSyntax Return SyntaxFactory.DelegateStatement(kind, Nothing, Nothing, SyntaxFactory.Token(SyntaxKind.DelegateKeyword), subOrFunctionKeyword, identifier, Nothing, Nothing, Nothing) End Function ''' <summary> ''' A statement that declares a delegate type. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' DelegateStatementSyntax. One of DelegateSubStatement, ''' DelegateFunctionStatement. ''' </param> ''' <param name="subOrFunctionKeyword"> ''' The "Sub" or "Function" keyword. ''' </param> ''' <param name="identifier"> ''' The name of the delegate being declared. ''' </param> Public Shared Function DelegateStatement(ByVal kind As SyntaxKind, subOrFunctionKeyword As SyntaxToken, identifier As String) As DelegateStatementSyntax Return SyntaxFactory.DelegateStatement(kind, Nothing, Nothing, SyntaxFactory.Token(SyntaxKind.DelegateKeyword), subOrFunctionKeyword, SyntaxFactory.Identifier(identifier), Nothing, Nothing, Nothing) End Function ''' <summary> ''' A statement that declares an event. If the event being declared is a custom ''' event, this statement will be the Begin of a PropertyOrEventBlock, and the ''' accessors will be part of the Accessors of that node. ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, Nothing is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. A bitfield version of all ''' the modifiers ORed together, which is in many cases easier to use, can be ''' obtained with the Modifiers property. ''' </param> ''' <param name="customKeyword"> ''' The optional Custom keyword for custom event declarations. ''' </param> ''' <param name="eventKeyword"> ''' The "Event" keyword that introduces this event declaration. ''' </param> ''' <param name="identifier"> ''' The name of the event being declared. ''' </param> ''' <param name="parameterList"> ''' The method's parameter list including the parentheses. If no parameter list was ''' present, Nothing is returned. ''' </param> ''' <param name="asClause"> ''' The "As" clause that describes the return type. If no As clause was present, ''' Nothing is returned. ''' </param> ''' <param name="implementsClause"> ''' If present, an Implements clause indicates the interface methods that this ''' method implements. ''' </param> Public Shared Function EventStatement(attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, customKeyword As SyntaxToken, eventKeyword As SyntaxToken, identifier As SyntaxToken, parameterList As ParameterListSyntax, asClause As SimpleAsClauseSyntax, implementsClause As ImplementsClauseSyntax) As EventStatementSyntax Select Case eventKeyword.Kind() Case SyntaxKind.EventKeyword Case Else Throw new ArgumentException("eventKeyword") End Select Select Case identifier.Kind() Case SyntaxKind.IdentifierToken Case Else Throw new ArgumentException("identifier") End Select Return New EventStatementSyntax(SyntaxKind.EventStatement, Nothing, Nothing, attributeLists.Node, modifiers.Node, DirectCast(customKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(eventKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(identifier.Node, InternalSyntax.IdentifierTokenSyntax), parameterList, asClause, implementsClause) End Function ''' <summary> ''' A statement that declares an event. If the event being declared is a custom ''' event, this statement will be the Begin of a PropertyOrEventBlock, and the ''' accessors will be part of the Accessors of that node. ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, Nothing is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. A bitfield version of all ''' the modifiers ORed together, which is in many cases easier to use, can be ''' obtained with the Modifiers property. ''' </param> ''' <param name="identifier"> ''' The name of the event being declared. ''' </param> ''' <param name="parameterList"> ''' The method's parameter list including the parentheses. If no parameter list was ''' present, Nothing is returned. ''' </param> ''' <param name="asClause"> ''' The "As" clause that describes the return type. If no As clause was present, ''' Nothing is returned. ''' </param> ''' <param name="implementsClause"> ''' If present, an Implements clause indicates the interface methods that this ''' method implements. ''' </param> Public Shared Function EventStatement(attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, identifier As SyntaxToken, parameterList As ParameterListSyntax, asClause As SimpleAsClauseSyntax, implementsClause As ImplementsClauseSyntax) As EventStatementSyntax Return SyntaxFactory.EventStatement(attributeLists, modifiers, Nothing, SyntaxFactory.Token(SyntaxKind.EventKeyword), identifier, parameterList, asClause, implementsClause) End Function ''' <summary> ''' A statement that declares an event. If the event being declared is a custom ''' event, this statement will be the Begin of a PropertyOrEventBlock, and the ''' accessors will be part of the Accessors of that node. ''' </summary> ''' <param name="identifier"> ''' The name of the event being declared. ''' </param> Public Shared Function EventStatement(identifier As SyntaxToken) As EventStatementSyntax Return SyntaxFactory.EventStatement(Nothing, Nothing, Nothing, SyntaxFactory.Token(SyntaxKind.EventKeyword), identifier, Nothing, Nothing, Nothing) End Function ''' <summary> ''' A statement that declares an event. If the event being declared is a custom ''' event, this statement will be the Begin of a PropertyOrEventBlock, and the ''' accessors will be part of the Accessors of that node. ''' </summary> ''' <param name="identifier"> ''' The name of the event being declared. ''' </param> Public Shared Function EventStatement(identifier As String) As EventStatementSyntax Return SyntaxFactory.EventStatement(Nothing, Nothing, Nothing, SyntaxFactory.Token(SyntaxKind.EventKeyword), SyntaxFactory.Identifier(identifier), Nothing, Nothing, Nothing) End Function ''' <summary> ''' A statement that declares an operator. If this operator has a body, this ''' statement will be the Begin of a BlockStatement with ''' Kind=MethodDeclarationBlock, and the body of the method will be the Body of ''' that BlockStatement. ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, Nothing is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. A bitfield version of all ''' the modifiers ORed together, which is in many cases easier to use, can be ''' obtained with the Modifiers property. ''' </param> ''' <param name="operatorKeyword"> ''' The "Operator" keyword that introduces this operator declaration. ''' </param> ''' <param name="operatorToken"> ''' The operator being defined. ''' </param> ''' <param name="parameterList"> ''' The method's parameter list including the parentheses. If no parameter list was ''' present, Nothing is returned. ''' </param> ''' <param name="asClause"> ''' The "As" clause that describes the return type. If no As clause was present, ''' Nothing is returned. ''' </param> Public Shared Function OperatorStatement(attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, operatorKeyword As SyntaxToken, operatorToken As SyntaxToken, parameterList As ParameterListSyntax, asClause As SimpleAsClauseSyntax) As OperatorStatementSyntax Select Case operatorKeyword.Kind() Case SyntaxKind.OperatorKeyword Case Else Throw new ArgumentException("operatorKeyword") End Select Select Case operatorToken.Kind() Case SyntaxKind.CTypeKeyword : Case SyntaxKind.IsTrueKeyword : Case SyntaxKind.IsFalseKeyword : Case SyntaxKind.NotKeyword : Case SyntaxKind.PlusToken : Case SyntaxKind.MinusToken : Case SyntaxKind.AsteriskToken : Case SyntaxKind.SlashToken : Case SyntaxKind.CaretToken : Case SyntaxKind.BackslashToken : Case SyntaxKind.AmpersandToken : Case SyntaxKind.LessThanLessThanToken : Case SyntaxKind.GreaterThanGreaterThanToken : Case SyntaxKind.ModKeyword : Case SyntaxKind.OrKeyword : Case SyntaxKind.XorKeyword : Case SyntaxKind.AndKeyword : Case SyntaxKind.LikeKeyword : Case SyntaxKind.EqualsToken : Case SyntaxKind.LessThanGreaterThanToken : Case SyntaxKind.LessThanToken : Case SyntaxKind.LessThanEqualsToken : Case SyntaxKind.GreaterThanEqualsToken : Case SyntaxKind.GreaterThanToken Case Else Throw new ArgumentException("operatorToken") End Select Return New OperatorStatementSyntax(SyntaxKind.OperatorStatement, Nothing, Nothing, attributeLists.Node, modifiers.Node, DirectCast(operatorKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(operatorToken.Node, InternalSyntax.SyntaxToken), parameterList, asClause) End Function ''' <summary> ''' A statement that declares an operator. If this operator has a body, this ''' statement will be the Begin of a BlockStatement with ''' Kind=MethodDeclarationBlock, and the body of the method will be the Body of ''' that BlockStatement. ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, Nothing is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. A bitfield version of all ''' the modifiers ORed together, which is in many cases easier to use, can be ''' obtained with the Modifiers property. ''' </param> ''' <param name="operatorToken"> ''' The operator being defined. ''' </param> ''' <param name="parameterList"> ''' The method's parameter list including the parentheses. If no parameter list was ''' present, Nothing is returned. ''' </param> ''' <param name="asClause"> ''' The "As" clause that describes the return type. If no As clause was present, ''' Nothing is returned. ''' </param> Public Shared Function OperatorStatement(attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, operatorToken As SyntaxToken, parameterList As ParameterListSyntax, asClause As SimpleAsClauseSyntax) As OperatorStatementSyntax Return SyntaxFactory.OperatorStatement(attributeLists, modifiers, SyntaxFactory.Token(SyntaxKind.OperatorKeyword), operatorToken, parameterList, asClause) End Function ''' <summary> ''' A statement that declares an operator. If this operator has a body, this ''' statement will be the Begin of a BlockStatement with ''' Kind=MethodDeclarationBlock, and the body of the method will be the Body of ''' that BlockStatement. ''' </summary> ''' <param name="operatorToken"> ''' The operator being defined. ''' </param> Public Shared Function OperatorStatement(operatorToken As SyntaxToken) As OperatorStatementSyntax Return SyntaxFactory.OperatorStatement(Nothing, Nothing, SyntaxFactory.Token(SyntaxKind.OperatorKeyword), operatorToken, Nothing, Nothing) End Function ''' <summary> ''' Statement that declares a property. If this property has accessors declared, ''' this statement will be the Begin of a BlockNode, and the accessors will be the ''' Body of that node. Auto properties are property declarations without a ''' PropertyBlock. ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, Nothing is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. A bitfield version of all ''' the modifiers ORed together, which is in many cases easier to use, can be ''' obtained with the Modifiers property. ''' </param> ''' <param name="propertyKeyword"> ''' The "Property" keyword that introduces this property declaration. ''' </param> ''' <param name="identifier"> ''' The name of the property being declared. ''' </param> ''' <param name="parameterList"> ''' The method's parameter list including the parentheses. If no parameter list was ''' present, Nothing is returned. ''' </param> ''' <param name="asClause"> ''' The "As" clause that describes the return type. If no As clause was present, ''' Nothing is returned. ''' </param> ''' <param name="initializer"> ''' If present, an "= initial-value" clause describing the initial value of the ''' property. ''' </param> ''' <param name="implementsClause"> ''' If present, an Implements clause indicated the interface methods that this ''' method implements. ''' </param> Public Shared Function PropertyStatement(attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, propertyKeyword As SyntaxToken, identifier As SyntaxToken, parameterList As ParameterListSyntax, asClause As AsClauseSyntax, initializer As EqualsValueSyntax, implementsClause As ImplementsClauseSyntax) As PropertyStatementSyntax Select Case propertyKeyword.Kind() Case SyntaxKind.PropertyKeyword Case Else Throw new ArgumentException("propertyKeyword") End Select Select Case identifier.Kind() Case SyntaxKind.IdentifierToken Case Else Throw new ArgumentException("identifier") End Select Return New PropertyStatementSyntax(SyntaxKind.PropertyStatement, Nothing, Nothing, attributeLists.Node, modifiers.Node, DirectCast(propertyKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(identifier.Node, InternalSyntax.IdentifierTokenSyntax), parameterList, asClause, initializer, implementsClause) End Function ''' <summary> ''' Statement that declares a property. If this property has accessors declared, ''' this statement will be the Begin of a BlockNode, and the accessors will be the ''' Body of that node. Auto properties are property declarations without a ''' PropertyBlock. ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, Nothing is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. A bitfield version of all ''' the modifiers ORed together, which is in many cases easier to use, can be ''' obtained with the Modifiers property. ''' </param> ''' <param name="identifier"> ''' The name of the property being declared. ''' </param> ''' <param name="parameterList"> ''' The method's parameter list including the parentheses. If no parameter list was ''' present, Nothing is returned. ''' </param> ''' <param name="asClause"> ''' The "As" clause that describes the return type. If no As clause was present, ''' Nothing is returned. ''' </param> ''' <param name="initializer"> ''' If present, an "= initial-value" clause describing the initial value of the ''' property. ''' </param> ''' <param name="implementsClause"> ''' If present, an Implements clause indicated the interface methods that this ''' method implements. ''' </param> Public Shared Function PropertyStatement(attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, identifier As SyntaxToken, parameterList As ParameterListSyntax, asClause As AsClauseSyntax, initializer As EqualsValueSyntax, implementsClause As ImplementsClauseSyntax) As PropertyStatementSyntax Return SyntaxFactory.PropertyStatement(attributeLists, modifiers, SyntaxFactory.Token(SyntaxKind.PropertyKeyword), identifier, parameterList, asClause, initializer, implementsClause) End Function ''' <summary> ''' Statement that declares a property. If this property has accessors declared, ''' this statement will be the Begin of a BlockNode, and the accessors will be the ''' Body of that node. Auto properties are property declarations without a ''' PropertyBlock. ''' </summary> ''' <param name="identifier"> ''' The name of the property being declared. ''' </param> Public Shared Function PropertyStatement(identifier As SyntaxToken) As PropertyStatementSyntax Return SyntaxFactory.PropertyStatement(Nothing, Nothing, SyntaxFactory.Token(SyntaxKind.PropertyKeyword), identifier, Nothing, Nothing, Nothing, Nothing) End Function ''' <summary> ''' Statement that declares a property. If this property has accessors declared, ''' this statement will be the Begin of a BlockNode, and the accessors will be the ''' Body of that node. Auto properties are property declarations without a ''' PropertyBlock. ''' </summary> ''' <param name="identifier"> ''' The name of the property being declared. ''' </param> Public Shared Function PropertyStatement(identifier As String) As PropertyStatementSyntax Return SyntaxFactory.PropertyStatement(Nothing, Nothing, SyntaxFactory.Token(SyntaxKind.PropertyKeyword), SyntaxFactory.Identifier(identifier), Nothing, Nothing, Nothing, Nothing) End Function ''' <summary> ''' Represents a Get or Set accessor on a property declaration or an AddHandler, ''' RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of ''' the node determines what kind of accessor this is. This statement is always the ''' Begin of a BlockNode, and the body of the accessor is the Body of that node. ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, Nothing is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. A bitfield version of all ''' the modifiers ORed together, which is in many cases easier to use, can be ''' obtained with the Modifiers property. ''' </param> ''' <param name="accessorKeyword"> ''' The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" keyword that ''' introduces this accessor declaration. ''' </param> ''' <param name="parameterList"> ''' The method's parameter list including the parentheses. If no parameter list was ''' present, Nothing is returned. ''' </param> Public Shared Function GetAccessorStatement(attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, accessorKeyword As SyntaxToken, parameterList As ParameterListSyntax) As AccessorStatementSyntax Select Case accessorKeyword.Kind() Case SyntaxKind.GetKeyword : Case SyntaxKind.SetKeyword : Case SyntaxKind.AddHandlerKeyword : Case SyntaxKind.RemoveHandlerKeyword : Case SyntaxKind.RaiseEventKeyword Case Else Throw new ArgumentException("accessorKeyword") End Select Return New AccessorStatementSyntax(SyntaxKind.GetAccessorStatement, Nothing, Nothing, attributeLists.Node, modifiers.Node, DirectCast(accessorKeyword.Node, InternalSyntax.KeywordSyntax), parameterList) End Function ''' <summary> ''' Represents a Get or Set accessor on a property declaration or an AddHandler, ''' RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of ''' the node determines what kind of accessor this is. This statement is always the ''' Begin of a BlockNode, and the body of the accessor is the Body of that node. ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, Nothing is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. A bitfield version of all ''' the modifiers ORed together, which is in many cases easier to use, can be ''' obtained with the Modifiers property. ''' </param> ''' <param name="parameterList"> ''' The method's parameter list including the parentheses. If no parameter list was ''' present, Nothing is returned. ''' </param> Public Shared Function GetAccessorStatement(attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, parameterList As ParameterListSyntax) As AccessorStatementSyntax Return SyntaxFactory.GetAccessorStatement(attributeLists, modifiers, SyntaxFactory.Token(SyntaxKind.GetKeyword), parameterList) End Function ''' <summary> ''' Represents a Get or Set accessor on a property declaration or an AddHandler, ''' RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of ''' the node determines what kind of accessor this is. This statement is always the ''' Begin of a BlockNode, and the body of the accessor is the Body of that node. ''' </summary> Public Shared Function GetAccessorStatement() As AccessorStatementSyntax Return SyntaxFactory.GetAccessorStatement(Nothing, Nothing, SyntaxFactory.Token(SyntaxKind.GetKeyword), Nothing) End Function ''' <summary> ''' Represents a Get or Set accessor on a property declaration or an AddHandler, ''' RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of ''' the node determines what kind of accessor this is. This statement is always the ''' Begin of a BlockNode, and the body of the accessor is the Body of that node. ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, Nothing is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. A bitfield version of all ''' the modifiers ORed together, which is in many cases easier to use, can be ''' obtained with the Modifiers property. ''' </param> ''' <param name="accessorKeyword"> ''' The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" keyword that ''' introduces this accessor declaration. ''' </param> ''' <param name="parameterList"> ''' The method's parameter list including the parentheses. If no parameter list was ''' present, Nothing is returned. ''' </param> Public Shared Function SetAccessorStatement(attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, accessorKeyword As SyntaxToken, parameterList As ParameterListSyntax) As AccessorStatementSyntax Select Case accessorKeyword.Kind() Case SyntaxKind.SetKeyword Case Else Throw new ArgumentException("accessorKeyword") End Select Return New AccessorStatementSyntax(SyntaxKind.SetAccessorStatement, Nothing, Nothing, attributeLists.Node, modifiers.Node, DirectCast(accessorKeyword.Node, InternalSyntax.KeywordSyntax), parameterList) End Function ''' <summary> ''' Represents a Get or Set accessor on a property declaration or an AddHandler, ''' RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of ''' the node determines what kind of accessor this is. This statement is always the ''' Begin of a BlockNode, and the body of the accessor is the Body of that node. ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, Nothing is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. A bitfield version of all ''' the modifiers ORed together, which is in many cases easier to use, can be ''' obtained with the Modifiers property. ''' </param> ''' <param name="parameterList"> ''' The method's parameter list including the parentheses. If no parameter list was ''' present, Nothing is returned. ''' </param> Public Shared Function SetAccessorStatement(attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, parameterList As ParameterListSyntax) As AccessorStatementSyntax Return SyntaxFactory.SetAccessorStatement(attributeLists, modifiers, SyntaxFactory.Token(SyntaxKind.SetKeyword), parameterList) End Function ''' <summary> ''' Represents a Get or Set accessor on a property declaration or an AddHandler, ''' RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of ''' the node determines what kind of accessor this is. This statement is always the ''' Begin of a BlockNode, and the body of the accessor is the Body of that node. ''' </summary> Public Shared Function SetAccessorStatement() As AccessorStatementSyntax Return SyntaxFactory.SetAccessorStatement(Nothing, Nothing, SyntaxFactory.Token(SyntaxKind.SetKeyword), Nothing) End Function ''' <summary> ''' Represents a Get or Set accessor on a property declaration or an AddHandler, ''' RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of ''' the node determines what kind of accessor this is. This statement is always the ''' Begin of a BlockNode, and the body of the accessor is the Body of that node. ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, Nothing is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. A bitfield version of all ''' the modifiers ORed together, which is in many cases easier to use, can be ''' obtained with the Modifiers property. ''' </param> ''' <param name="accessorKeyword"> ''' The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" keyword that ''' introduces this accessor declaration. ''' </param> ''' <param name="parameterList"> ''' The method's parameter list including the parentheses. If no parameter list was ''' present, Nothing is returned. ''' </param> Public Shared Function AddHandlerAccessorStatement(attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, accessorKeyword As SyntaxToken, parameterList As ParameterListSyntax) As AccessorStatementSyntax Select Case accessorKeyword.Kind() Case SyntaxKind.AddHandlerKeyword Case Else Throw new ArgumentException("accessorKeyword") End Select Return New AccessorStatementSyntax(SyntaxKind.AddHandlerAccessorStatement, Nothing, Nothing, attributeLists.Node, modifiers.Node, DirectCast(accessorKeyword.Node, InternalSyntax.KeywordSyntax), parameterList) End Function ''' <summary> ''' Represents a Get or Set accessor on a property declaration or an AddHandler, ''' RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of ''' the node determines what kind of accessor this is. This statement is always the ''' Begin of a BlockNode, and the body of the accessor is the Body of that node. ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, Nothing is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. A bitfield version of all ''' the modifiers ORed together, which is in many cases easier to use, can be ''' obtained with the Modifiers property. ''' </param> ''' <param name="parameterList"> ''' The method's parameter list including the parentheses. If no parameter list was ''' present, Nothing is returned. ''' </param> Public Shared Function AddHandlerAccessorStatement(attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, parameterList As ParameterListSyntax) As AccessorStatementSyntax Return SyntaxFactory.AddHandlerAccessorStatement(attributeLists, modifiers, SyntaxFactory.Token(SyntaxKind.AddHandlerKeyword), parameterList) End Function ''' <summary> ''' Represents a Get or Set accessor on a property declaration or an AddHandler, ''' RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of ''' the node determines what kind of accessor this is. This statement is always the ''' Begin of a BlockNode, and the body of the accessor is the Body of that node. ''' </summary> Public Shared Function AddHandlerAccessorStatement() As AccessorStatementSyntax Return SyntaxFactory.AddHandlerAccessorStatement(Nothing, Nothing, SyntaxFactory.Token(SyntaxKind.AddHandlerKeyword), Nothing) End Function ''' <summary> ''' Represents a Get or Set accessor on a property declaration or an AddHandler, ''' RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of ''' the node determines what kind of accessor this is. This statement is always the ''' Begin of a BlockNode, and the body of the accessor is the Body of that node. ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, Nothing is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. A bitfield version of all ''' the modifiers ORed together, which is in many cases easier to use, can be ''' obtained with the Modifiers property. ''' </param> ''' <param name="accessorKeyword"> ''' The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" keyword that ''' introduces this accessor declaration. ''' </param> ''' <param name="parameterList"> ''' The method's parameter list including the parentheses. If no parameter list was ''' present, Nothing is returned. ''' </param> Public Shared Function RemoveHandlerAccessorStatement(attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, accessorKeyword As SyntaxToken, parameterList As ParameterListSyntax) As AccessorStatementSyntax Select Case accessorKeyword.Kind() Case SyntaxKind.RemoveHandlerKeyword Case Else Throw new ArgumentException("accessorKeyword") End Select Return New AccessorStatementSyntax(SyntaxKind.RemoveHandlerAccessorStatement, Nothing, Nothing, attributeLists.Node, modifiers.Node, DirectCast(accessorKeyword.Node, InternalSyntax.KeywordSyntax), parameterList) End Function ''' <summary> ''' Represents a Get or Set accessor on a property declaration or an AddHandler, ''' RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of ''' the node determines what kind of accessor this is. This statement is always the ''' Begin of a BlockNode, and the body of the accessor is the Body of that node. ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, Nothing is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. A bitfield version of all ''' the modifiers ORed together, which is in many cases easier to use, can be ''' obtained with the Modifiers property. ''' </param> ''' <param name="parameterList"> ''' The method's parameter list including the parentheses. If no parameter list was ''' present, Nothing is returned. ''' </param> Public Shared Function RemoveHandlerAccessorStatement(attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, parameterList As ParameterListSyntax) As AccessorStatementSyntax Return SyntaxFactory.RemoveHandlerAccessorStatement(attributeLists, modifiers, SyntaxFactory.Token(SyntaxKind.RemoveHandlerKeyword), parameterList) End Function ''' <summary> ''' Represents a Get or Set accessor on a property declaration or an AddHandler, ''' RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of ''' the node determines what kind of accessor this is. This statement is always the ''' Begin of a BlockNode, and the body of the accessor is the Body of that node. ''' </summary> Public Shared Function RemoveHandlerAccessorStatement() As AccessorStatementSyntax Return SyntaxFactory.RemoveHandlerAccessorStatement(Nothing, Nothing, SyntaxFactory.Token(SyntaxKind.RemoveHandlerKeyword), Nothing) End Function ''' <summary> ''' Represents a Get or Set accessor on a property declaration or an AddHandler, ''' RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of ''' the node determines what kind of accessor this is. This statement is always the ''' Begin of a BlockNode, and the body of the accessor is the Body of that node. ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, Nothing is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. A bitfield version of all ''' the modifiers ORed together, which is in many cases easier to use, can be ''' obtained with the Modifiers property. ''' </param> ''' <param name="accessorKeyword"> ''' The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" keyword that ''' introduces this accessor declaration. ''' </param> ''' <param name="parameterList"> ''' The method's parameter list including the parentheses. If no parameter list was ''' present, Nothing is returned. ''' </param> Public Shared Function RaiseEventAccessorStatement(attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, accessorKeyword As SyntaxToken, parameterList As ParameterListSyntax) As AccessorStatementSyntax Select Case accessorKeyword.Kind() Case SyntaxKind.RaiseEventKeyword Case Else Throw new ArgumentException("accessorKeyword") End Select Return New AccessorStatementSyntax(SyntaxKind.RaiseEventAccessorStatement, Nothing, Nothing, attributeLists.Node, modifiers.Node, DirectCast(accessorKeyword.Node, InternalSyntax.KeywordSyntax), parameterList) End Function ''' <summary> ''' Represents a Get or Set accessor on a property declaration or an AddHandler, ''' RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of ''' the node determines what kind of accessor this is. This statement is always the ''' Begin of a BlockNode, and the body of the accessor is the Body of that node. ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, Nothing is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. A bitfield version of all ''' the modifiers ORed together, which is in many cases easier to use, can be ''' obtained with the Modifiers property. ''' </param> ''' <param name="parameterList"> ''' The method's parameter list including the parentheses. If no parameter list was ''' present, Nothing is returned. ''' </param> Public Shared Function RaiseEventAccessorStatement(attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, parameterList As ParameterListSyntax) As AccessorStatementSyntax Return SyntaxFactory.RaiseEventAccessorStatement(attributeLists, modifiers, SyntaxFactory.Token(SyntaxKind.RaiseEventKeyword), parameterList) End Function ''' <summary> ''' Represents a Get or Set accessor on a property declaration or an AddHandler, ''' RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of ''' the node determines what kind of accessor this is. This statement is always the ''' Begin of a BlockNode, and the body of the accessor is the Body of that node. ''' </summary> Public Shared Function RaiseEventAccessorStatement() As AccessorStatementSyntax Return SyntaxFactory.RaiseEventAccessorStatement(Nothing, Nothing, SyntaxFactory.Token(SyntaxKind.RaiseEventKeyword), Nothing) End Function ''' <summary> ''' Represents a Get or Set accessor on a property declaration or an AddHandler, ''' RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of ''' the node determines what kind of accessor this is. This statement is always the ''' Begin of a BlockNode, and the body of the accessor is the Body of that node. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' AccessorStatementSyntax. One of GetAccessorStatement, SetAccessorStatement, ''' AddHandlerAccessorStatement, RemoveHandlerAccessorStatement, ''' RaiseEventAccessorStatement. ''' </param> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, Nothing is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. A bitfield version of all ''' the modifiers ORed together, which is in many cases easier to use, can be ''' obtained with the Modifiers property. ''' </param> ''' <param name="accessorKeyword"> ''' The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" keyword that ''' introduces this accessor declaration. ''' </param> ''' <param name="parameterList"> ''' The method's parameter list including the parentheses. If no parameter list was ''' present, Nothing is returned. ''' </param> Public Shared Function AccessorStatement(ByVal kind As SyntaxKind, attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, accessorKeyword As SyntaxToken, parameterList As ParameterListSyntax) As AccessorStatementSyntax If Not SyntaxFacts.IsAccessorStatement(kind) Then Throw New ArgumentException("kind") End If If (Not accessorKeyword.IsKind(GetAccessorStatementAccessorKeywordKind(kind))) Then Throw new ArgumentException("accessorKeyword") End If Return New AccessorStatementSyntax(kind, Nothing, Nothing, attributeLists.Node, modifiers.Node, DirectCast(accessorKeyword.Node, InternalSyntax.KeywordSyntax), parameterList) End Function Private Shared Function GetAccessorStatementAccessorKeywordKind(kind As SyntaxKind) As SyntaxKind Select Case kind Case SyntaxKind.GetAccessorStatement Return SyntaxKind.GetKeyword Case SyntaxKind.SetAccessorStatement Return SyntaxKind.SetKeyword Case SyntaxKind.AddHandlerAccessorStatement Return SyntaxKind.AddHandlerKeyword Case SyntaxKind.RemoveHandlerAccessorStatement Return SyntaxKind.RemoveHandlerKeyword Case SyntaxKind.RaiseEventAccessorStatement Return SyntaxKind.RaiseEventKeyword Case Else Throw New ArgumentException("AccessorKeyword") End Select End Function ''' <summary> ''' Represents a Get or Set accessor on a property declaration or an AddHandler, ''' RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of ''' the node determines what kind of accessor this is. This statement is always the ''' Begin of a BlockNode, and the body of the accessor is the Body of that node. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' AccessorStatementSyntax. One of GetAccessorStatement, SetAccessorStatement, ''' AddHandlerAccessorStatement, RemoveHandlerAccessorStatement, ''' RaiseEventAccessorStatement. ''' </param> ''' <param name="accessorKeyword"> ''' The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" keyword that ''' introduces this accessor declaration. ''' </param> Public Shared Function AccessorStatement(ByVal kind As SyntaxKind, accessorKeyword As SyntaxToken) As AccessorStatementSyntax Return SyntaxFactory.AccessorStatement(kind, Nothing, Nothing, accessorKeyword, Nothing) End Function ''' <summary> ''' Represents the "Implements ..." clause on a type member, which describes which ''' interface members this member implements. ''' </summary> ''' <param name="implementsKeyword"> ''' The "Implements" keyword. ''' </param> ''' <param name="interfaceMembers"> ''' The list of interface members being implemented. ''' </param> Public Shared Function ImplementsClause(implementsKeyword As SyntaxToken, interfaceMembers As SeparatedSyntaxList(Of QualifiedNameSyntax)) As ImplementsClauseSyntax Select Case implementsKeyword.Kind() Case SyntaxKind.ImplementsKeyword Case Else Throw new ArgumentException("implementsKeyword") End Select Return New ImplementsClauseSyntax(SyntaxKind.ImplementsClause, Nothing, Nothing, DirectCast(implementsKeyword.Node, InternalSyntax.KeywordSyntax), interfaceMembers.Node) End Function ''' <summary> ''' Represents the "Implements ..." clause on a type member, which describes which ''' interface members this member implements. ''' </summary> ''' <param name="interfaceMembers"> ''' The list of interface members being implemented. ''' </param> Public Shared Function ImplementsClause(interfaceMembers As SeparatedSyntaxList(Of QualifiedNameSyntax)) As ImplementsClauseSyntax Return SyntaxFactory.ImplementsClause(SyntaxFactory.Token(SyntaxKind.ImplementsKeyword), interfaceMembers) End Function ''' <summary> ''' Represents the "Implements ..." clause on a type member, which describes which ''' interface members this member implements. ''' </summary> ''' <param name="interfaceMembers"> ''' The list of interface members being implemented. ''' </param> Public Shared Function ImplementsClause(ParamArray interfaceMembers As QualifiedNameSyntax()) As ImplementsClauseSyntax Return SyntaxFactory.ImplementsClause(SyntaxFactory.Token(SyntaxKind.ImplementsKeyword), SyntaxFactory.SeparatedList(Of QualifiedNameSyntax)().AddRange(interfaceMembers)) End Function ''' <summary> ''' Represents the "Handles ..." clause on a method declaration that describes ''' which events this method handles. ''' </summary> ''' <param name="handlesKeyword"> ''' The "Handles" keyword. ''' </param> ''' <param name="events"> ''' The list of event members being handled. ''' </param> Public Shared Function HandlesClause(handlesKeyword As SyntaxToken, events As SeparatedSyntaxList(Of HandlesClauseItemSyntax)) As HandlesClauseSyntax Select Case handlesKeyword.Kind() Case SyntaxKind.HandlesKeyword Case Else Throw new ArgumentException("handlesKeyword") End Select Return New HandlesClauseSyntax(SyntaxKind.HandlesClause, Nothing, Nothing, DirectCast(handlesKeyword.Node, InternalSyntax.KeywordSyntax), events.Node) End Function ''' <summary> ''' Represents the "Handles ..." clause on a method declaration that describes ''' which events this method handles. ''' </summary> ''' <param name="events"> ''' The list of event members being handled. ''' </param> Public Shared Function HandlesClause(events As SeparatedSyntaxList(Of HandlesClauseItemSyntax)) As HandlesClauseSyntax Return SyntaxFactory.HandlesClause(SyntaxFactory.Token(SyntaxKind.HandlesKeyword), events) End Function ''' <summary> ''' Represents the "Handles ..." clause on a method declaration that describes ''' which events this method handles. ''' </summary> ''' <param name="events"> ''' The list of event members being handled. ''' </param> Public Shared Function HandlesClause(ParamArray events As HandlesClauseItemSyntax()) As HandlesClauseSyntax Return SyntaxFactory.HandlesClause(SyntaxFactory.Token(SyntaxKind.HandlesKeyword), SyntaxFactory.SeparatedList(Of HandlesClauseItemSyntax)().AddRange(events)) End Function ''' <summary> ''' Represents event container specified through special keywords "Me", "MyBase" or ''' "MyClass".. ''' </summary> ''' <param name="keyword"> ''' The container of the event. This can be one of the special keywords: "Me", ''' "MyBase" or "MyClass". ''' </param> Public Shared Function KeywordEventContainer(keyword As SyntaxToken) As KeywordEventContainerSyntax Select Case keyword.Kind() Case SyntaxKind.MyBaseKeyword : Case SyntaxKind.MeKeyword : Case SyntaxKind.MyClassKeyword Case Else Throw new ArgumentException("keyword") End Select Return New KeywordEventContainerSyntax(SyntaxKind.KeywordEventContainer, Nothing, Nothing, DirectCast(keyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' Represents event container that refers to a WithEvents member. ''' </summary> ''' <param name="identifier"> ''' The container of the event. It is a simple identifier that refers to a ''' WithEvents member of the containing type. ''' </param> Public Shared Function WithEventsEventContainer(identifier As SyntaxToken) As WithEventsEventContainerSyntax Select Case identifier.Kind() Case SyntaxKind.IdentifierToken Case Else Throw new ArgumentException("identifier") End Select Return New WithEventsEventContainerSyntax(SyntaxKind.WithEventsEventContainer, Nothing, Nothing, DirectCast(identifier.Node, InternalSyntax.IdentifierTokenSyntax)) End Function ''' <summary> ''' Represents event container that refers to a WithEvents member. ''' </summary> ''' <param name="identifier"> ''' The container of the event. It is a simple identifier that refers to a ''' WithEvents member of the containing type. ''' </param> Public Shared Function WithEventsEventContainer(identifier As String) As WithEventsEventContainerSyntax Return SyntaxFactory.WithEventsEventContainer(SyntaxFactory.Identifier(identifier)) End Function ''' <summary> ''' Represents event container that refers to a WithEvents member's property. ''' </summary> ''' <param name="withEventsContainer"> ''' The container of the event. ''' </param> ''' <param name="dotToken"> ''' The "." token. ''' </param> ''' <param name="property"> ''' The provider of the event. It is a property of a WithEvents member of the ''' containing type. ''' </param> Public Shared Function WithEventsPropertyEventContainer(withEventsContainer As WithEventsEventContainerSyntax, dotToken As SyntaxToken, [property] As IdentifierNameSyntax) As WithEventsPropertyEventContainerSyntax if withEventsContainer Is Nothing Then Throw New ArgumentNullException(NameOf(withEventsContainer)) End If Select Case withEventsContainer.Kind() Case SyntaxKind.WithEventsEventContainer Case Else Throw new ArgumentException("withEventsContainer") End Select Select Case dotToken.Kind() Case SyntaxKind.DotToken Case Else Throw new ArgumentException("dotToken") End Select if [property] Is Nothing Then Throw New ArgumentNullException(NameOf([property])) End If Select Case [property].Kind() Case SyntaxKind.IdentifierName Case Else Throw new ArgumentException("[property]") End Select Return New WithEventsPropertyEventContainerSyntax(SyntaxKind.WithEventsPropertyEventContainer, Nothing, Nothing, withEventsContainer, DirectCast(dotToken.Node, InternalSyntax.PunctuationSyntax), [property]) End Function ''' <summary> ''' Represents event container that refers to a WithEvents member's property. ''' </summary> ''' <param name="withEventsContainer"> ''' The container of the event. ''' </param> ''' <param name="property"> ''' The provider of the event. It is a property of a WithEvents member of the ''' containing type. ''' </param> Public Shared Function WithEventsPropertyEventContainer(withEventsContainer As WithEventsEventContainerSyntax, [property] As IdentifierNameSyntax) As WithEventsPropertyEventContainerSyntax Return SyntaxFactory.WithEventsPropertyEventContainer(withEventsContainer, SyntaxFactory.Token(SyntaxKind.DotToken), [property]) End Function ''' <summary> ''' Represents a single handled event in a "Handles ..." clause. ''' </summary> ''' <param name="eventContainer"> ''' The container of the event. This can either be a simple identifier (identifying ''' a members of the containing type) or one of the special keywords "Me", "MyBase" ''' or "MyClass". ''' </param> ''' <param name="dotToken"> ''' The "." token. ''' </param> ''' <param name="eventMember"> ''' The event being handled. This must be a simple identifier. ''' </param> Public Shared Function HandlesClauseItem(eventContainer As EventContainerSyntax, dotToken As SyntaxToken, eventMember As IdentifierNameSyntax) As HandlesClauseItemSyntax if eventContainer Is Nothing Then Throw New ArgumentNullException(NameOf(eventContainer)) End If Select Case eventContainer.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer Case Else Throw new ArgumentException("eventContainer") End Select Select Case dotToken.Kind() Case SyntaxKind.DotToken Case Else Throw new ArgumentException("dotToken") End Select if eventMember Is Nothing Then Throw New ArgumentNullException(NameOf(eventMember)) End If Select Case eventMember.Kind() Case SyntaxKind.IdentifierName Case Else Throw new ArgumentException("eventMember") End Select Return New HandlesClauseItemSyntax(SyntaxKind.HandlesClauseItem, Nothing, Nothing, eventContainer, DirectCast(dotToken.Node, InternalSyntax.PunctuationSyntax), eventMember) End Function ''' <summary> ''' Represents a single handled event in a "Handles ..." clause. ''' </summary> ''' <param name="eventContainer"> ''' The container of the event. This can either be a simple identifier (identifying ''' a members of the containing type) or one of the special keywords "Me", "MyBase" ''' or "MyClass". ''' </param> ''' <param name="eventMember"> ''' The event being handled. This must be a simple identifier. ''' </param> Public Shared Function HandlesClauseItem(eventContainer As EventContainerSyntax, eventMember As IdentifierNameSyntax) As HandlesClauseItemSyntax Return SyntaxFactory.HandlesClauseItem(eventContainer, SyntaxFactory.Token(SyntaxKind.DotToken), eventMember) End Function ''' <summary> ''' Represents the beginning of a declaration. However, not enough syntax is ''' detected to classify this as a field, method, property or event. This is node ''' always represents a syntax error. ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, an empty list is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. ''' </param> ''' <param name="missingIdentifier"> ''' The missing identifier token for this incomplete member. Should only be used to ''' have a location for error reporting. ''' </param> Public Shared Function IncompleteMember(attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, missingIdentifier As SyntaxToken) As IncompleteMemberSyntax Return New IncompleteMemberSyntax(SyntaxKind.IncompleteMember, Nothing, Nothing, attributeLists.Node, modifiers.Node, DirectCast(missingIdentifier.Node, InternalSyntax.IdentifierTokenSyntax)) End Function ''' <summary> ''' Represents the beginning of a declaration. However, not enough syntax is ''' detected to classify this as a field, method, property or event. This is node ''' always represents a syntax error. ''' </summary> Public Shared Function IncompleteMember() As IncompleteMemberSyntax Return SyntaxFactory.IncompleteMember(Nothing, Nothing, Nothing) End Function ''' <summary> ''' Represents the declaration of one or more variables or constants, either as ''' local variables or as class/structure members. In the case of a constant, it is ''' represented by having "Const" in the Modifiers (although technically "Const" is ''' not a modifier, it is represented as one in the parse trees.) ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, an empty list is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. ''' </param> ''' <param name="declarators"> ''' The list of variable declarator. Each declarator specifies one or more variable ''' names along with a type and/or initializer. ''' </param> Public Shared Function FieldDeclaration(attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, declarators As SeparatedSyntaxList(Of VariableDeclaratorSyntax)) As FieldDeclarationSyntax Return New FieldDeclarationSyntax(SyntaxKind.FieldDeclaration, Nothing, Nothing, attributeLists.Node, modifiers.Node, declarators.Node) End Function ''' <summary> ''' Represents the declaration of one or more variables or constants, either as ''' local variables or as class/structure members. In the case of a constant, it is ''' represented by having "Const" in the Modifiers (although technically "Const" is ''' not a modifier, it is represented as one in the parse trees.) ''' </summary> ''' <param name="declarators"> ''' The list of variable declarator. Each declarator specifies one or more variable ''' names along with a type and/or initializer. ''' </param> Public Shared Function FieldDeclaration(declarators As SeparatedSyntaxList(Of VariableDeclaratorSyntax)) As FieldDeclarationSyntax Return SyntaxFactory.FieldDeclaration(Nothing, Nothing, declarators) End Function ''' <summary> ''' Represents the declaration of one or more variables or constants, either as ''' local variables or as class/structure members. In the case of a constant, it is ''' represented by having "Const" in the Modifiers (although technically "Const" is ''' not a modifier, it is represented as one in the parse trees.) ''' </summary> ''' <param name="declarators"> ''' The list of variable declarator. Each declarator specifies one or more variable ''' names along with a type and/or initializer. ''' </param> Public Shared Function FieldDeclaration(ParamArray declarators As VariableDeclaratorSyntax()) As FieldDeclarationSyntax Return SyntaxFactory.FieldDeclaration(Nothing, Nothing, SyntaxFactory.SeparatedList(Of VariableDeclaratorSyntax)().AddRange(declarators)) End Function ''' <summary> ''' Represents the part of a variable or constant declaration statement that ''' associated one or more variable names with a type. ''' </summary> ''' <param name="names"> ''' The names of the variables being declared. Each name might have a "?" or "()" ''' modifier(s) attached. ''' </param> ''' <param name="asClause"> ''' The "As" clause that describes the return type, and possibly includes "New", ''' "With" or "From". If no As clause was present, Nothing is returned. ''' </param> ''' <param name="initializer"> ''' If present, an "= initial-value" clause describing the initial value of the ''' variable or the value of the constant. ''' </param> Public Shared Function VariableDeclarator(names As SeparatedSyntaxList(Of ModifiedIdentifierSyntax), asClause As AsClauseSyntax, initializer As EqualsValueSyntax) As VariableDeclaratorSyntax Return New VariableDeclaratorSyntax(SyntaxKind.VariableDeclarator, Nothing, Nothing, names.Node, asClause, initializer) End Function ''' <summary> ''' Represents the part of a variable or constant declaration statement that ''' associated one or more variable names with a type. ''' </summary> ''' <param name="names"> ''' The names of the variables being declared. Each name might have a "?" or "()" ''' modifier(s) attached. ''' </param> Public Shared Function VariableDeclarator(names As SeparatedSyntaxList(Of ModifiedIdentifierSyntax)) As VariableDeclaratorSyntax Return SyntaxFactory.VariableDeclarator(names, Nothing, Nothing) End Function ''' <summary> ''' Represents the part of a variable or constant declaration statement that ''' associated one or more variable names with a type. ''' </summary> ''' <param name="names"> ''' The names of the variables being declared. Each name might have a "?" or "()" ''' modifier(s) attached. ''' </param> Public Shared Function VariableDeclarator(ParamArray names As ModifiedIdentifierSyntax()) As VariableDeclaratorSyntax Return SyntaxFactory.VariableDeclarator(SyntaxFactory.SeparatedList(Of ModifiedIdentifierSyntax)().AddRange(names), Nothing, Nothing) End Function ''' <summary> ''' Represents an "As {type-name}" clause that does not have an initializer or ''' "New". The type has optional attributes associated with it, although attributes ''' are not permitted in all possible places where this node occurs. ''' </summary> ''' <param name="asKeyword"> ''' The "As" keyword. ''' </param> ''' <param name="attributeLists"> ''' A list of all attribute lists on the type. If no attributes were specified, an ''' empty list is returned. ''' </param> ''' <param name="type"> ''' The type-name part of the As clause. ''' </param> Public Shared Function SimpleAsClause(asKeyword As SyntaxToken, attributeLists As SyntaxList(of AttributeListSyntax), type As TypeSyntax) As SimpleAsClauseSyntax Select Case asKeyword.Kind() Case SyntaxKind.AsKeyword Case Else Throw new ArgumentException("asKeyword") End Select if type Is Nothing Then Throw New ArgumentNullException(NameOf(type)) End If Select Case type.Kind() Case SyntaxKind.TupleType, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference Case Else Throw new ArgumentException("type") End Select Return New SimpleAsClauseSyntax(SyntaxKind.SimpleAsClause, Nothing, Nothing, DirectCast(asKeyword.Node, InternalSyntax.KeywordSyntax), attributeLists.Node, type) End Function ''' <summary> ''' Represents an "As {type-name}" clause that does not have an initializer or ''' "New". The type has optional attributes associated with it, although attributes ''' are not permitted in all possible places where this node occurs. ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on the type. If no attributes were specified, an ''' empty list is returned. ''' </param> ''' <param name="type"> ''' The type-name part of the As clause. ''' </param> Public Shared Function SimpleAsClause(attributeLists As SyntaxList(of AttributeListSyntax), type As TypeSyntax) As SimpleAsClauseSyntax Return SyntaxFactory.SimpleAsClause(SyntaxFactory.Token(SyntaxKind.AsKeyword), attributeLists, type) End Function ''' <summary> ''' Represents an "As {type-name}" clause that does not have an initializer or ''' "New". The type has optional attributes associated with it, although attributes ''' are not permitted in all possible places where this node occurs. ''' </summary> ''' <param name="type"> ''' The type-name part of the As clause. ''' </param> Public Shared Function SimpleAsClause(type As TypeSyntax) As SimpleAsClauseSyntax Return SyntaxFactory.SimpleAsClause(SyntaxFactory.Token(SyntaxKind.AsKeyword), Nothing, type) End Function ''' <summary> ''' Represents an "As New {type-name} [arguments] [initializers]" clause in a ''' declaration. The type has optional attributes associated with it, although ''' attributes are not permitted in many places where this node occurs (they are ''' permitted, for example, on automatically implemented properties.) ''' </summary> ''' <param name="asKeyword"> ''' The "As" keyword. ''' </param> ''' <param name="newExpression"> ''' The New expression ''' </param> Public Shared Function AsNewClause(asKeyword As SyntaxToken, newExpression As NewExpressionSyntax) As AsNewClauseSyntax Select Case asKeyword.Kind() Case SyntaxKind.AsKeyword Case Else Throw new ArgumentException("asKeyword") End Select if newExpression Is Nothing Then Throw New ArgumentNullException(NameOf(newExpression)) End If Select Case newExpression.Kind() Case SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression Case Else Throw new ArgumentException("newExpression") End Select Return New AsNewClauseSyntax(SyntaxKind.AsNewClause, Nothing, Nothing, DirectCast(asKeyword.Node, InternalSyntax.KeywordSyntax), newExpression) End Function ''' <summary> ''' Represents an "As New {type-name} [arguments] [initializers]" clause in a ''' declaration. The type has optional attributes associated with it, although ''' attributes are not permitted in many places where this node occurs (they are ''' permitted, for example, on automatically implemented properties.) ''' </summary> ''' <param name="newExpression"> ''' The New expression ''' </param> Public Shared Function AsNewClause(newExpression As NewExpressionSyntax) As AsNewClauseSyntax Return SyntaxFactory.AsNewClause(SyntaxFactory.Token(SyntaxKind.AsKeyword), newExpression) End Function ''' <summary> ''' Represents a "With {...} clause used to initialize a new object's members. ''' </summary> ''' <param name="withKeyword"> ''' The "With" keyword. ''' </param> ''' <param name="openBraceToken"> ''' The "{" token. ''' </param> ''' <param name="initializers"> ''' The comma-separated list of field initializers. ''' </param> ''' <param name="closeBraceToken"> ''' The "}" token. ''' </param> Public Shared Function ObjectMemberInitializer(withKeyword As SyntaxToken, openBraceToken As SyntaxToken, initializers As SeparatedSyntaxList(Of FieldInitializerSyntax), closeBraceToken As SyntaxToken) As ObjectMemberInitializerSyntax Select Case withKeyword.Kind() Case SyntaxKind.WithKeyword Case Else Throw new ArgumentException("withKeyword") End Select Select Case openBraceToken.Kind() Case SyntaxKind.OpenBraceToken Case Else Throw new ArgumentException("openBraceToken") End Select Select Case closeBraceToken.Kind() Case SyntaxKind.CloseBraceToken Case Else Throw new ArgumentException("closeBraceToken") End Select Return New ObjectMemberInitializerSyntax(SyntaxKind.ObjectMemberInitializer, Nothing, Nothing, DirectCast(withKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(openBraceToken.Node, InternalSyntax.PunctuationSyntax), initializers.Node, DirectCast(closeBraceToken.Node, InternalSyntax.PunctuationSyntax)) End Function ''' <summary> ''' Represents a "With {...} clause used to initialize a new object's members. ''' </summary> ''' <param name="initializers"> ''' The comma-separated list of field initializers. ''' </param> Public Shared Function ObjectMemberInitializer(initializers As SeparatedSyntaxList(Of FieldInitializerSyntax)) As ObjectMemberInitializerSyntax Return SyntaxFactory.ObjectMemberInitializer(SyntaxFactory.Token(SyntaxKind.WithKeyword), SyntaxFactory.Token(SyntaxKind.OpenBraceToken), initializers, SyntaxFactory.Token(SyntaxKind.CloseBraceToken)) End Function ''' <summary> ''' Represents a "With {...} clause used to initialize a new object's members. ''' </summary> ''' <param name="initializers"> ''' The comma-separated list of field initializers. ''' </param> Public Shared Function ObjectMemberInitializer(ParamArray initializers As FieldInitializerSyntax()) As ObjectMemberInitializerSyntax Return SyntaxFactory.ObjectMemberInitializer(SyntaxFactory.Token(SyntaxKind.WithKeyword), SyntaxFactory.Token(SyntaxKind.OpenBraceToken), SyntaxFactory.SeparatedList(Of FieldInitializerSyntax)().AddRange(initializers), SyntaxFactory.Token(SyntaxKind.CloseBraceToken)) End Function ''' <summary> ''' Represents a "From {...} clause used to initialize a new collection object's ''' elements. ''' </summary> ''' <param name="fromKeyword"> ''' The "From" keyword. ''' </param> ''' <param name="initializer"> ''' The initializer including the braces. ''' </param> Public Shared Function ObjectCollectionInitializer(fromKeyword As SyntaxToken, initializer As CollectionInitializerSyntax) As ObjectCollectionInitializerSyntax Select Case fromKeyword.Kind() Case SyntaxKind.FromKeyword Case Else Throw new ArgumentException("fromKeyword") End Select if initializer Is Nothing Then Throw New ArgumentNullException(NameOf(initializer)) End If Select Case initializer.Kind() Case SyntaxKind.CollectionInitializer Case Else Throw new ArgumentException("initializer") End Select Return New ObjectCollectionInitializerSyntax(SyntaxKind.ObjectCollectionInitializer, Nothing, Nothing, DirectCast(fromKeyword.Node, InternalSyntax.KeywordSyntax), initializer) End Function ''' <summary> ''' Represents a "From {...} clause used to initialize a new collection object's ''' elements. ''' </summary> ''' <param name="initializer"> ''' The initializer including the braces. ''' </param> Public Shared Function ObjectCollectionInitializer(initializer As CollectionInitializerSyntax) As ObjectCollectionInitializerSyntax Return SyntaxFactory.ObjectCollectionInitializer(SyntaxFactory.Token(SyntaxKind.FromKeyword), initializer) End Function ''' <summary> ''' Represent a field initializer in a With {...} initializer where the field name ''' is inferred from the initializer expression. ''' </summary> ''' <param name="keyKeyword"> ''' The optional "Key" keyword. ''' </param> ''' <param name="expression"> ''' The value being assigned. ''' </param> Public Shared Function InferredFieldInitializer(keyKeyword As SyntaxToken, expression As ExpressionSyntax) As InferredFieldInitializerSyntax if expression Is Nothing Then Throw New ArgumentNullException(NameOf(expression)) End If Select Case expression.Kind() Case SyntaxKind.IdentifierName, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression Case Else Throw new ArgumentException("expression") End Select Return New InferredFieldInitializerSyntax(SyntaxKind.InferredFieldInitializer, Nothing, Nothing, DirectCast(keyKeyword.Node, InternalSyntax.KeywordSyntax), expression) End Function ''' <summary> ''' Represent a field initializer in a With {...} initializer where the field name ''' is inferred from the initializer expression. ''' </summary> ''' <param name="expression"> ''' The value being assigned. ''' </param> Public Shared Function InferredFieldInitializer(expression As ExpressionSyntax) As InferredFieldInitializerSyntax Return SyntaxFactory.InferredFieldInitializer(Nothing, expression) End Function ''' <summary> ''' Represent a named field initializer in a With {...} initializer, such as ".x = ''' expr". ''' </summary> ''' <param name="keyKeyword"> ''' The optional "Key" keyword. ''' </param> ''' <param name="dotToken"> ''' The "." token. ''' </param> ''' <param name="name"> ''' The name of the field being initialized. ''' </param> ''' <param name="equalsToken"> ''' The "=" token. ''' </param> ''' <param name="expression"> ''' The value being assigned to the field. ''' </param> Public Shared Function NamedFieldInitializer(keyKeyword As SyntaxToken, dotToken As SyntaxToken, name As IdentifierNameSyntax, equalsToken As SyntaxToken, expression As ExpressionSyntax) As NamedFieldInitializerSyntax Select Case dotToken.Kind() Case SyntaxKind.DotToken Case Else Throw new ArgumentException("dotToken") End Select if name Is Nothing Then Throw New ArgumentNullException(NameOf(name)) End If Select Case name.Kind() Case SyntaxKind.IdentifierName Case Else Throw new ArgumentException("name") End Select Select Case equalsToken.Kind() Case SyntaxKind.EqualsToken Case Else Throw new ArgumentException("equalsToken") End Select if expression Is Nothing Then Throw New ArgumentNullException(NameOf(expression)) End If Select Case expression.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("expression") End Select Return New NamedFieldInitializerSyntax(SyntaxKind.NamedFieldInitializer, Nothing, Nothing, DirectCast(keyKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(dotToken.Node, InternalSyntax.PunctuationSyntax), name, DirectCast(equalsToken.Node, InternalSyntax.PunctuationSyntax), expression) End Function ''' <summary> ''' Represent a named field initializer in a With {...} initializer, such as ".x = ''' expr". ''' </summary> ''' <param name="name"> ''' The name of the field being initialized. ''' </param> ''' <param name="expression"> ''' The value being assigned to the field. ''' </param> Public Shared Function NamedFieldInitializer(name As IdentifierNameSyntax, expression As ExpressionSyntax) As NamedFieldInitializerSyntax Return SyntaxFactory.NamedFieldInitializer(Nothing, SyntaxFactory.Token(SyntaxKind.DotToken), name, SyntaxFactory.Token(SyntaxKind.EqualsToken), expression) End Function ''' <summary> ''' Represents an "= initializer" clause in a declaration for a variable, parameter ''' or automatic property. ''' </summary> ''' <param name="equalsToken"> ''' The "=" token. ''' </param> ''' <param name="value"> ''' The expression used as the initial value. ''' </param> Public Shared Function EqualsValue(equalsToken As SyntaxToken, value As ExpressionSyntax) As EqualsValueSyntax Select Case equalsToken.Kind() Case SyntaxKind.EqualsToken Case Else Throw new ArgumentException("equalsToken") End Select if value Is Nothing Then Throw New ArgumentNullException(NameOf(value)) End If Select Case value.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("value") End Select Return New EqualsValueSyntax(SyntaxKind.EqualsValue, Nothing, Nothing, DirectCast(equalsToken.Node, InternalSyntax.PunctuationSyntax), value) End Function ''' <summary> ''' Represents an "= initializer" clause in a declaration for a variable, parameter ''' or automatic property. ''' </summary> ''' <param name="value"> ''' The expression used as the initial value. ''' </param> Public Shared Function EqualsValue(value As ExpressionSyntax) As EqualsValueSyntax Return SyntaxFactory.EqualsValue(SyntaxFactory.Token(SyntaxKind.EqualsToken), value) End Function ''' <summary> ''' Represent a parameter to a method, property, constructor, etc. ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on this parameter. If no attributes were ''' specified, Nothing is returned. ''' </param> ''' <param name="modifiers"> ''' A list of the modifier tokens "ByVal", "ByRef", "Optional" or "ParamArray" that ''' modify this parameter. ''' </param> ''' <param name="identifier"> ''' The name of the parameter, including any "?" or "()" modifiers. ''' </param> ''' <param name="asClause"> ''' If present, the "As type-name" clause describing the type of the parameter. If ''' no As clause is present, Nothing is returned. ''' </param> ''' <param name="default"> ''' If present, an initializer with the default value of the parameter. If no ''' default value is present, Nothing is returned. ''' </param> Public Shared Function Parameter(attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, identifier As ModifiedIdentifierSyntax, asClause As SimpleAsClauseSyntax, [default] As EqualsValueSyntax) As ParameterSyntax if identifier Is Nothing Then Throw New ArgumentNullException(NameOf(identifier)) End If Select Case identifier.Kind() Case SyntaxKind.ModifiedIdentifier Case Else Throw new ArgumentException("identifier") End Select Return New ParameterSyntax(SyntaxKind.Parameter, Nothing, Nothing, attributeLists.Node, modifiers.Node, identifier, asClause, [default]) End Function ''' <summary> ''' Represent a parameter to a method, property, constructor, etc. ''' </summary> ''' <param name="identifier"> ''' The name of the parameter, including any "?" or "()" modifiers. ''' </param> Public Shared Function Parameter(identifier As ModifiedIdentifierSyntax) As ParameterSyntax Return SyntaxFactory.Parameter(Nothing, Nothing, identifier, Nothing, Nothing) End Function ''' <summary> ''' Represents an identifier with optional "?" or "()" or "(,,,)" modifiers, as ''' used in parameter declarations and variable declarations. ''' </summary> ''' <param name="identifier"> ''' The identifier that names the item being declared. ''' </param> ''' <param name="nullable"> ''' The "?" token that indicates a nullable type. ''' </param> ''' <param name="arrayBounds"> ''' The optional array bounds, such as "(4)" or "(0 to 5, 0 To 6)". ''' </param> ''' <param name="arrayRankSpecifiers"> ''' A list of array modifiers for the type. If no array modifiers were present, an ''' empty list is returned. ''' </param> Public Shared Function ModifiedIdentifier(identifier As SyntaxToken, nullable As SyntaxToken, arrayBounds As ArgumentListSyntax, arrayRankSpecifiers As SyntaxList(of ArrayRankSpecifierSyntax)) As ModifiedIdentifierSyntax Select Case identifier.Kind() Case SyntaxKind.IdentifierToken Case Else Throw new ArgumentException("identifier") End Select Return New ModifiedIdentifierSyntax(SyntaxKind.ModifiedIdentifier, Nothing, Nothing, DirectCast(identifier.Node, InternalSyntax.IdentifierTokenSyntax), DirectCast(nullable.Node, InternalSyntax.PunctuationSyntax), arrayBounds, arrayRankSpecifiers.Node) End Function ''' <summary> ''' Represents an identifier with optional "?" or "()" or "(,,,)" modifiers, as ''' used in parameter declarations and variable declarations. ''' </summary> ''' <param name="identifier"> ''' The identifier that names the item being declared. ''' </param> ''' <param name="arrayBounds"> ''' The optional array bounds, such as "(4)" or "(0 to 5, 0 To 6)". ''' </param> Public Shared Function ModifiedIdentifier(identifier As SyntaxToken, arrayBounds As ArgumentListSyntax) As ModifiedIdentifierSyntax Return SyntaxFactory.ModifiedIdentifier(identifier, Nothing, arrayBounds, Nothing) End Function ''' <summary> ''' Represents an identifier with optional "?" or "()" or "(,,,)" modifiers, as ''' used in parameter declarations and variable declarations. ''' </summary> ''' <param name="identifier"> ''' The identifier that names the item being declared. ''' </param> Public Shared Function ModifiedIdentifier(identifier As SyntaxToken) As ModifiedIdentifierSyntax Return SyntaxFactory.ModifiedIdentifier(identifier, Nothing, Nothing, Nothing) End Function ''' <summary> ''' Represents an identifier with optional "?" or "()" or "(,,,)" modifiers, as ''' used in parameter declarations and variable declarations. ''' </summary> ''' <param name="identifier"> ''' The identifier that names the item being declared. ''' </param> Public Shared Function ModifiedIdentifier(identifier As String) As ModifiedIdentifierSyntax Return SyntaxFactory.ModifiedIdentifier(SyntaxFactory.Identifier(identifier), Nothing, Nothing, Nothing) End Function ''' <summary> ''' Represents a modifier that describes an array type, without bounds, such as ''' "()" or "(,)". ''' </summary> ''' <param name="openParenToken"> ''' The "(" token. ''' </param> ''' <param name="commaTokens"> ''' The comma tokens in the array type. There is one less comma than the rank. ''' </param> ''' <param name="closeParenToken"> ''' The ")" token. ''' </param> Public Shared Function ArrayRankSpecifier(openParenToken As SyntaxToken, commaTokens As SyntaxTokenList, closeParenToken As SyntaxToken) As ArrayRankSpecifierSyntax Select Case openParenToken.Kind() Case SyntaxKind.OpenParenToken Case Else Throw new ArgumentException("openParenToken") End Select Select Case closeParenToken.Kind() Case SyntaxKind.CloseParenToken Case Else Throw new ArgumentException("closeParenToken") End Select Return New ArrayRankSpecifierSyntax(SyntaxKind.ArrayRankSpecifier, Nothing, Nothing, DirectCast(openParenToken.Node, InternalSyntax.PunctuationSyntax), commaTokens.Node, DirectCast(closeParenToken.Node, InternalSyntax.PunctuationSyntax)) End Function ''' <summary> ''' Represents a modifier that describes an array type, without bounds, such as ''' "()" or "(,)". ''' </summary> Public Shared Function ArrayRankSpecifier() As ArrayRankSpecifierSyntax Return SyntaxFactory.ArrayRankSpecifier(SyntaxFactory.Token(SyntaxKind.OpenParenToken), Nothing, SyntaxFactory.Token(SyntaxKind.CloseParenToken)) End Function ''' <summary> ''' Represents a group of attributes within "<" and ">" brackets. ''' </summary> ''' <param name="lessThanToken"> ''' The "<" token. ''' </param> ''' <param name="attributes"> ''' A comma separated list of attribute declarations in this attribute list. ''' </param> ''' <param name="greaterThanToken"> ''' The ">" token. ''' </param> Public Shared Function AttributeList(lessThanToken As SyntaxToken, attributes As SeparatedSyntaxList(Of AttributeSyntax), greaterThanToken As SyntaxToken) As AttributeListSyntax Select Case lessThanToken.Kind() Case SyntaxKind.LessThanToken Case Else Throw new ArgumentException("lessThanToken") End Select Select Case greaterThanToken.Kind() Case SyntaxKind.GreaterThanToken Case Else Throw new ArgumentException("greaterThanToken") End Select Return New AttributeListSyntax(SyntaxKind.AttributeList, Nothing, Nothing, DirectCast(lessThanToken.Node, InternalSyntax.PunctuationSyntax), attributes.Node, DirectCast(greaterThanToken.Node, InternalSyntax.PunctuationSyntax)) End Function ''' <summary> ''' Represents a group of attributes within "<" and ">" brackets. ''' </summary> ''' <param name="attributes"> ''' A comma separated list of attribute declarations in this attribute list. ''' </param> Public Shared Function AttributeList(attributes As SeparatedSyntaxList(Of AttributeSyntax)) As AttributeListSyntax Return SyntaxFactory.AttributeList(SyntaxFactory.Token(SyntaxKind.LessThanToken), attributes, SyntaxFactory.Token(SyntaxKind.GreaterThanToken)) End Function ''' <summary> ''' Represents a group of attributes within "<" and ">" brackets. ''' </summary> Public Shared Function AttributeList() As AttributeListSyntax Return SyntaxFactory.AttributeList(SyntaxFactory.Token(SyntaxKind.LessThanToken), Nothing, SyntaxFactory.Token(SyntaxKind.GreaterThanToken)) End Function ''' <summary> ''' Represents a single attribute declaration within an attribute list. ''' </summary> ''' <param name="target"> ''' Optional attribute target. Assembly|Module : ''' </param> ''' <param name="name"> ''' The name of the attribute. ''' </param> ''' <param name="argumentList"> ''' The argument list, if present. If no argument list was supplied, Nothing is ''' returned. ''' </param> Public Shared Function Attribute(target As AttributeTargetSyntax, name As TypeSyntax, argumentList As ArgumentListSyntax) As AttributeSyntax if name Is Nothing Then Throw New ArgumentNullException(NameOf(name)) End If Select Case name.Kind() Case SyntaxKind.PredefinedType, SyntaxKind.NullableType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference Case Else Throw new ArgumentException("name") End Select Return New AttributeSyntax(SyntaxKind.Attribute, Nothing, Nothing, target, name, argumentList) End Function ''' <summary> ''' Represents a single attribute declaration within an attribute list. ''' </summary> ''' <param name="name"> ''' The name of the attribute. ''' </param> Public Shared Function Attribute(name As TypeSyntax) As AttributeSyntax Return SyntaxFactory.Attribute(Nothing, name, Nothing) End Function ''' <summary> ''' Represents a single attribute declaration within an attribute list. ''' </summary> ''' <param name="attributeModifier"> ''' The "Assembly" or "Module" attribute modifier, is present. If no attribute ''' modifier is present, Nothing is returned. ''' </param> ''' <param name="colonToken"> ''' The ":" token, if an attribute modifier is present. If no attribute modifier is ''' present, Nothing is returned. ''' </param> Public Shared Function AttributeTarget(attributeModifier As SyntaxToken, colonToken As SyntaxToken) As AttributeTargetSyntax Select Case attributeModifier.Kind() Case SyntaxKind.AssemblyKeyword : Case SyntaxKind.ModuleKeyword Case Else Throw new ArgumentException("attributeModifier") End Select Select Case colonToken.Kind() Case SyntaxKind.ColonToken Case Else Throw new ArgumentException("colonToken") End Select Return New AttributeTargetSyntax(SyntaxKind.AttributeTarget, Nothing, Nothing, DirectCast(attributeModifier.Node, InternalSyntax.KeywordSyntax), DirectCast(colonToken.Node, InternalSyntax.PunctuationSyntax)) End Function ''' <summary> ''' Represents a single attribute declaration within an attribute list. ''' </summary> ''' <param name="attributeModifier"> ''' The "Assembly" or "Module" attribute modifier, is present. If no attribute ''' modifier is present, Nothing is returned. ''' </param> Public Shared Function AttributeTarget(attributeModifier As SyntaxToken) As AttributeTargetSyntax Return SyntaxFactory.AttributeTarget(attributeModifier, SyntaxFactory.Token(SyntaxKind.ColonToken)) End Function ''' <summary> ''' Represents a file-level attribute, in which the attributes have no other ''' syntactic element they are attached to. ''' </summary> ''' <param name="attributeLists"> ''' The list of attribute lists. ''' </param> Public Shared Function AttributesStatement(attributeLists As SyntaxList(of AttributeListSyntax)) As AttributesStatementSyntax Return New AttributesStatementSyntax(SyntaxKind.AttributesStatement, Nothing, Nothing, attributeLists.Node) End Function ''' <summary> ''' Represents a file-level attribute, in which the attributes have no other ''' syntactic element they are attached to. ''' </summary> Public Shared Function AttributesStatement() As AttributesStatementSyntax Return SyntaxFactory.AttributesStatement(Nothing) End Function ''' <summary> ''' Represent an expression in a statement context. This may only be a invocation ''' or await expression in standard code but may be any expression in VB ''' Interactive code. ''' </summary> ''' <param name="expression"> ''' The expression. ''' </param> Public Shared Function ExpressionStatement(expression As ExpressionSyntax) As ExpressionStatementSyntax if expression Is Nothing Then Throw New ArgumentNullException(NameOf(expression)) End If Select Case expression.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("expression") End Select Return New ExpressionStatementSyntax(SyntaxKind.ExpressionStatement, Nothing, Nothing, expression) End Function ''' <summary> ''' Represent a "? expression" "Print" statement in VB Interactive code. ''' </summary> ''' <param name="questionToken"> ''' "?" token. ''' </param> ''' <param name="expression"> ''' The expression whose value is being output. ''' </param> Public Shared Function PrintStatement(questionToken As SyntaxToken, expression As ExpressionSyntax) As PrintStatementSyntax Select Case questionToken.Kind() Case SyntaxKind.QuestionToken Case Else Throw new ArgumentException("questionToken") End Select if expression Is Nothing Then Throw New ArgumentNullException(NameOf(expression)) End If Select Case expression.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("expression") End Select Return New PrintStatementSyntax(SyntaxKind.PrintStatement, Nothing, Nothing, DirectCast(questionToken.Node, InternalSyntax.PunctuationSyntax), expression) End Function ''' <summary> ''' Represent a "? expression" "Print" statement in VB Interactive code. ''' </summary> ''' <param name="expression"> ''' The expression whose value is being output. ''' </param> Public Shared Function PrintStatement(expression As ExpressionSyntax) As PrintStatementSyntax Return SyntaxFactory.PrintStatement(SyntaxFactory.Token(SyntaxKind.QuestionToken), expression) End Function ''' <summary> ''' Represents a While...End While statement, including the While, body and End ''' While. ''' </summary> ''' <param name="whileStatement"> ''' The While statement that begins the block. ''' </param> ''' <param name="statements"> ''' The statements contained in the While...End While. This might be an empty list. ''' </param> ''' <param name="endWhileStatement"> ''' The End While statement that ends the block. ''' </param> Public Shared Function WhileBlock(whileStatement As WhileStatementSyntax, statements As SyntaxList(of StatementSyntax), endWhileStatement As EndBlockStatementSyntax) As WhileBlockSyntax if whileStatement Is Nothing Then Throw New ArgumentNullException(NameOf(whileStatement)) End If Select Case whileStatement.Kind() Case SyntaxKind.WhileStatement Case Else Throw new ArgumentException("whileStatement") End Select if endWhileStatement Is Nothing Then Throw New ArgumentNullException(NameOf(endWhileStatement)) End If Select Case endWhileStatement.Kind() Case SyntaxKind.EndWhileStatement Case Else Throw new ArgumentException("endWhileStatement") End Select Return New WhileBlockSyntax(SyntaxKind.WhileBlock, Nothing, Nothing, whileStatement, statements.Node, endWhileStatement) End Function ''' <summary> ''' Represents a While...End While statement, including the While, body and End ''' While. ''' </summary> ''' <param name="whileStatement"> ''' The While statement that begins the block. ''' </param> ''' <param name="statements"> ''' The statements contained in the While...End While. This might be an empty list. ''' </param> Public Shared Function WhileBlock(whileStatement As WhileStatementSyntax, statements As SyntaxList(of StatementSyntax)) As WhileBlockSyntax Return SyntaxFactory.WhileBlock(whileStatement, statements, SyntaxFactory.EndWhileStatement()) End Function ''' <summary> ''' Represents a While...End While statement, including the While, body and End ''' While. ''' </summary> ''' <param name="whileStatement"> ''' The While statement that begins the block. ''' </param> Public Shared Function WhileBlock(whileStatement As WhileStatementSyntax) As WhileBlockSyntax Return SyntaxFactory.WhileBlock(whileStatement, Nothing, SyntaxFactory.EndWhileStatement()) End Function ''' <summary> ''' Represents an entire Using...End Using statement, including the Using, body and ''' End Using statements. ''' </summary> ''' <param name="usingStatement"> ''' The UsingStatement that begins the Using...End Using block. ''' </param> ''' <param name="statements"> ''' The statements contained in the Using...End Using block. This might be an empty ''' list. ''' </param> ''' <param name="endUsingStatement"> ''' The End Using statement that ends the block. ''' </param> Public Shared Function UsingBlock(usingStatement As UsingStatementSyntax, statements As SyntaxList(of StatementSyntax), endUsingStatement As EndBlockStatementSyntax) As UsingBlockSyntax if usingStatement Is Nothing Then Throw New ArgumentNullException(NameOf(usingStatement)) End If Select Case usingStatement.Kind() Case SyntaxKind.UsingStatement Case Else Throw new ArgumentException("usingStatement") End Select if endUsingStatement Is Nothing Then Throw New ArgumentNullException(NameOf(endUsingStatement)) End If Select Case endUsingStatement.Kind() Case SyntaxKind.EndUsingStatement Case Else Throw new ArgumentException("endUsingStatement") End Select Return New UsingBlockSyntax(SyntaxKind.UsingBlock, Nothing, Nothing, usingStatement, statements.Node, endUsingStatement) End Function ''' <summary> ''' Represents an entire Using...End Using statement, including the Using, body and ''' End Using statements. ''' </summary> ''' <param name="usingStatement"> ''' The UsingStatement that begins the Using...End Using block. ''' </param> ''' <param name="statements"> ''' The statements contained in the Using...End Using block. This might be an empty ''' list. ''' </param> Public Shared Function UsingBlock(usingStatement As UsingStatementSyntax, statements As SyntaxList(of StatementSyntax)) As UsingBlockSyntax Return SyntaxFactory.UsingBlock(usingStatement, statements, SyntaxFactory.EndUsingStatement()) End Function ''' <summary> ''' Represents an entire Using...End Using statement, including the Using, body and ''' End Using statements. ''' </summary> ''' <param name="usingStatement"> ''' The UsingStatement that begins the Using...End Using block. ''' </param> Public Shared Function UsingBlock(usingStatement As UsingStatementSyntax) As UsingBlockSyntax Return SyntaxFactory.UsingBlock(usingStatement, Nothing, SyntaxFactory.EndUsingStatement()) End Function ''' <summary> ''' Represents a entire SyncLock...End SyncLock block, including the SyncLock ''' statement, the enclosed statements, and the End SyncLock statement. ''' </summary> ''' <param name="syncLockStatement"> ''' The SyncLock statement that begins the block. ''' </param> ''' <param name="statements"> ''' The statements contained in the SyncLock...End SyncLock statement. This might ''' be an empty list. ''' </param> ''' <param name="endSyncLockStatement"> ''' The End SyncLock statement that ends the block. ''' </param> Public Shared Function SyncLockBlock(syncLockStatement As SyncLockStatementSyntax, statements As SyntaxList(of StatementSyntax), endSyncLockStatement As EndBlockStatementSyntax) As SyncLockBlockSyntax if syncLockStatement Is Nothing Then Throw New ArgumentNullException(NameOf(syncLockStatement)) End If Select Case syncLockStatement.Kind() Case SyntaxKind.SyncLockStatement Case Else Throw new ArgumentException("syncLockStatement") End Select if endSyncLockStatement Is Nothing Then Throw New ArgumentNullException(NameOf(endSyncLockStatement)) End If Select Case endSyncLockStatement.Kind() Case SyntaxKind.EndSyncLockStatement Case Else Throw new ArgumentException("endSyncLockStatement") End Select Return New SyncLockBlockSyntax(SyntaxKind.SyncLockBlock, Nothing, Nothing, syncLockStatement, statements.Node, endSyncLockStatement) End Function ''' <summary> ''' Represents a entire SyncLock...End SyncLock block, including the SyncLock ''' statement, the enclosed statements, and the End SyncLock statement. ''' </summary> ''' <param name="syncLockStatement"> ''' The SyncLock statement that begins the block. ''' </param> ''' <param name="statements"> ''' The statements contained in the SyncLock...End SyncLock statement. This might ''' be an empty list. ''' </param> Public Shared Function SyncLockBlock(syncLockStatement As SyncLockStatementSyntax, statements As SyntaxList(of StatementSyntax)) As SyncLockBlockSyntax Return SyntaxFactory.SyncLockBlock(syncLockStatement, statements, SyntaxFactory.EndSyncLockStatement()) End Function ''' <summary> ''' Represents a entire SyncLock...End SyncLock block, including the SyncLock ''' statement, the enclosed statements, and the End SyncLock statement. ''' </summary> ''' <param name="syncLockStatement"> ''' The SyncLock statement that begins the block. ''' </param> Public Shared Function SyncLockBlock(syncLockStatement As SyncLockStatementSyntax) As SyncLockBlockSyntax Return SyntaxFactory.SyncLockBlock(syncLockStatement, Nothing, SyntaxFactory.EndSyncLockStatement()) End Function ''' <summary> ''' Represents a With...End With block, include the With statement, the body of the ''' block and the End With statement. ''' </summary> ''' <param name="withStatement"> ''' The WithStatement that begins the With...End With block. ''' </param> ''' <param name="statements"> ''' The statements contained in the With...End With block. This might be an empty ''' list. ''' </param> ''' <param name="endWithStatement"> ''' The End With statement that ends the block. ''' </param> Public Shared Function WithBlock(withStatement As WithStatementSyntax, statements As SyntaxList(of StatementSyntax), endWithStatement As EndBlockStatementSyntax) As WithBlockSyntax if withStatement Is Nothing Then Throw New ArgumentNullException(NameOf(withStatement)) End If Select Case withStatement.Kind() Case SyntaxKind.WithStatement Case Else Throw new ArgumentException("withStatement") End Select if endWithStatement Is Nothing Then Throw New ArgumentNullException(NameOf(endWithStatement)) End If Select Case endWithStatement.Kind() Case SyntaxKind.EndWithStatement Case Else Throw new ArgumentException("endWithStatement") End Select Return New WithBlockSyntax(SyntaxKind.WithBlock, Nothing, Nothing, withStatement, statements.Node, endWithStatement) End Function ''' <summary> ''' Represents a With...End With block, include the With statement, the body of the ''' block and the End With statement. ''' </summary> ''' <param name="withStatement"> ''' The WithStatement that begins the With...End With block. ''' </param> ''' <param name="statements"> ''' The statements contained in the With...End With block. This might be an empty ''' list. ''' </param> Public Shared Function WithBlock(withStatement As WithStatementSyntax, statements As SyntaxList(of StatementSyntax)) As WithBlockSyntax Return SyntaxFactory.WithBlock(withStatement, statements, SyntaxFactory.EndWithStatement()) End Function ''' <summary> ''' Represents a With...End With block, include the With statement, the body of the ''' block and the End With statement. ''' </summary> ''' <param name="withStatement"> ''' The WithStatement that begins the With...End With block. ''' </param> Public Shared Function WithBlock(withStatement As WithStatementSyntax) As WithBlockSyntax Return SyntaxFactory.WithBlock(withStatement, Nothing, SyntaxFactory.EndWithStatement()) End Function ''' <summary> ''' Represents the declaration of one or more local variables or constants. ''' </summary> ''' <param name="modifiers"> ''' The modifier token (Static, Dim or Const) that introduces this local variable ''' declaration. ''' </param> ''' <param name="declarators"> ''' The list of variable declarator. Each declarator specifies one or more variable ''' names along with a type and/or initializer. ''' </param> Public Shared Function LocalDeclarationStatement(modifiers As SyntaxTokenList, declarators As SeparatedSyntaxList(Of VariableDeclaratorSyntax)) As LocalDeclarationStatementSyntax Return New LocalDeclarationStatementSyntax(SyntaxKind.LocalDeclarationStatement, Nothing, Nothing, modifiers.Node, declarators.Node) End Function ''' <summary> ''' Represents a label statement. ''' </summary> ''' <param name="labelToken"> ''' The name of the label. If the label is a line number, returns an IntegerLiteral ''' that is the line number, otherwise, returns an Identifier. ''' </param> ''' <param name="colonToken"> ''' The ":" token of the label statement. ''' </param> Public Shared Function LabelStatement(labelToken As SyntaxToken, colonToken As SyntaxToken) As LabelStatementSyntax Select Case labelToken.Kind() Case SyntaxKind.IdentifierToken : Case SyntaxKind.IntegerLiteralToken Case Else Throw new ArgumentException("labelToken") End Select Select Case colonToken.Kind() Case SyntaxKind.ColonToken Case Else Throw new ArgumentException("colonToken") End Select Return New LabelStatementSyntax(SyntaxKind.LabelStatement, Nothing, Nothing, DirectCast(labelToken.Node, InternalSyntax.SyntaxToken), DirectCast(colonToken.Node, InternalSyntax.PunctuationSyntax)) End Function ''' <summary> ''' Represents a label statement. ''' </summary> ''' <param name="labelToken"> ''' The name of the label. If the label is a line number, returns an IntegerLiteral ''' that is the line number, otherwise, returns an Identifier. ''' </param> Public Shared Function LabelStatement(labelToken As SyntaxToken) As LabelStatementSyntax Return SyntaxFactory.LabelStatement(labelToken, SyntaxFactory.Token(SyntaxKind.ColonToken)) End Function ''' <summary> ''' Represents a label statement. ''' </summary> ''' <param name="labelToken"> ''' The name of the label. If the label is a line number, returns an IntegerLiteral ''' that is the line number, otherwise, returns an Identifier. ''' </param> Public Shared Function LabelStatement(labelToken As String) As LabelStatementSyntax Return SyntaxFactory.LabelStatement(SyntaxFactory.Identifier(labelToken), SyntaxFactory.Token(SyntaxKind.ColonToken)) End Function ''' <summary> ''' Represents a "GoTo" statement. ''' </summary> ''' <param name="goToKeyword"> ''' The "GoTo" keyword. ''' </param> ''' <param name="label"> ''' The name of the label. If the label is a line number, wraps an IntegerLiteral ''' that is the line number, otherwise, wraps an Identifier. ''' </param> Public Shared Function GoToStatement(goToKeyword As SyntaxToken, label As LabelSyntax) As GoToStatementSyntax Select Case goToKeyword.Kind() Case SyntaxKind.GoToKeyword Case Else Throw new ArgumentException("goToKeyword") End Select if label Is Nothing Then Throw New ArgumentNullException(NameOf(label)) End If Select Case label.Kind() Case SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel Case Else Throw new ArgumentException("label") End Select Return New GoToStatementSyntax(SyntaxKind.GoToStatement, Nothing, Nothing, DirectCast(goToKeyword.Node, InternalSyntax.KeywordSyntax), label) End Function ''' <summary> ''' Represents a "GoTo" statement. ''' </summary> ''' <param name="label"> ''' The name of the label. If the label is a line number, wraps an IntegerLiteral ''' that is the line number, otherwise, wraps an Identifier. ''' </param> Public Shared Function GoToStatement(label As LabelSyntax) As GoToStatementSyntax Return SyntaxFactory.GoToStatement(SyntaxFactory.Token(SyntaxKind.GoToKeyword), label) End Function ''' <summary> ''' A label for a GoTo, Resume, or On Error statement. An identifier, line number, ''' or next keyword. ''' </summary> ''' <param name="labelToken"> ''' The label name (identifier), line number (integer literal), or next keyword ''' token. ''' </param> Public Shared Function IdentifierLabel(labelToken As SyntaxToken) As LabelSyntax Select Case labelToken.Kind() Case SyntaxKind.IdentifierToken : Case SyntaxKind.IntegerLiteralToken : Case SyntaxKind.NextKeyword Case Else Throw new ArgumentException("labelToken") End Select Return New LabelSyntax(SyntaxKind.IdentifierLabel, Nothing, Nothing, DirectCast(labelToken.Node, InternalSyntax.SyntaxToken)) End Function ''' <summary> ''' A label for a GoTo, Resume, or On Error statement. An identifier, line number, ''' or next keyword. ''' </summary> ''' <param name="labelToken"> ''' The label name (identifier), line number (integer literal), or next keyword ''' token. ''' </param> Public Shared Function IdentifierLabel(labelToken As String) As LabelSyntax Return SyntaxFactory.IdentifierLabel(SyntaxFactory.Identifier(labelToken)) End Function ''' <summary> ''' A label for a GoTo, Resume, or On Error statement. An identifier, line number, ''' or next keyword. ''' </summary> ''' <param name="labelToken"> ''' The label name (identifier), line number (integer literal), or next keyword ''' token. ''' </param> Public Shared Function NumericLabel(labelToken As SyntaxToken) As LabelSyntax Select Case labelToken.Kind() Case SyntaxKind.IntegerLiteralToken Case Else Throw new ArgumentException("labelToken") End Select Return New LabelSyntax(SyntaxKind.NumericLabel, Nothing, Nothing, DirectCast(labelToken.Node, InternalSyntax.SyntaxToken)) End Function ''' <summary> ''' A label for a GoTo, Resume, or On Error statement. An identifier, line number, ''' or next keyword. ''' </summary> Public Shared Function NumericLabel() As LabelSyntax Return SyntaxFactory.NumericLabel(SyntaxFactory.Token(SyntaxKind.IntegerLiteralToken)) End Function ''' <summary> ''' A label for a GoTo, Resume, or On Error statement. An identifier, line number, ''' or next keyword. ''' </summary> ''' <param name="labelToken"> ''' The label name (identifier), line number (integer literal), or next keyword ''' token. ''' </param> Public Shared Function NextLabel(labelToken As SyntaxToken) As LabelSyntax Select Case labelToken.Kind() Case SyntaxKind.NextKeyword Case Else Throw new ArgumentException("labelToken") End Select Return New LabelSyntax(SyntaxKind.NextLabel, Nothing, Nothing, DirectCast(labelToken.Node, InternalSyntax.SyntaxToken)) End Function ''' <summary> ''' A label for a GoTo, Resume, or On Error statement. An identifier, line number, ''' or next keyword. ''' </summary> Public Shared Function NextLabel() As LabelSyntax Return SyntaxFactory.NextLabel(SyntaxFactory.Token(SyntaxKind.NextKeyword)) End Function ''' <summary> ''' A label for a GoTo, Resume, or On Error statement. An identifier, line number, ''' or next keyword. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of LabelSyntax. One ''' of IdentifierLabel, NumericLabel, NextLabel. ''' </param> ''' <param name="labelToken"> ''' The label name (identifier), line number (integer literal), or next keyword ''' token. ''' </param> Public Shared Function Label(ByVal kind As SyntaxKind, labelToken As SyntaxToken) As LabelSyntax If Not SyntaxFacts.IsLabel(kind) Then Throw New ArgumentException("kind") End If If (Not labelToken.IsKind(GetLabelLabelTokenKind(kind))) Then Throw new ArgumentException("labelToken") End If Return New LabelSyntax(kind, Nothing, Nothing, DirectCast(labelToken.Node, InternalSyntax.SyntaxToken)) End Function Private Shared Function GetLabelLabelTokenKind(kind As SyntaxKind) As SyntaxKind Select Case kind Case SyntaxKind.IdentifierLabel Return SyntaxKind.IdentifierToken Case SyntaxKind.NumericLabel Return SyntaxKind.IntegerLiteralToken Case SyntaxKind.NextLabel Return SyntaxKind.NextKeyword Case Else Throw New ArgumentException("LabelToken") End Select End Function ''' <summary> ''' A label for a GoTo, Resume, or On Error statement. An identifier, line number, ''' or next keyword. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of LabelSyntax. One ''' of IdentifierLabel, NumericLabel, NextLabel. ''' </param> ''' <param name="labelToken"> ''' The label name (identifier), line number (integer literal), or next keyword ''' token. ''' </param> Public Shared Function Label(ByVal kind As SyntaxKind, labelToken As String) As LabelSyntax Return SyntaxFactory.Label(kind, SyntaxFactory.Identifier(labelToken)) End Function ''' <summary> ''' Represents a "Stop" or "End" statement. The Kind can be used to determine which ''' kind of statement this is. ''' </summary> ''' <param name="stopOrEndKeyword"> ''' The "Stop" or "End" keyword. ''' </param> Public Shared Function StopStatement(stopOrEndKeyword As SyntaxToken) As StopOrEndStatementSyntax Select Case stopOrEndKeyword.Kind() Case SyntaxKind.StopKeyword : Case SyntaxKind.EndKeyword Case Else Throw new ArgumentException("stopOrEndKeyword") End Select Return New StopOrEndStatementSyntax(SyntaxKind.StopStatement, Nothing, Nothing, DirectCast(stopOrEndKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' Represents a "Stop" or "End" statement. The Kind can be used to determine which ''' kind of statement this is. ''' </summary> ''' <param name="stopOrEndKeyword"> ''' The "Stop" or "End" keyword. ''' </param> Public Shared Function EndStatement(stopOrEndKeyword As SyntaxToken) As StopOrEndStatementSyntax Select Case stopOrEndKeyword.Kind() Case SyntaxKind.StopKeyword : Case SyntaxKind.EndKeyword Case Else Throw new ArgumentException("stopOrEndKeyword") End Select Return New StopOrEndStatementSyntax(SyntaxKind.EndStatement, Nothing, Nothing, DirectCast(stopOrEndKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' Represents a "Stop" or "End" statement. The Kind can be used to determine which ''' kind of statement this is. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' StopOrEndStatementSyntax. One of StopStatement, EndStatement. ''' </param> ''' <param name="stopOrEndKeyword"> ''' The "Stop" or "End" keyword. ''' </param> Public Shared Function StopOrEndStatement(ByVal kind As SyntaxKind, stopOrEndKeyword As SyntaxToken) As StopOrEndStatementSyntax If Not SyntaxFacts.IsStopOrEndStatement(kind) Then Throw New ArgumentException("kind") End If Select Case stopOrEndKeyword.Kind() Case SyntaxKind.StopKeyword : Case SyntaxKind.EndKeyword Case Else Throw new ArgumentException("stopOrEndKeyword") End Select Return New StopOrEndStatementSyntax(kind, Nothing, Nothing, DirectCast(stopOrEndKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' An exit statement. The kind of block being exited can be found by examining the ''' Kind. ''' </summary> ''' <param name="exitKeyword"> ''' The "Exit" keyword. ''' </param> ''' <param name="blockKeyword"> ''' The keyword describing the block to exit. ''' </param> Public Shared Function ExitDoStatement(exitKeyword As SyntaxToken, blockKeyword As SyntaxToken) As ExitStatementSyntax Select Case exitKeyword.Kind() Case SyntaxKind.ExitKeyword Case Else Throw new ArgumentException("exitKeyword") End Select Select Case blockKeyword.Kind() Case SyntaxKind.DoKeyword : Case SyntaxKind.ForKeyword : Case SyntaxKind.SubKeyword : Case SyntaxKind.FunctionKeyword : Case SyntaxKind.OperatorKeyword : Case SyntaxKind.PropertyKeyword : Case SyntaxKind.TryKeyword : Case SyntaxKind.SelectKeyword : Case SyntaxKind.WhileKeyword Case Else Throw new ArgumentException("blockKeyword") End Select Return New ExitStatementSyntax(SyntaxKind.ExitDoStatement, Nothing, Nothing, DirectCast(exitKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(blockKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' An exit statement. The kind of block being exited can be found by examining the ''' Kind. ''' </summary> Public Shared Function ExitDoStatement() As ExitStatementSyntax Return SyntaxFactory.ExitDoStatement(SyntaxFactory.Token(SyntaxKind.ExitKeyword), SyntaxFactory.Token(SyntaxKind.DoKeyword)) End Function ''' <summary> ''' An exit statement. The kind of block being exited can be found by examining the ''' Kind. ''' </summary> ''' <param name="exitKeyword"> ''' The "Exit" keyword. ''' </param> ''' <param name="blockKeyword"> ''' The keyword describing the block to exit. ''' </param> Public Shared Function ExitForStatement(exitKeyword As SyntaxToken, blockKeyword As SyntaxToken) As ExitStatementSyntax Select Case exitKeyword.Kind() Case SyntaxKind.ExitKeyword Case Else Throw new ArgumentException("exitKeyword") End Select Select Case blockKeyword.Kind() Case SyntaxKind.ForKeyword Case Else Throw new ArgumentException("blockKeyword") End Select Return New ExitStatementSyntax(SyntaxKind.ExitForStatement, Nothing, Nothing, DirectCast(exitKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(blockKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' An exit statement. The kind of block being exited can be found by examining the ''' Kind. ''' </summary> Public Shared Function ExitForStatement() As ExitStatementSyntax Return SyntaxFactory.ExitForStatement(SyntaxFactory.Token(SyntaxKind.ExitKeyword), SyntaxFactory.Token(SyntaxKind.ForKeyword)) End Function ''' <summary> ''' An exit statement. The kind of block being exited can be found by examining the ''' Kind. ''' </summary> ''' <param name="exitKeyword"> ''' The "Exit" keyword. ''' </param> ''' <param name="blockKeyword"> ''' The keyword describing the block to exit. ''' </param> Public Shared Function ExitSubStatement(exitKeyword As SyntaxToken, blockKeyword As SyntaxToken) As ExitStatementSyntax Select Case exitKeyword.Kind() Case SyntaxKind.ExitKeyword Case Else Throw new ArgumentException("exitKeyword") End Select Select Case blockKeyword.Kind() Case SyntaxKind.SubKeyword Case Else Throw new ArgumentException("blockKeyword") End Select Return New ExitStatementSyntax(SyntaxKind.ExitSubStatement, Nothing, Nothing, DirectCast(exitKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(blockKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' An exit statement. The kind of block being exited can be found by examining the ''' Kind. ''' </summary> Public Shared Function ExitSubStatement() As ExitStatementSyntax Return SyntaxFactory.ExitSubStatement(SyntaxFactory.Token(SyntaxKind.ExitKeyword), SyntaxFactory.Token(SyntaxKind.SubKeyword)) End Function ''' <summary> ''' An exit statement. The kind of block being exited can be found by examining the ''' Kind. ''' </summary> ''' <param name="exitKeyword"> ''' The "Exit" keyword. ''' </param> ''' <param name="blockKeyword"> ''' The keyword describing the block to exit. ''' </param> Public Shared Function ExitFunctionStatement(exitKeyword As SyntaxToken, blockKeyword As SyntaxToken) As ExitStatementSyntax Select Case exitKeyword.Kind() Case SyntaxKind.ExitKeyword Case Else Throw new ArgumentException("exitKeyword") End Select Select Case blockKeyword.Kind() Case SyntaxKind.FunctionKeyword Case Else Throw new ArgumentException("blockKeyword") End Select Return New ExitStatementSyntax(SyntaxKind.ExitFunctionStatement, Nothing, Nothing, DirectCast(exitKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(blockKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' An exit statement. The kind of block being exited can be found by examining the ''' Kind. ''' </summary> Public Shared Function ExitFunctionStatement() As ExitStatementSyntax Return SyntaxFactory.ExitFunctionStatement(SyntaxFactory.Token(SyntaxKind.ExitKeyword), SyntaxFactory.Token(SyntaxKind.FunctionKeyword)) End Function ''' <summary> ''' An exit statement. The kind of block being exited can be found by examining the ''' Kind. ''' </summary> ''' <param name="exitKeyword"> ''' The "Exit" keyword. ''' </param> ''' <param name="blockKeyword"> ''' The keyword describing the block to exit. ''' </param> Public Shared Function ExitOperatorStatement(exitKeyword As SyntaxToken, blockKeyword As SyntaxToken) As ExitStatementSyntax Select Case exitKeyword.Kind() Case SyntaxKind.ExitKeyword Case Else Throw new ArgumentException("exitKeyword") End Select Select Case blockKeyword.Kind() Case SyntaxKind.OperatorKeyword Case Else Throw new ArgumentException("blockKeyword") End Select Return New ExitStatementSyntax(SyntaxKind.ExitOperatorStatement, Nothing, Nothing, DirectCast(exitKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(blockKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' An exit statement. The kind of block being exited can be found by examining the ''' Kind. ''' </summary> Public Shared Function ExitOperatorStatement() As ExitStatementSyntax Return SyntaxFactory.ExitOperatorStatement(SyntaxFactory.Token(SyntaxKind.ExitKeyword), SyntaxFactory.Token(SyntaxKind.OperatorKeyword)) End Function ''' <summary> ''' An exit statement. The kind of block being exited can be found by examining the ''' Kind. ''' </summary> ''' <param name="exitKeyword"> ''' The "Exit" keyword. ''' </param> ''' <param name="blockKeyword"> ''' The keyword describing the block to exit. ''' </param> Public Shared Function ExitPropertyStatement(exitKeyword As SyntaxToken, blockKeyword As SyntaxToken) As ExitStatementSyntax Select Case exitKeyword.Kind() Case SyntaxKind.ExitKeyword Case Else Throw new ArgumentException("exitKeyword") End Select Select Case blockKeyword.Kind() Case SyntaxKind.PropertyKeyword Case Else Throw new ArgumentException("blockKeyword") End Select Return New ExitStatementSyntax(SyntaxKind.ExitPropertyStatement, Nothing, Nothing, DirectCast(exitKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(blockKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' An exit statement. The kind of block being exited can be found by examining the ''' Kind. ''' </summary> Public Shared Function ExitPropertyStatement() As ExitStatementSyntax Return SyntaxFactory.ExitPropertyStatement(SyntaxFactory.Token(SyntaxKind.ExitKeyword), SyntaxFactory.Token(SyntaxKind.PropertyKeyword)) End Function ''' <summary> ''' An exit statement. The kind of block being exited can be found by examining the ''' Kind. ''' </summary> ''' <param name="exitKeyword"> ''' The "Exit" keyword. ''' </param> ''' <param name="blockKeyword"> ''' The keyword describing the block to exit. ''' </param> Public Shared Function ExitTryStatement(exitKeyword As SyntaxToken, blockKeyword As SyntaxToken) As ExitStatementSyntax Select Case exitKeyword.Kind() Case SyntaxKind.ExitKeyword Case Else Throw new ArgumentException("exitKeyword") End Select Select Case blockKeyword.Kind() Case SyntaxKind.TryKeyword Case Else Throw new ArgumentException("blockKeyword") End Select Return New ExitStatementSyntax(SyntaxKind.ExitTryStatement, Nothing, Nothing, DirectCast(exitKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(blockKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' An exit statement. The kind of block being exited can be found by examining the ''' Kind. ''' </summary> Public Shared Function ExitTryStatement() As ExitStatementSyntax Return SyntaxFactory.ExitTryStatement(SyntaxFactory.Token(SyntaxKind.ExitKeyword), SyntaxFactory.Token(SyntaxKind.TryKeyword)) End Function ''' <summary> ''' An exit statement. The kind of block being exited can be found by examining the ''' Kind. ''' </summary> ''' <param name="exitKeyword"> ''' The "Exit" keyword. ''' </param> ''' <param name="blockKeyword"> ''' The keyword describing the block to exit. ''' </param> Public Shared Function ExitSelectStatement(exitKeyword As SyntaxToken, blockKeyword As SyntaxToken) As ExitStatementSyntax Select Case exitKeyword.Kind() Case SyntaxKind.ExitKeyword Case Else Throw new ArgumentException("exitKeyword") End Select Select Case blockKeyword.Kind() Case SyntaxKind.SelectKeyword Case Else Throw new ArgumentException("blockKeyword") End Select Return New ExitStatementSyntax(SyntaxKind.ExitSelectStatement, Nothing, Nothing, DirectCast(exitKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(blockKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' An exit statement. The kind of block being exited can be found by examining the ''' Kind. ''' </summary> Public Shared Function ExitSelectStatement() As ExitStatementSyntax Return SyntaxFactory.ExitSelectStatement(SyntaxFactory.Token(SyntaxKind.ExitKeyword), SyntaxFactory.Token(SyntaxKind.SelectKeyword)) End Function ''' <summary> ''' An exit statement. The kind of block being exited can be found by examining the ''' Kind. ''' </summary> ''' <param name="exitKeyword"> ''' The "Exit" keyword. ''' </param> ''' <param name="blockKeyword"> ''' The keyword describing the block to exit. ''' </param> Public Shared Function ExitWhileStatement(exitKeyword As SyntaxToken, blockKeyword As SyntaxToken) As ExitStatementSyntax Select Case exitKeyword.Kind() Case SyntaxKind.ExitKeyword Case Else Throw new ArgumentException("exitKeyword") End Select Select Case blockKeyword.Kind() Case SyntaxKind.WhileKeyword Case Else Throw new ArgumentException("blockKeyword") End Select Return New ExitStatementSyntax(SyntaxKind.ExitWhileStatement, Nothing, Nothing, DirectCast(exitKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(blockKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' An exit statement. The kind of block being exited can be found by examining the ''' Kind. ''' </summary> Public Shared Function ExitWhileStatement() As ExitStatementSyntax Return SyntaxFactory.ExitWhileStatement(SyntaxFactory.Token(SyntaxKind.ExitKeyword), SyntaxFactory.Token(SyntaxKind.WhileKeyword)) End Function ''' <summary> ''' An exit statement. The kind of block being exited can be found by examining the ''' Kind. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' ExitStatementSyntax. One of ExitDoStatement, ExitForStatement, ''' ExitSubStatement, ExitFunctionStatement, ExitOperatorStatement, ''' ExitPropertyStatement, ExitTryStatement, ExitSelectStatement, ''' ExitWhileStatement. ''' </param> ''' <param name="exitKeyword"> ''' The "Exit" keyword. ''' </param> ''' <param name="blockKeyword"> ''' The keyword describing the block to exit. ''' </param> Public Shared Function ExitStatement(ByVal kind As SyntaxKind, exitKeyword As SyntaxToken, blockKeyword As SyntaxToken) As ExitStatementSyntax If Not SyntaxFacts.IsExitStatement(kind) Then Throw New ArgumentException("kind") End If Select Case exitKeyword.Kind() Case SyntaxKind.ExitKeyword Case Else Throw new ArgumentException("exitKeyword") End Select If (Not blockKeyword.IsKind(GetExitStatementBlockKeywordKind(kind))) Then Throw new ArgumentException("blockKeyword") End If Return New ExitStatementSyntax(kind, Nothing, Nothing, DirectCast(exitKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(blockKeyword.Node, InternalSyntax.KeywordSyntax)) End Function Private Shared Function GetExitStatementBlockKeywordKind(kind As SyntaxKind) As SyntaxKind Select Case kind Case SyntaxKind.ExitDoStatement Return SyntaxKind.DoKeyword Case SyntaxKind.ExitForStatement Return SyntaxKind.ForKeyword Case SyntaxKind.ExitSubStatement Return SyntaxKind.SubKeyword Case SyntaxKind.ExitFunctionStatement Return SyntaxKind.FunctionKeyword Case SyntaxKind.ExitOperatorStatement Return SyntaxKind.OperatorKeyword Case SyntaxKind.ExitPropertyStatement Return SyntaxKind.PropertyKeyword Case SyntaxKind.ExitTryStatement Return SyntaxKind.TryKeyword Case SyntaxKind.ExitSelectStatement Return SyntaxKind.SelectKeyword Case SyntaxKind.ExitWhileStatement Return SyntaxKind.WhileKeyword Case Else Throw New ArgumentException("BlockKeyword") End Select End Function ''' <summary> ''' An exit statement. The kind of block being exited can be found by examining the ''' Kind. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' ExitStatementSyntax. One of ExitDoStatement, ExitForStatement, ''' ExitSubStatement, ExitFunctionStatement, ExitOperatorStatement, ''' ExitPropertyStatement, ExitTryStatement, ExitSelectStatement, ''' ExitWhileStatement. ''' </param> ''' <param name="blockKeyword"> ''' The keyword describing the block to exit. ''' </param> Public Shared Function ExitStatement(ByVal kind As SyntaxKind, blockKeyword As SyntaxToken) As ExitStatementSyntax Return SyntaxFactory.ExitStatement(kind, SyntaxFactory.Token(SyntaxKind.ExitKeyword), blockKeyword) End Function ''' <summary> ''' Represents a "Continue (block)" statement. THe kind of block referenced can be ''' determined by examining the Kind. ''' </summary> ''' <param name="continueKeyword"> ''' The "Continue" keyword. ''' </param> ''' <param name="blockKeyword"> ''' The "Do", "For" or "While" keyword that identifies the kind of loop being ''' continued. ''' </param> Public Shared Function ContinueWhileStatement(continueKeyword As SyntaxToken, blockKeyword As SyntaxToken) As ContinueStatementSyntax Select Case continueKeyword.Kind() Case SyntaxKind.ContinueKeyword Case Else Throw new ArgumentException("continueKeyword") End Select Select Case blockKeyword.Kind() Case SyntaxKind.DoKeyword : Case SyntaxKind.ForKeyword : Case SyntaxKind.WhileKeyword Case Else Throw new ArgumentException("blockKeyword") End Select Return New ContinueStatementSyntax(SyntaxKind.ContinueWhileStatement, Nothing, Nothing, DirectCast(continueKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(blockKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' Represents a "Continue (block)" statement. THe kind of block referenced can be ''' determined by examining the Kind. ''' </summary> Public Shared Function ContinueWhileStatement() As ContinueStatementSyntax Return SyntaxFactory.ContinueWhileStatement(SyntaxFactory.Token(SyntaxKind.ContinueKeyword), SyntaxFactory.Token(SyntaxKind.WhileKeyword)) End Function ''' <summary> ''' Represents a "Continue (block)" statement. THe kind of block referenced can be ''' determined by examining the Kind. ''' </summary> ''' <param name="continueKeyword"> ''' The "Continue" keyword. ''' </param> ''' <param name="blockKeyword"> ''' The "Do", "For" or "While" keyword that identifies the kind of loop being ''' continued. ''' </param> Public Shared Function ContinueDoStatement(continueKeyword As SyntaxToken, blockKeyword As SyntaxToken) As ContinueStatementSyntax Select Case continueKeyword.Kind() Case SyntaxKind.ContinueKeyword Case Else Throw new ArgumentException("continueKeyword") End Select Select Case blockKeyword.Kind() Case SyntaxKind.DoKeyword Case Else Throw new ArgumentException("blockKeyword") End Select Return New ContinueStatementSyntax(SyntaxKind.ContinueDoStatement, Nothing, Nothing, DirectCast(continueKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(blockKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' Represents a "Continue (block)" statement. THe kind of block referenced can be ''' determined by examining the Kind. ''' </summary> Public Shared Function ContinueDoStatement() As ContinueStatementSyntax Return SyntaxFactory.ContinueDoStatement(SyntaxFactory.Token(SyntaxKind.ContinueKeyword), SyntaxFactory.Token(SyntaxKind.DoKeyword)) End Function ''' <summary> ''' Represents a "Continue (block)" statement. THe kind of block referenced can be ''' determined by examining the Kind. ''' </summary> ''' <param name="continueKeyword"> ''' The "Continue" keyword. ''' </param> ''' <param name="blockKeyword"> ''' The "Do", "For" or "While" keyword that identifies the kind of loop being ''' continued. ''' </param> Public Shared Function ContinueForStatement(continueKeyword As SyntaxToken, blockKeyword As SyntaxToken) As ContinueStatementSyntax Select Case continueKeyword.Kind() Case SyntaxKind.ContinueKeyword Case Else Throw new ArgumentException("continueKeyword") End Select Select Case blockKeyword.Kind() Case SyntaxKind.ForKeyword Case Else Throw new ArgumentException("blockKeyword") End Select Return New ContinueStatementSyntax(SyntaxKind.ContinueForStatement, Nothing, Nothing, DirectCast(continueKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(blockKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' Represents a "Continue (block)" statement. THe kind of block referenced can be ''' determined by examining the Kind. ''' </summary> Public Shared Function ContinueForStatement() As ContinueStatementSyntax Return SyntaxFactory.ContinueForStatement(SyntaxFactory.Token(SyntaxKind.ContinueKeyword), SyntaxFactory.Token(SyntaxKind.ForKeyword)) End Function ''' <summary> ''' Represents a "Continue (block)" statement. THe kind of block referenced can be ''' determined by examining the Kind. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' ContinueStatementSyntax. One of ContinueWhileStatement, ContinueDoStatement, ''' ContinueForStatement. ''' </param> ''' <param name="continueKeyword"> ''' The "Continue" keyword. ''' </param> ''' <param name="blockKeyword"> ''' The "Do", "For" or "While" keyword that identifies the kind of loop being ''' continued. ''' </param> Public Shared Function ContinueStatement(ByVal kind As SyntaxKind, continueKeyword As SyntaxToken, blockKeyword As SyntaxToken) As ContinueStatementSyntax If Not SyntaxFacts.IsContinueStatement(kind) Then Throw New ArgumentException("kind") End If Select Case continueKeyword.Kind() Case SyntaxKind.ContinueKeyword Case Else Throw new ArgumentException("continueKeyword") End Select If (Not blockKeyword.IsKind(GetContinueStatementBlockKeywordKind(kind))) Then Throw new ArgumentException("blockKeyword") End If Return New ContinueStatementSyntax(kind, Nothing, Nothing, DirectCast(continueKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(blockKeyword.Node, InternalSyntax.KeywordSyntax)) End Function Private Shared Function GetContinueStatementBlockKeywordKind(kind As SyntaxKind) As SyntaxKind Select Case kind Case SyntaxKind.ContinueWhileStatement Return SyntaxKind.WhileKeyword Case SyntaxKind.ContinueDoStatement Return SyntaxKind.DoKeyword Case SyntaxKind.ContinueForStatement Return SyntaxKind.ForKeyword Case Else Throw New ArgumentException("BlockKeyword") End Select End Function ''' <summary> ''' Represents a "Continue (block)" statement. THe kind of block referenced can be ''' determined by examining the Kind. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' ContinueStatementSyntax. One of ContinueWhileStatement, ContinueDoStatement, ''' ContinueForStatement. ''' </param> ''' <param name="blockKeyword"> ''' The "Do", "For" or "While" keyword that identifies the kind of loop being ''' continued. ''' </param> Public Shared Function ContinueStatement(ByVal kind As SyntaxKind, blockKeyword As SyntaxToken) As ContinueStatementSyntax Return SyntaxFactory.ContinueStatement(kind, SyntaxFactory.Token(SyntaxKind.ContinueKeyword), blockKeyword) End Function ''' <summary> ''' Represents a "Return" statement. ''' </summary> ''' <param name="returnKeyword"> ''' The "Return" keyword. ''' </param> ''' <param name="expression"> ''' The expression being returned, if present. ''' </param> Public Shared Function ReturnStatement(returnKeyword As SyntaxToken, expression As ExpressionSyntax) As ReturnStatementSyntax Select Case returnKeyword.Kind() Case SyntaxKind.ReturnKeyword Case Else Throw new ArgumentException("returnKeyword") End Select Return New ReturnStatementSyntax(SyntaxKind.ReturnStatement, Nothing, Nothing, DirectCast(returnKeyword.Node, InternalSyntax.KeywordSyntax), expression) End Function ''' <summary> ''' Represents a "Return" statement. ''' </summary> ''' <param name="expression"> ''' The expression being returned, if present. ''' </param> Public Shared Function ReturnStatement(expression As ExpressionSyntax) As ReturnStatementSyntax Return SyntaxFactory.ReturnStatement(SyntaxFactory.Token(SyntaxKind.ReturnKeyword), expression) End Function ''' <summary> ''' Represents a "Return" statement. ''' </summary> Public Shared Function ReturnStatement() As ReturnStatementSyntax Return SyntaxFactory.ReturnStatement(SyntaxFactory.Token(SyntaxKind.ReturnKeyword), Nothing) End Function ''' <summary> ''' Represents a single-line "If ... Then ... Else ..." statement. ''' </summary> ''' <param name="ifKeyword"> ''' The "If" keyword. ''' </param> ''' <param name="condition"> ''' The condition expression to be evaluated. ''' </param> ''' <param name="thenKeyword"> ''' The "Then" keyword. ''' </param> ''' <param name="statements"> ''' A list of statements to be executed if the condition expression evaluates as ''' true. Multiple statements must be separated by colons. ''' </param> ''' <param name="elseClause"> ''' An "Else" clause to be executed if the condition expression evaluates as false. ''' </param> Public Shared Function SingleLineIfStatement(ifKeyword As SyntaxToken, condition As ExpressionSyntax, thenKeyword As SyntaxToken, statements As SyntaxList(of StatementSyntax), elseClause As SingleLineElseClauseSyntax) As SingleLineIfStatementSyntax Select Case ifKeyword.Kind() Case SyntaxKind.IfKeyword Case Else Throw new ArgumentException("ifKeyword") End Select if condition Is Nothing Then Throw New ArgumentNullException(NameOf(condition)) End If Select Case condition.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("condition") End Select Select Case thenKeyword.Kind() Case SyntaxKind.ThenKeyword Case Else Throw new ArgumentException("thenKeyword") End Select Return New SingleLineIfStatementSyntax(SyntaxKind.SingleLineIfStatement, Nothing, Nothing, DirectCast(ifKeyword.Node, InternalSyntax.KeywordSyntax), condition, DirectCast(thenKeyword.Node, InternalSyntax.KeywordSyntax), statements.Node, elseClause) End Function ''' <summary> ''' Represents a single-line "If ... Then ... Else ..." statement. ''' </summary> ''' <param name="condition"> ''' The condition expression to be evaluated. ''' </param> ''' <param name="statements"> ''' A list of statements to be executed if the condition expression evaluates as ''' true. Multiple statements must be separated by colons. ''' </param> ''' <param name="elseClause"> ''' An "Else" clause to be executed if the condition expression evaluates as false. ''' </param> Public Shared Function SingleLineIfStatement(condition As ExpressionSyntax, statements As SyntaxList(of StatementSyntax), elseClause As SingleLineElseClauseSyntax) As SingleLineIfStatementSyntax Return SyntaxFactory.SingleLineIfStatement(SyntaxFactory.Token(SyntaxKind.IfKeyword), condition, SyntaxFactory.Token(SyntaxKind.ThenKeyword), statements, elseClause) End Function ''' <summary> ''' Represents a single-line "If ... Then ... Else ..." statement. ''' </summary> ''' <param name="condition"> ''' The condition expression to be evaluated. ''' </param> Public Shared Function SingleLineIfStatement(condition As ExpressionSyntax) As SingleLineIfStatementSyntax Return SyntaxFactory.SingleLineIfStatement(SyntaxFactory.Token(SyntaxKind.IfKeyword), condition, SyntaxFactory.Token(SyntaxKind.ThenKeyword), Nothing, Nothing) End Function ''' <summary> ''' Represents the "Else ..." clause of a single-line "If" statement. ''' </summary> ''' <param name="elseKeyword"> ''' The "Else" keyword. ''' </param> ''' <param name="statements"> ''' A list of statements to be executed. Multiple statements must be separated by ''' colons. ''' </param> Public Shared Function SingleLineElseClause(elseKeyword As SyntaxToken, statements As SyntaxList(of StatementSyntax)) As SingleLineElseClauseSyntax Select Case elseKeyword.Kind() Case SyntaxKind.ElseKeyword Case Else Throw new ArgumentException("elseKeyword") End Select Return New SingleLineElseClauseSyntax(SyntaxKind.SingleLineElseClause, Nothing, Nothing, DirectCast(elseKeyword.Node, InternalSyntax.KeywordSyntax), statements.Node) End Function ''' <summary> ''' Represents the "Else ..." clause of a single-line "If" statement. ''' </summary> ''' <param name="statements"> ''' A list of statements to be executed. Multiple statements must be separated by ''' colons. ''' </param> Public Shared Function SingleLineElseClause(statements As SyntaxList(of StatementSyntax)) As SingleLineElseClauseSyntax Return SyntaxFactory.SingleLineElseClause(SyntaxFactory.Token(SyntaxKind.ElseKeyword), statements) End Function ''' <summary> ''' Represents the "Else ..." clause of a single-line "If" statement. ''' </summary> Public Shared Function SingleLineElseClause() As SingleLineElseClauseSyntax Return SyntaxFactory.SingleLineElseClause(SyntaxFactory.Token(SyntaxKind.ElseKeyword), Nothing) End Function ''' <summary> ''' Represents a multi-line "If ... Then ... ElseIf ... Then ... Else ... End If" ''' block. ''' </summary> ''' <param name="ifStatement"> ''' The "If" statement that begins the "If" block. ''' </param> ''' <param name="statements"> ''' A list of statements to be executed if the condition expression evaluates as ''' true. ''' </param> ''' <param name="elseIfBlocks"> ''' A list of "ElseIf" blocks to be evaluated, in order, if the condition ''' expression of the "If" statement evaluates as false. ''' </param> ''' <param name="elseBlock"> ''' An "Else" block to be executed if the condition expression of the "If" ''' statement and all "ElseIf" blocks evaluate as false. ''' </param> ''' <param name="endIfStatement"> ''' Then "End If" statement. ''' </param> Public Shared Function MultiLineIfBlock(ifStatement As IfStatementSyntax, statements As SyntaxList(of StatementSyntax), elseIfBlocks As SyntaxList(of ElseIfBlockSyntax), elseBlock As ElseBlockSyntax, endIfStatement As EndBlockStatementSyntax) As MultiLineIfBlockSyntax if ifStatement Is Nothing Then Throw New ArgumentNullException(NameOf(ifStatement)) End If Select Case ifStatement.Kind() Case SyntaxKind.IfStatement Case Else Throw new ArgumentException("ifStatement") End Select if endIfStatement Is Nothing Then Throw New ArgumentNullException(NameOf(endIfStatement)) End If Select Case endIfStatement.Kind() Case SyntaxKind.EndIfStatement Case Else Throw new ArgumentException("endIfStatement") End Select Return New MultiLineIfBlockSyntax(SyntaxKind.MultiLineIfBlock, Nothing, Nothing, ifStatement, statements.Node, elseIfBlocks.Node, elseBlock, endIfStatement) End Function ''' <summary> ''' Represents a multi-line "If ... Then ... ElseIf ... Then ... Else ... End If" ''' block. ''' </summary> ''' <param name="ifStatement"> ''' The "If" statement that begins the "If" block. ''' </param> ''' <param name="statements"> ''' A list of statements to be executed if the condition expression evaluates as ''' true. ''' </param> ''' <param name="elseIfBlocks"> ''' A list of "ElseIf" blocks to be evaluated, in order, if the condition ''' expression of the "If" statement evaluates as false. ''' </param> ''' <param name="elseBlock"> ''' An "Else" block to be executed if the condition expression of the "If" ''' statement and all "ElseIf" blocks evaluate as false. ''' </param> Public Shared Function MultiLineIfBlock(ifStatement As IfStatementSyntax, statements As SyntaxList(of StatementSyntax), elseIfBlocks As SyntaxList(of ElseIfBlockSyntax), elseBlock As ElseBlockSyntax) As MultiLineIfBlockSyntax Return SyntaxFactory.MultiLineIfBlock(ifStatement, statements, elseIfBlocks, elseBlock, SyntaxFactory.EndIfStatement()) End Function ''' <summary> ''' Represents a multi-line "If ... Then ... ElseIf ... Then ... Else ... End If" ''' block. ''' </summary> ''' <param name="ifStatement"> ''' The "If" statement that begins the "If" block. ''' </param> Public Shared Function MultiLineIfBlock(ifStatement As IfStatementSyntax) As MultiLineIfBlockSyntax Return SyntaxFactory.MultiLineIfBlock(ifStatement, Nothing, Nothing, Nothing, SyntaxFactory.EndIfStatement()) End Function ''' <summary> ''' Represents the "If ... Then" statement that begins a multi-line "If" block. ''' </summary> ''' <param name="ifKeyword"> ''' The "If" keyword. ''' </param> ''' <param name="condition"> ''' The condition expression to be evaluated. ''' </param> ''' <param name="thenKeyword"> ''' The "Then" keyword. ''' </param> Public Shared Function IfStatement(ifKeyword As SyntaxToken, condition As ExpressionSyntax, thenKeyword As SyntaxToken) As IfStatementSyntax Select Case ifKeyword.Kind() Case SyntaxKind.IfKeyword Case Else Throw new ArgumentException("ifKeyword") End Select if condition Is Nothing Then Throw New ArgumentNullException(NameOf(condition)) End If Select Case condition.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("condition") End Select Return New IfStatementSyntax(SyntaxKind.IfStatement, Nothing, Nothing, DirectCast(ifKeyword.Node, InternalSyntax.KeywordSyntax), condition, DirectCast(thenKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' Represents the "If ... Then" statement that begins a multi-line "If" block. ''' </summary> ''' <param name="condition"> ''' The condition expression to be evaluated. ''' </param> Public Shared Function IfStatement(condition As ExpressionSyntax) As IfStatementSyntax Return SyntaxFactory.IfStatement(SyntaxFactory.Token(SyntaxKind.IfKeyword), condition, Nothing) End Function ''' <summary> ''' Represents an "ElseIf ... Then ..." block. ''' </summary> ''' <param name="elseIfStatement"> ''' The "ElseIf ... Then" statement the begins the "ElseIf" block. ''' </param> ''' <param name="statements"> ''' A list of statements to be executed if the condition expression of the "ElseIf" ''' statement evaluates as true. ''' </param> Public Shared Function ElseIfBlock(elseIfStatement As ElseIfStatementSyntax, statements As SyntaxList(of StatementSyntax)) As ElseIfBlockSyntax if elseIfStatement Is Nothing Then Throw New ArgumentNullException(NameOf(elseIfStatement)) End If Select Case elseIfStatement.Kind() Case SyntaxKind.ElseIfStatement Case Else Throw new ArgumentException("elseIfStatement") End Select Return New ElseIfBlockSyntax(SyntaxKind.ElseIfBlock, Nothing, Nothing, elseIfStatement, statements.Node) End Function ''' <summary> ''' Represents an "ElseIf ... Then ..." block. ''' </summary> ''' <param name="elseIfStatement"> ''' The "ElseIf ... Then" statement the begins the "ElseIf" block. ''' </param> Public Shared Function ElseIfBlock(elseIfStatement As ElseIfStatementSyntax) As ElseIfBlockSyntax Return SyntaxFactory.ElseIfBlock(elseIfStatement, Nothing) End Function ''' <summary> ''' Represents the "ElseIf ... Then" statement that begins an "ElseIf" block. ''' </summary> ''' <param name="elseIfKeyword"> ''' The "ElseIf" keyword. ''' </param> ''' <param name="condition"> ''' The condition expression to be evaluated. ''' </param> ''' <param name="thenKeyword"> ''' The "Then" keyword. ''' </param> Public Shared Function ElseIfStatement(elseIfKeyword As SyntaxToken, condition As ExpressionSyntax, thenKeyword As SyntaxToken) As ElseIfStatementSyntax Select Case elseIfKeyword.Kind() Case SyntaxKind.ElseIfKeyword Case Else Throw new ArgumentException("elseIfKeyword") End Select if condition Is Nothing Then Throw New ArgumentNullException(NameOf(condition)) End If Select Case condition.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("condition") End Select Return New ElseIfStatementSyntax(SyntaxKind.ElseIfStatement, Nothing, Nothing, DirectCast(elseIfKeyword.Node, InternalSyntax.KeywordSyntax), condition, DirectCast(thenKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' Represents the "ElseIf ... Then" statement that begins an "ElseIf" block. ''' </summary> ''' <param name="condition"> ''' The condition expression to be evaluated. ''' </param> Public Shared Function ElseIfStatement(condition As ExpressionSyntax) As ElseIfStatementSyntax Return SyntaxFactory.ElseIfStatement(SyntaxFactory.Token(SyntaxKind.ElseIfKeyword), condition, Nothing) End Function ''' <summary> ''' Represents an "Else ..." block. ''' </summary> ''' <param name="elseStatement"> ''' The "Else" statement that begins the "Else" block. ''' </param> ''' <param name="statements"> ''' A list of statements to be executed. ''' </param> Public Shared Function ElseBlock(elseStatement As ElseStatementSyntax, statements As SyntaxList(of StatementSyntax)) As ElseBlockSyntax if elseStatement Is Nothing Then Throw New ArgumentNullException(NameOf(elseStatement)) End If Select Case elseStatement.Kind() Case SyntaxKind.ElseStatement Case Else Throw new ArgumentException("elseStatement") End Select Return New ElseBlockSyntax(SyntaxKind.ElseBlock, Nothing, Nothing, elseStatement, statements.Node) End Function ''' <summary> ''' Represents an "Else ..." block. ''' </summary> ''' <param name="statements"> ''' A list of statements to be executed. ''' </param> Public Shared Function ElseBlock(statements As SyntaxList(of StatementSyntax)) As ElseBlockSyntax Return SyntaxFactory.ElseBlock(SyntaxFactory.ElseStatement(), statements) End Function ''' <summary> ''' Represents an "Else ..." block. ''' </summary> Public Shared Function ElseBlock() As ElseBlockSyntax Return SyntaxFactory.ElseBlock(SyntaxFactory.ElseStatement(), Nothing) End Function ''' <summary> ''' Represents the "Else" statement that begins an "Else" block. ''' </summary> ''' <param name="elseKeyword"> ''' The "Else" keyword. ''' </param> Public Shared Function ElseStatement(elseKeyword As SyntaxToken) As ElseStatementSyntax Select Case elseKeyword.Kind() Case SyntaxKind.ElseKeyword Case Else Throw new ArgumentException("elseKeyword") End Select Return New ElseStatementSyntax(SyntaxKind.ElseStatement, Nothing, Nothing, DirectCast(elseKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' Represents the "Else" statement that begins an "Else" block. ''' </summary> Public Shared Function ElseStatement() As ElseStatementSyntax Return SyntaxFactory.ElseStatement(SyntaxFactory.Token(SyntaxKind.ElseKeyword)) End Function ''' <summary> ''' Represents a "Try ... Catch ... Finally ... End Try" block. ''' </summary> ''' <param name="tryStatement"> ''' The "Try" statement that begins the "Try" block. ''' </param> ''' <param name="statements"> ''' A list of statements to be executed. ''' </param> ''' <param name="catchBlocks"> ''' A list of "Catch" blocks which may be executed if an exception is thrown while ''' executing the statements in the "Try" block. ''' </param> ''' <param name="finallyBlock"> ''' A "Finally" block to be executed before execution leaves the "Try" block. ''' </param> ''' <param name="endTryStatement"> ''' The "End Try" statement. ''' </param> Public Shared Function TryBlock(tryStatement As TryStatementSyntax, statements As SyntaxList(of StatementSyntax), catchBlocks As SyntaxList(of CatchBlockSyntax), finallyBlock As FinallyBlockSyntax, endTryStatement As EndBlockStatementSyntax) As TryBlockSyntax if tryStatement Is Nothing Then Throw New ArgumentNullException(NameOf(tryStatement)) End If Select Case tryStatement.Kind() Case SyntaxKind.TryStatement Case Else Throw new ArgumentException("tryStatement") End Select if endTryStatement Is Nothing Then Throw New ArgumentNullException(NameOf(endTryStatement)) End If Select Case endTryStatement.Kind() Case SyntaxKind.EndTryStatement Case Else Throw new ArgumentException("endTryStatement") End Select Return New TryBlockSyntax(SyntaxKind.TryBlock, Nothing, Nothing, tryStatement, statements.Node, catchBlocks.Node, finallyBlock, endTryStatement) End Function ''' <summary> ''' Represents a "Try ... Catch ... Finally ... End Try" block. ''' </summary> ''' <param name="statements"> ''' A list of statements to be executed. ''' </param> ''' <param name="catchBlocks"> ''' A list of "Catch" blocks which may be executed if an exception is thrown while ''' executing the statements in the "Try" block. ''' </param> ''' <param name="finallyBlock"> ''' A "Finally" block to be executed before execution leaves the "Try" block. ''' </param> Public Shared Function TryBlock(statements As SyntaxList(of StatementSyntax), catchBlocks As SyntaxList(of CatchBlockSyntax), finallyBlock As FinallyBlockSyntax) As TryBlockSyntax Return SyntaxFactory.TryBlock(SyntaxFactory.TryStatement(), statements, catchBlocks, finallyBlock, SyntaxFactory.EndTryStatement()) End Function ''' <summary> ''' Represents a "Try ... Catch ... Finally ... End Try" block. ''' </summary> Public Shared Function TryBlock() As TryBlockSyntax Return SyntaxFactory.TryBlock(SyntaxFactory.TryStatement(), Nothing, Nothing, Nothing, SyntaxFactory.EndTryStatement()) End Function ''' <summary> ''' Represents the "Try" statement that begins a "Try" block. ''' </summary> ''' <param name="tryKeyword"> ''' The "Try" keyword. ''' </param> Public Shared Function TryStatement(tryKeyword As SyntaxToken) As TryStatementSyntax Select Case tryKeyword.Kind() Case SyntaxKind.TryKeyword Case Else Throw new ArgumentException("tryKeyword") End Select Return New TryStatementSyntax(SyntaxKind.TryStatement, Nothing, Nothing, DirectCast(tryKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' Represents the "Try" statement that begins a "Try" block. ''' </summary> Public Shared Function TryStatement() As TryStatementSyntax Return SyntaxFactory.TryStatement(SyntaxFactory.Token(SyntaxKind.TryKeyword)) End Function ''' <summary> ''' Represents a "Catch ..." block. ''' </summary> ''' <param name="catchStatement"> ''' The "Catch" statement that begins the "Catch" block. ''' </param> ''' <param name="statements"> ''' A list of statements to be executed if an exception is caught by the "Catch" ''' block. ''' </param> Public Shared Function CatchBlock(catchStatement As CatchStatementSyntax, statements As SyntaxList(of StatementSyntax)) As CatchBlockSyntax if catchStatement Is Nothing Then Throw New ArgumentNullException(NameOf(catchStatement)) End If Select Case catchStatement.Kind() Case SyntaxKind.CatchStatement Case Else Throw new ArgumentException("catchStatement") End Select Return New CatchBlockSyntax(SyntaxKind.CatchBlock, Nothing, Nothing, catchStatement, statements.Node) End Function ''' <summary> ''' Represents a "Catch ..." block. ''' </summary> ''' <param name="catchStatement"> ''' The "Catch" statement that begins the "Catch" block. ''' </param> Public Shared Function CatchBlock(catchStatement As CatchStatementSyntax) As CatchBlockSyntax Return SyntaxFactory.CatchBlock(catchStatement, Nothing) End Function ''' <summary> ''' Represents the "Catch ... When ..." statement that begins a "Catch" block. ''' </summary> ''' <param name="catchKeyword"> ''' The "Catch" keyword. ''' </param> ''' <param name="identifierName"> ''' An identifier declaring a new variable or naming an existing variable to store ''' the exception caught by the "Catch" statement. ''' </param> ''' <param name="asClause"> ''' A simple "As" clause specifying the type of exception to catch. ''' </param> ''' <param name="whenClause"> ''' A "When" clause to filter exceptions before catching. ''' </param> Public Shared Function CatchStatement(catchKeyword As SyntaxToken, identifierName As IdentifierNameSyntax, asClause As SimpleAsClauseSyntax, whenClause As CatchFilterClauseSyntax) As CatchStatementSyntax Select Case catchKeyword.Kind() Case SyntaxKind.CatchKeyword Case Else Throw new ArgumentException("catchKeyword") End Select Return New CatchStatementSyntax(SyntaxKind.CatchStatement, Nothing, Nothing, DirectCast(catchKeyword.Node, InternalSyntax.KeywordSyntax), identifierName, asClause, whenClause) End Function ''' <summary> ''' Represents the "Catch ... When ..." statement that begins a "Catch" block. ''' </summary> ''' <param name="identifierName"> ''' An identifier declaring a new variable or naming an existing variable to store ''' the exception caught by the "Catch" statement. ''' </param> ''' <param name="asClause"> ''' A simple "As" clause specifying the type of exception to catch. ''' </param> ''' <param name="whenClause"> ''' A "When" clause to filter exceptions before catching. ''' </param> Public Shared Function CatchStatement(identifierName As IdentifierNameSyntax, asClause As SimpleAsClauseSyntax, whenClause As CatchFilterClauseSyntax) As CatchStatementSyntax Return SyntaxFactory.CatchStatement(SyntaxFactory.Token(SyntaxKind.CatchKeyword), identifierName, asClause, whenClause) End Function ''' <summary> ''' Represents the "Catch ... When ..." statement that begins a "Catch" block. ''' </summary> Public Shared Function CatchStatement() As CatchStatementSyntax Return SyntaxFactory.CatchStatement(SyntaxFactory.Token(SyntaxKind.CatchKeyword), Nothing, Nothing, Nothing) End Function ''' <summary> ''' Represents the "When ..." clause of a "Catch" statement. ''' </summary> ''' <param name="whenKeyword"> ''' The "When" keyword. ''' </param> ''' <param name="filter"> ''' The filter expression to be evaluated. ''' </param> Public Shared Function CatchFilterClause(whenKeyword As SyntaxToken, filter As ExpressionSyntax) As CatchFilterClauseSyntax Select Case whenKeyword.Kind() Case SyntaxKind.WhenKeyword Case Else Throw new ArgumentException("whenKeyword") End Select if filter Is Nothing Then Throw New ArgumentNullException(NameOf(filter)) End If Select Case filter.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("filter") End Select Return New CatchFilterClauseSyntax(SyntaxKind.CatchFilterClause, Nothing, Nothing, DirectCast(whenKeyword.Node, InternalSyntax.KeywordSyntax), filter) End Function ''' <summary> ''' Represents the "When ..." clause of a "Catch" statement. ''' </summary> ''' <param name="filter"> ''' The filter expression to be evaluated. ''' </param> Public Shared Function CatchFilterClause(filter As ExpressionSyntax) As CatchFilterClauseSyntax Return SyntaxFactory.CatchFilterClause(SyntaxFactory.Token(SyntaxKind.WhenKeyword), filter) End Function ''' <summary> ''' Represents a "Finally ..." block of a "Try" block. ''' </summary> ''' <param name="finallyStatement"> ''' The "Finally" statement that begins the "Finally" block. ''' </param> ''' <param name="statements"> ''' A list of statements to be executed. ''' </param> Public Shared Function FinallyBlock(finallyStatement As FinallyStatementSyntax, statements As SyntaxList(of StatementSyntax)) As FinallyBlockSyntax if finallyStatement Is Nothing Then Throw New ArgumentNullException(NameOf(finallyStatement)) End If Select Case finallyStatement.Kind() Case SyntaxKind.FinallyStatement Case Else Throw new ArgumentException("finallyStatement") End Select Return New FinallyBlockSyntax(SyntaxKind.FinallyBlock, Nothing, Nothing, finallyStatement, statements.Node) End Function ''' <summary> ''' Represents a "Finally ..." block of a "Try" block. ''' </summary> ''' <param name="statements"> ''' A list of statements to be executed. ''' </param> Public Shared Function FinallyBlock(statements As SyntaxList(of StatementSyntax)) As FinallyBlockSyntax Return SyntaxFactory.FinallyBlock(SyntaxFactory.FinallyStatement(), statements) End Function ''' <summary> ''' Represents a "Finally ..." block of a "Try" block. ''' </summary> Public Shared Function FinallyBlock() As FinallyBlockSyntax Return SyntaxFactory.FinallyBlock(SyntaxFactory.FinallyStatement(), Nothing) End Function ''' <summary> ''' Represents the "Finally" statement that begins a "Finally" block. ''' </summary> ''' <param name="finallyKeyword"> ''' The "Finally" keyword. ''' </param> Public Shared Function FinallyStatement(finallyKeyword As SyntaxToken) As FinallyStatementSyntax Select Case finallyKeyword.Kind() Case SyntaxKind.FinallyKeyword Case Else Throw new ArgumentException("finallyKeyword") End Select Return New FinallyStatementSyntax(SyntaxKind.FinallyStatement, Nothing, Nothing, DirectCast(finallyKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' Represents the "Finally" statement that begins a "Finally" block. ''' </summary> Public Shared Function FinallyStatement() As FinallyStatementSyntax Return SyntaxFactory.FinallyStatement(SyntaxFactory.Token(SyntaxKind.FinallyKeyword)) End Function ''' <summary> ''' Represents the "Error" statement. ''' </summary> ''' <param name="errorKeyword"> ''' The "Error" keyword. ''' </param> ''' <param name="errorNumber"> ''' The expression that represents the error number. ''' </param> Public Shared Function ErrorStatement(errorKeyword As SyntaxToken, errorNumber As ExpressionSyntax) As ErrorStatementSyntax Select Case errorKeyword.Kind() Case SyntaxKind.ErrorKeyword Case Else Throw new ArgumentException("errorKeyword") End Select if errorNumber Is Nothing Then Throw New ArgumentNullException(NameOf(errorNumber)) End If Select Case errorNumber.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("errorNumber") End Select Return New ErrorStatementSyntax(SyntaxKind.ErrorStatement, Nothing, Nothing, DirectCast(errorKeyword.Node, InternalSyntax.KeywordSyntax), errorNumber) End Function ''' <summary> ''' Represents the "Error" statement. ''' </summary> ''' <param name="errorNumber"> ''' The expression that represents the error number. ''' </param> Public Shared Function ErrorStatement(errorNumber As ExpressionSyntax) As ErrorStatementSyntax Return SyntaxFactory.ErrorStatement(SyntaxFactory.Token(SyntaxKind.ErrorKeyword), errorNumber) End Function ''' <summary> ''' Represents an OnError Goto statement. ''' </summary> ''' <param name="onKeyword"> ''' The "On" keyword ''' </param> ''' <param name="errorKeyword"> ''' The "Error" keyword. ''' </param> ''' <param name="goToKeyword"> ''' The "GoTo" keyword ''' </param> ''' <param name="minus"> ''' An optional minus for On Error Goto -1 ''' </param> ''' <param name="label"> ''' The name of the label. If the label is a line number, 0 or -1, wraps an ''' IntegerLiteralToken that is the line number, otherwise, wraps an Identifier. ''' </param> Public Shared Function OnErrorGoToZeroStatement(onKeyword As SyntaxToken, errorKeyword As SyntaxToken, goToKeyword As SyntaxToken, minus As SyntaxToken, label As LabelSyntax) As OnErrorGoToStatementSyntax Select Case onKeyword.Kind() Case SyntaxKind.OnKeyword Case Else Throw new ArgumentException("onKeyword") End Select Select Case errorKeyword.Kind() Case SyntaxKind.ErrorKeyword Case Else Throw new ArgumentException("errorKeyword") End Select Select Case goToKeyword.Kind() Case SyntaxKind.GoToKeyword Case Else Throw new ArgumentException("goToKeyword") End Select if label Is Nothing Then Throw New ArgumentNullException(NameOf(label)) End If Select Case label.Kind() Case SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel Case Else Throw new ArgumentException("label") End Select Return New OnErrorGoToStatementSyntax(SyntaxKind.OnErrorGoToZeroStatement, Nothing, Nothing, DirectCast(onKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(errorKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(goToKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(minus.Node, InternalSyntax.PunctuationSyntax), label) End Function ''' <summary> ''' Represents an OnError Goto statement. ''' </summary> ''' <param name="label"> ''' The name of the label. If the label is a line number, 0 or -1, wraps an ''' IntegerLiteralToken that is the line number, otherwise, wraps an Identifier. ''' </param> Public Shared Function OnErrorGoToZeroStatement(label As LabelSyntax) As OnErrorGoToStatementSyntax Return SyntaxFactory.OnErrorGoToZeroStatement(SyntaxFactory.Token(SyntaxKind.OnKeyword), SyntaxFactory.Token(SyntaxKind.ErrorKeyword), SyntaxFactory.Token(SyntaxKind.GoToKeyword), Nothing, label) End Function ''' <summary> ''' Represents an OnError Goto statement. ''' </summary> ''' <param name="onKeyword"> ''' The "On" keyword ''' </param> ''' <param name="errorKeyword"> ''' The "Error" keyword. ''' </param> ''' <param name="goToKeyword"> ''' The "GoTo" keyword ''' </param> ''' <param name="minus"> ''' An optional minus for On Error Goto -1 ''' </param> ''' <param name="label"> ''' The name of the label. If the label is a line number, 0 or -1, wraps an ''' IntegerLiteralToken that is the line number, otherwise, wraps an Identifier. ''' </param> Public Shared Function OnErrorGoToMinusOneStatement(onKeyword As SyntaxToken, errorKeyword As SyntaxToken, goToKeyword As SyntaxToken, minus As SyntaxToken, label As LabelSyntax) As OnErrorGoToStatementSyntax Select Case onKeyword.Kind() Case SyntaxKind.OnKeyword Case Else Throw new ArgumentException("onKeyword") End Select Select Case errorKeyword.Kind() Case SyntaxKind.ErrorKeyword Case Else Throw new ArgumentException("errorKeyword") End Select Select Case goToKeyword.Kind() Case SyntaxKind.GoToKeyword Case Else Throw new ArgumentException("goToKeyword") End Select if label Is Nothing Then Throw New ArgumentNullException(NameOf(label)) End If Select Case label.Kind() Case SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel Case Else Throw new ArgumentException("label") End Select Return New OnErrorGoToStatementSyntax(SyntaxKind.OnErrorGoToMinusOneStatement, Nothing, Nothing, DirectCast(onKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(errorKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(goToKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(minus.Node, InternalSyntax.PunctuationSyntax), label) End Function ''' <summary> ''' Represents an OnError Goto statement. ''' </summary> ''' <param name="label"> ''' The name of the label. If the label is a line number, 0 or -1, wraps an ''' IntegerLiteralToken that is the line number, otherwise, wraps an Identifier. ''' </param> Public Shared Function OnErrorGoToMinusOneStatement(label As LabelSyntax) As OnErrorGoToStatementSyntax Return SyntaxFactory.OnErrorGoToMinusOneStatement(SyntaxFactory.Token(SyntaxKind.OnKeyword), SyntaxFactory.Token(SyntaxKind.ErrorKeyword), SyntaxFactory.Token(SyntaxKind.GoToKeyword), Nothing, label) End Function ''' <summary> ''' Represents an OnError Goto statement. ''' </summary> ''' <param name="onKeyword"> ''' The "On" keyword ''' </param> ''' <param name="errorKeyword"> ''' The "Error" keyword. ''' </param> ''' <param name="goToKeyword"> ''' The "GoTo" keyword ''' </param> ''' <param name="minus"> ''' An optional minus for On Error Goto -1 ''' </param> ''' <param name="label"> ''' The name of the label. If the label is a line number, 0 or -1, wraps an ''' IntegerLiteralToken that is the line number, otherwise, wraps an Identifier. ''' </param> Public Shared Function OnErrorGoToLabelStatement(onKeyword As SyntaxToken, errorKeyword As SyntaxToken, goToKeyword As SyntaxToken, minus As SyntaxToken, label As LabelSyntax) As OnErrorGoToStatementSyntax Select Case onKeyword.Kind() Case SyntaxKind.OnKeyword Case Else Throw new ArgumentException("onKeyword") End Select Select Case errorKeyword.Kind() Case SyntaxKind.ErrorKeyword Case Else Throw new ArgumentException("errorKeyword") End Select Select Case goToKeyword.Kind() Case SyntaxKind.GoToKeyword Case Else Throw new ArgumentException("goToKeyword") End Select if label Is Nothing Then Throw New ArgumentNullException(NameOf(label)) End If Select Case label.Kind() Case SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel Case Else Throw new ArgumentException("label") End Select Return New OnErrorGoToStatementSyntax(SyntaxKind.OnErrorGoToLabelStatement, Nothing, Nothing, DirectCast(onKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(errorKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(goToKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(minus.Node, InternalSyntax.PunctuationSyntax), label) End Function ''' <summary> ''' Represents an OnError Goto statement. ''' </summary> ''' <param name="label"> ''' The name of the label. If the label is a line number, 0 or -1, wraps an ''' IntegerLiteralToken that is the line number, otherwise, wraps an Identifier. ''' </param> Public Shared Function OnErrorGoToLabelStatement(label As LabelSyntax) As OnErrorGoToStatementSyntax Return SyntaxFactory.OnErrorGoToLabelStatement(SyntaxFactory.Token(SyntaxKind.OnKeyword), SyntaxFactory.Token(SyntaxKind.ErrorKeyword), SyntaxFactory.Token(SyntaxKind.GoToKeyword), Nothing, label) End Function ''' <summary> ''' Represents an OnError Goto statement. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' OnErrorGoToStatementSyntax. One of OnErrorGoToZeroStatement, ''' OnErrorGoToMinusOneStatement, OnErrorGoToLabelStatement. ''' </param> ''' <param name="onKeyword"> ''' The "On" keyword ''' </param> ''' <param name="errorKeyword"> ''' The "Error" keyword. ''' </param> ''' <param name="goToKeyword"> ''' The "GoTo" keyword ''' </param> ''' <param name="minus"> ''' An optional minus for On Error Goto -1 ''' </param> ''' <param name="label"> ''' The name of the label. If the label is a line number, 0 or -1, wraps an ''' IntegerLiteralToken that is the line number, otherwise, wraps an Identifier. ''' </param> Public Shared Function OnErrorGoToStatement(ByVal kind As SyntaxKind, onKeyword As SyntaxToken, errorKeyword As SyntaxToken, goToKeyword As SyntaxToken, minus As SyntaxToken, label As LabelSyntax) As OnErrorGoToStatementSyntax If Not SyntaxFacts.IsOnErrorGoToStatement(kind) Then Throw New ArgumentException("kind") End If Select Case onKeyword.Kind() Case SyntaxKind.OnKeyword Case Else Throw new ArgumentException("onKeyword") End Select Select Case errorKeyword.Kind() Case SyntaxKind.ErrorKeyword Case Else Throw new ArgumentException("errorKeyword") End Select Select Case goToKeyword.Kind() Case SyntaxKind.GoToKeyword Case Else Throw new ArgumentException("goToKeyword") End Select if label Is Nothing Then Throw New ArgumentNullException(NameOf(label)) End If Select Case label.Kind() Case SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel Case Else Throw new ArgumentException("label") End Select Return New OnErrorGoToStatementSyntax(kind, Nothing, Nothing, DirectCast(onKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(errorKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(goToKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(minus.Node, InternalSyntax.PunctuationSyntax), label) End Function ''' <summary> ''' Represents an OnError Goto statement. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' OnErrorGoToStatementSyntax. One of OnErrorGoToZeroStatement, ''' OnErrorGoToMinusOneStatement, OnErrorGoToLabelStatement. ''' </param> ''' <param name="label"> ''' The name of the label. If the label is a line number, 0 or -1, wraps an ''' IntegerLiteralToken that is the line number, otherwise, wraps an Identifier. ''' </param> Public Shared Function OnErrorGoToStatement(ByVal kind As SyntaxKind, label As LabelSyntax) As OnErrorGoToStatementSyntax Return SyntaxFactory.OnErrorGoToStatement(kind, SyntaxFactory.Token(SyntaxKind.OnKeyword), SyntaxFactory.Token(SyntaxKind.ErrorKeyword), SyntaxFactory.Token(SyntaxKind.GoToKeyword), Nothing, label) End Function ''' <summary> ''' Represents an OnError Resume Next statement. ''' </summary> ''' <param name="onKeyword"> ''' The "On" keyword ''' </param> ''' <param name="errorKeyword"> ''' The "Error" keyword. ''' </param> ''' <param name="resumeKeyword"> ''' The "Resume" keyword. ''' </param> ''' <param name="nextKeyword"> ''' The "Next" ''' </param> Public Shared Function OnErrorResumeNextStatement(onKeyword As SyntaxToken, errorKeyword As SyntaxToken, resumeKeyword As SyntaxToken, nextKeyword As SyntaxToken) As OnErrorResumeNextStatementSyntax Select Case onKeyword.Kind() Case SyntaxKind.OnKeyword Case Else Throw new ArgumentException("onKeyword") End Select Select Case errorKeyword.Kind() Case SyntaxKind.ErrorKeyword Case Else Throw new ArgumentException("errorKeyword") End Select Select Case resumeKeyword.Kind() Case SyntaxKind.ResumeKeyword Case Else Throw new ArgumentException("resumeKeyword") End Select Select Case nextKeyword.Kind() Case SyntaxKind.NextKeyword Case Else Throw new ArgumentException("nextKeyword") End Select Return New OnErrorResumeNextStatementSyntax(SyntaxKind.OnErrorResumeNextStatement, Nothing, Nothing, DirectCast(onKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(errorKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(resumeKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(nextKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' Represents an OnError Resume Next statement. ''' </summary> Public Shared Function OnErrorResumeNextStatement() As OnErrorResumeNextStatementSyntax Return SyntaxFactory.OnErrorResumeNextStatement(SyntaxFactory.Token(SyntaxKind.OnKeyword), SyntaxFactory.Token(SyntaxKind.ErrorKeyword), SyntaxFactory.Token(SyntaxKind.ResumeKeyword), SyntaxFactory.Token(SyntaxKind.NextKeyword)) End Function ''' <summary> ''' Represents a "Resume" statement. The Kind property can be used to determine if ''' this is a "Resume", "Resume Next" or "Resume label" statement. ''' </summary> ''' <param name="resumeKeyword"> ''' The "Resume" keyword. ''' </param> ''' <param name="label"> ''' The label. The value of this depends on the Kind. If Kind=Resume, returns ''' Nothing. If Kind=ResumeNext, wraps the keyword "Next", If Kind=ResumeLabel, ''' wraps an Identifier or IntegerLiteralToken with the label or line number. ''' </param> Public Shared Function ResumeStatement(resumeKeyword As SyntaxToken, label As LabelSyntax) As ResumeStatementSyntax Select Case resumeKeyword.Kind() Case SyntaxKind.ResumeKeyword Case Else Throw new ArgumentException("resumeKeyword") End Select Return New ResumeStatementSyntax(SyntaxKind.ResumeStatement, Nothing, Nothing, DirectCast(resumeKeyword.Node, InternalSyntax.KeywordSyntax), label) End Function ''' <summary> ''' Represents a "Resume" statement. The Kind property can be used to determine if ''' this is a "Resume", "Resume Next" or "Resume label" statement. ''' </summary> ''' <param name="label"> ''' The label. The value of this depends on the Kind. If Kind=Resume, returns ''' Nothing. If Kind=ResumeNext, wraps the keyword "Next", If Kind=ResumeLabel, ''' wraps an Identifier or IntegerLiteralToken with the label or line number. ''' </param> Public Shared Function ResumeStatement(label As LabelSyntax) As ResumeStatementSyntax Return SyntaxFactory.ResumeStatement(SyntaxKind.ResumeStatement, SyntaxFactory.Token(SyntaxKind.ResumeKeyword), label) End Function ''' <summary> ''' Represents a "Resume" statement. The Kind property can be used to determine if ''' this is a "Resume", "Resume Next" or "Resume label" statement. ''' </summary> Public Shared Function ResumeStatement() As ResumeStatementSyntax Return SyntaxFactory.ResumeStatement(SyntaxKind.ResumeStatement, SyntaxFactory.Token(SyntaxKind.ResumeKeyword), Nothing) End Function ''' <summary> ''' Represents a "Resume" statement. The Kind property can be used to determine if ''' this is a "Resume", "Resume Next" or "Resume label" statement. ''' </summary> ''' <param name="resumeKeyword"> ''' The "Resume" keyword. ''' </param> ''' <param name="label"> ''' The label. The value of this depends on the Kind. If Kind=Resume, returns ''' Nothing. If Kind=ResumeNext, wraps the keyword "Next", If Kind=ResumeLabel, ''' wraps an Identifier or IntegerLiteralToken with the label or line number. ''' </param> Public Shared Function ResumeLabelStatement(resumeKeyword As SyntaxToken, label As LabelSyntax) As ResumeStatementSyntax Select Case resumeKeyword.Kind() Case SyntaxKind.ResumeKeyword Case Else Throw new ArgumentException("resumeKeyword") End Select Return New ResumeStatementSyntax(SyntaxKind.ResumeLabelStatement, Nothing, Nothing, DirectCast(resumeKeyword.Node, InternalSyntax.KeywordSyntax), label) End Function ''' <summary> ''' Represents a "Resume" statement. The Kind property can be used to determine if ''' this is a "Resume", "Resume Next" or "Resume label" statement. ''' </summary> ''' <param name="label"> ''' The label. The value of this depends on the Kind. If Kind=Resume, returns ''' Nothing. If Kind=ResumeNext, wraps the keyword "Next", If Kind=ResumeLabel, ''' wraps an Identifier or IntegerLiteralToken with the label or line number. ''' </param> Public Shared Function ResumeLabelStatement(label As LabelSyntax) As ResumeStatementSyntax Return SyntaxFactory.ResumeLabelStatement(SyntaxFactory.Token(SyntaxKind.ResumeKeyword), label) End Function ''' <summary> ''' Represents a "Resume" statement. The Kind property can be used to determine if ''' this is a "Resume", "Resume Next" or "Resume label" statement. ''' </summary> Public Shared Function ResumeLabelStatement() As ResumeStatementSyntax Return SyntaxFactory.ResumeLabelStatement(SyntaxFactory.Token(SyntaxKind.ResumeKeyword), Nothing) End Function ''' <summary> ''' Represents a "Resume" statement. The Kind property can be used to determine if ''' this is a "Resume", "Resume Next" or "Resume label" statement. ''' </summary> ''' <param name="resumeKeyword"> ''' The "Resume" keyword. ''' </param> ''' <param name="label"> ''' The label. The value of this depends on the Kind. If Kind=Resume, returns ''' Nothing. If Kind=ResumeNext, wraps the keyword "Next", If Kind=ResumeLabel, ''' wraps an Identifier or IntegerLiteralToken with the label or line number. ''' </param> Public Shared Function ResumeNextStatement(resumeKeyword As SyntaxToken, label As LabelSyntax) As ResumeStatementSyntax Select Case resumeKeyword.Kind() Case SyntaxKind.ResumeKeyword Case Else Throw new ArgumentException("resumeKeyword") End Select Return New ResumeStatementSyntax(SyntaxKind.ResumeNextStatement, Nothing, Nothing, DirectCast(resumeKeyword.Node, InternalSyntax.KeywordSyntax), label) End Function ''' <summary> ''' Represents a "Resume" statement. The Kind property can be used to determine if ''' this is a "Resume", "Resume Next" or "Resume label" statement. ''' </summary> ''' <param name="label"> ''' The label. The value of this depends on the Kind. If Kind=Resume, returns ''' Nothing. If Kind=ResumeNext, wraps the keyword "Next", If Kind=ResumeLabel, ''' wraps an Identifier or IntegerLiteralToken with the label or line number. ''' </param> Public Shared Function ResumeNextStatement(label As LabelSyntax) As ResumeStatementSyntax Return SyntaxFactory.ResumeNextStatement(SyntaxFactory.Token(SyntaxKind.ResumeKeyword), label) End Function ''' <summary> ''' Represents a "Resume" statement. The Kind property can be used to determine if ''' this is a "Resume", "Resume Next" or "Resume label" statement. ''' </summary> Public Shared Function ResumeNextStatement() As ResumeStatementSyntax Return SyntaxFactory.ResumeNextStatement(SyntaxFactory.Token(SyntaxKind.ResumeKeyword), Nothing) End Function ''' <summary> ''' Represents a "Resume" statement. The Kind property can be used to determine if ''' this is a "Resume", "Resume Next" or "Resume label" statement. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' ResumeStatementSyntax. One of ResumeStatement, ResumeLabelStatement, ''' ResumeNextStatement. ''' </param> ''' <param name="resumeKeyword"> ''' The "Resume" keyword. ''' </param> ''' <param name="label"> ''' The label. The value of this depends on the Kind. If Kind=Resume, returns ''' Nothing. If Kind=ResumeNext, wraps the keyword "Next", If Kind=ResumeLabel, ''' wraps an Identifier or IntegerLiteralToken with the label or line number. ''' </param> Public Shared Function ResumeStatement(ByVal kind As SyntaxKind, resumeKeyword As SyntaxToken, label As LabelSyntax) As ResumeStatementSyntax If Not SyntaxFacts.IsResumeStatement(kind) Then Throw New ArgumentException("kind") End If Select Case resumeKeyword.Kind() Case SyntaxKind.ResumeKeyword Case Else Throw new ArgumentException("resumeKeyword") End Select Return New ResumeStatementSyntax(kind, Nothing, Nothing, DirectCast(resumeKeyword.Node, InternalSyntax.KeywordSyntax), label) End Function ''' <summary> ''' Represents a "Resume" statement. The Kind property can be used to determine if ''' this is a "Resume", "Resume Next" or "Resume label" statement. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' ResumeStatementSyntax. One of ResumeStatement, ResumeLabelStatement, ''' ResumeNextStatement. ''' </param> ''' <param name="label"> ''' The label. The value of this depends on the Kind. If Kind=Resume, returns ''' Nothing. If Kind=ResumeNext, wraps the keyword "Next", If Kind=ResumeLabel, ''' wraps an Identifier or IntegerLiteralToken with the label or line number. ''' </param> Public Shared Function ResumeStatement(ByVal kind As SyntaxKind, label As LabelSyntax) As ResumeStatementSyntax Return SyntaxFactory.ResumeStatement(kind, SyntaxFactory.Token(SyntaxKind.ResumeKeyword), label) End Function ''' <summary> ''' Represents a "Resume" statement. The Kind property can be used to determine if ''' this is a "Resume", "Resume Next" or "Resume label" statement. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' ResumeStatementSyntax. One of ResumeStatement, ResumeLabelStatement, ''' ResumeNextStatement. ''' </param> Public Shared Function ResumeStatement(ByVal kind As SyntaxKind) As ResumeStatementSyntax Return SyntaxFactory.ResumeStatement(kind, SyntaxFactory.Token(SyntaxKind.ResumeKeyword), Nothing) End Function ''' <summary> ''' Represents a Select Case block, including the Select Case that begins it, the ''' contains Case blocks and the End Select. ''' </summary> ''' <param name="selectStatement"> ''' The Select Case statement that begins the block. ''' </param> ''' <param name="caseBlocks"> ''' A list of the contained Case blocks. ''' </param> ''' <param name="endSelectStatement"> ''' The End Select statement that ends the block. ''' </param> Public Shared Function SelectBlock(selectStatement As SelectStatementSyntax, caseBlocks As SyntaxList(of CaseBlockSyntax), endSelectStatement As EndBlockStatementSyntax) As SelectBlockSyntax if selectStatement Is Nothing Then Throw New ArgumentNullException(NameOf(selectStatement)) End If Select Case selectStatement.Kind() Case SyntaxKind.SelectStatement Case Else Throw new ArgumentException("selectStatement") End Select if endSelectStatement Is Nothing Then Throw New ArgumentNullException(NameOf(endSelectStatement)) End If Select Case endSelectStatement.Kind() Case SyntaxKind.EndSelectStatement Case Else Throw new ArgumentException("endSelectStatement") End Select Return New SelectBlockSyntax(SyntaxKind.SelectBlock, Nothing, Nothing, selectStatement, caseBlocks.Node, endSelectStatement) End Function ''' <summary> ''' Represents a Select Case block, including the Select Case that begins it, the ''' contains Case blocks and the End Select. ''' </summary> ''' <param name="selectStatement"> ''' The Select Case statement that begins the block. ''' </param> ''' <param name="caseBlocks"> ''' A list of the contained Case blocks. ''' </param> Public Shared Function SelectBlock(selectStatement As SelectStatementSyntax, caseBlocks As SyntaxList(of CaseBlockSyntax)) As SelectBlockSyntax Return SyntaxFactory.SelectBlock(selectStatement, caseBlocks, SyntaxFactory.EndSelectStatement()) End Function ''' <summary> ''' Represents a Select Case block, including the Select Case that begins it, the ''' contains Case blocks and the End Select. ''' </summary> ''' <param name="selectStatement"> ''' The Select Case statement that begins the block. ''' </param> Public Shared Function SelectBlock(selectStatement As SelectStatementSyntax) As SelectBlockSyntax Return SyntaxFactory.SelectBlock(selectStatement, Nothing, SyntaxFactory.EndSelectStatement()) End Function ''' <summary> ''' Represents a Select Case statement. This statement always occurs as the Begin ''' of a SelectBlock. ''' </summary> ''' <param name="selectKeyword"> ''' The "Select" keyword. ''' </param> ''' <param name="caseKeyword"> ''' The "Case" keyword, if present. ''' </param> ''' <param name="expression"> ''' The value that branching is based on. ''' </param> Public Shared Function SelectStatement(selectKeyword As SyntaxToken, caseKeyword As SyntaxToken, expression As ExpressionSyntax) As SelectStatementSyntax Select Case selectKeyword.Kind() Case SyntaxKind.SelectKeyword Case Else Throw new ArgumentException("selectKeyword") End Select if expression Is Nothing Then Throw New ArgumentNullException(NameOf(expression)) End If Select Case expression.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("expression") End Select Return New SelectStatementSyntax(SyntaxKind.SelectStatement, Nothing, Nothing, DirectCast(selectKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(caseKeyword.Node, InternalSyntax.KeywordSyntax), expression) End Function ''' <summary> ''' Represents a Select Case statement. This statement always occurs as the Begin ''' of a SelectBlock. ''' </summary> ''' <param name="expression"> ''' The value that branching is based on. ''' </param> Public Shared Function SelectStatement(expression As ExpressionSyntax) As SelectStatementSyntax Return SyntaxFactory.SelectStatement(SyntaxFactory.Token(SyntaxKind.SelectKeyword), Nothing, expression) End Function ''' <summary> ''' Represents a case statement and its subsequent block. ''' </summary> ''' <param name="caseStatement"> ''' The statement that begins the case block. ''' </param> ''' <param name="statements"> ''' The statements contained in the case block. This might be an empty list. ''' </param> Public Shared Function CaseBlock(caseStatement As CaseStatementSyntax, statements As SyntaxList(of StatementSyntax)) As CaseBlockSyntax if caseStatement Is Nothing Then Throw New ArgumentNullException(NameOf(caseStatement)) End If Select Case caseStatement.Kind() Case SyntaxKind.CaseStatement, SyntaxKind.CaseElseStatement Case Else Throw new ArgumentException("caseStatement") End Select Return New CaseBlockSyntax(SyntaxKind.CaseBlock, Nothing, Nothing, caseStatement, statements.Node) End Function ''' <summary> ''' Represents a case statement and its subsequent block. ''' </summary> ''' <param name="caseStatement"> ''' The statement that begins the case block. ''' </param> Public Shared Function CaseBlock(caseStatement As CaseStatementSyntax) As CaseBlockSyntax Return SyntaxFactory.CaseBlock(SyntaxKind.CaseBlock, caseStatement, Nothing) End Function ''' <summary> ''' Represents a case statement and its subsequent block. ''' </summary> ''' <param name="caseStatement"> ''' The statement that begins the case block. ''' </param> ''' <param name="statements"> ''' The statements contained in the case block. This might be an empty list. ''' </param> Public Shared Function CaseElseBlock(caseStatement As CaseStatementSyntax, statements As SyntaxList(of StatementSyntax)) As CaseBlockSyntax if caseStatement Is Nothing Then Throw New ArgumentNullException(NameOf(caseStatement)) End If Select Case caseStatement.Kind() Case SyntaxKind.CaseStatement, SyntaxKind.CaseElseStatement Case Else Throw new ArgumentException("caseStatement") End Select Return New CaseBlockSyntax(SyntaxKind.CaseElseBlock, Nothing, Nothing, caseStatement, statements.Node) End Function ''' <summary> ''' Represents a case statement and its subsequent block. ''' </summary> ''' <param name="caseStatement"> ''' The statement that begins the case block. ''' </param> Public Shared Function CaseElseBlock(caseStatement As CaseStatementSyntax) As CaseBlockSyntax Return SyntaxFactory.CaseElseBlock(caseStatement, Nothing) End Function ''' <summary> ''' Represents a case statement and its subsequent block. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of CaseBlockSyntax. ''' One of CaseBlock, CaseElseBlock. ''' </param> ''' <param name="caseStatement"> ''' The statement that begins the case block. ''' </param> ''' <param name="statements"> ''' The statements contained in the case block. This might be an empty list. ''' </param> Public Shared Function CaseBlock(ByVal kind As SyntaxKind, caseStatement As CaseStatementSyntax, statements As SyntaxList(of StatementSyntax)) As CaseBlockSyntax If Not SyntaxFacts.IsCaseBlock(kind) Then Throw New ArgumentException("kind") End If if caseStatement Is Nothing Then Throw New ArgumentNullException(NameOf(caseStatement)) End If Select Case caseStatement.Kind() Case SyntaxKind.CaseStatement, SyntaxKind.CaseElseStatement Case Else Throw new ArgumentException("caseStatement") End Select Return New CaseBlockSyntax(kind, Nothing, Nothing, caseStatement, statements.Node) End Function ''' <summary> ''' Represents a case statement and its subsequent block. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of CaseBlockSyntax. ''' One of CaseBlock, CaseElseBlock. ''' </param> ''' <param name="caseStatement"> ''' The statement that begins the case block. ''' </param> Public Shared Function CaseBlock(ByVal kind As SyntaxKind, caseStatement As CaseStatementSyntax) As CaseBlockSyntax Return SyntaxFactory.CaseBlock(kind, caseStatement, Nothing) End Function ''' <summary> ''' Represents a Case or Case Else statement. This statement is always the Begin of ''' a CaseBlock. If this is a Case Else statement, the Kind=CaseElse, otherwise the ''' Kind=Case. ''' </summary> ''' <param name="caseKeyword"> ''' The "Case" keyword ''' </param> ''' <param name="cases"> ''' A list of clauses associated with this Case. If Kind=CaseElse, then this list ''' has exactly one child, which is a ElseCaseClause. ''' </param> Public Shared Function CaseStatement(caseKeyword As SyntaxToken, cases As SeparatedSyntaxList(Of CaseClauseSyntax)) As CaseStatementSyntax Select Case caseKeyword.Kind() Case SyntaxKind.CaseKeyword Case Else Throw new ArgumentException("caseKeyword") End Select Return New CaseStatementSyntax(SyntaxKind.CaseStatement, Nothing, Nothing, DirectCast(caseKeyword.Node, InternalSyntax.KeywordSyntax), cases.Node) End Function ''' <summary> ''' Represents a Case or Case Else statement. This statement is always the Begin of ''' a CaseBlock. If this is a Case Else statement, the Kind=CaseElse, otherwise the ''' Kind=Case. ''' </summary> ''' <param name="cases"> ''' A list of clauses associated with this Case. If Kind=CaseElse, then this list ''' has exactly one child, which is a ElseCaseClause. ''' </param> Public Shared Function CaseStatement(cases As SeparatedSyntaxList(Of CaseClauseSyntax)) As CaseStatementSyntax Return SyntaxFactory.CaseStatement(SyntaxKind.CaseStatement, SyntaxFactory.Token(SyntaxKind.CaseKeyword), cases) End Function ''' <summary> ''' Represents a Case or Case Else statement. This statement is always the Begin of ''' a CaseBlock. If this is a Case Else statement, the Kind=CaseElse, otherwise the ''' Kind=Case. ''' </summary> ''' <param name="cases"> ''' A list of clauses associated with this Case. If Kind=CaseElse, then this list ''' has exactly one child, which is a ElseCaseClause. ''' </param> Public Shared Function CaseStatement(ParamArray cases As CaseClauseSyntax()) As CaseStatementSyntax Return SyntaxFactory.CaseStatement(SyntaxKind.CaseStatement, SyntaxFactory.Token(SyntaxKind.CaseKeyword), SyntaxFactory.SeparatedList(Of CaseClauseSyntax)().AddRange(cases)) End Function ''' <summary> ''' Represents a Case or Case Else statement. This statement is always the Begin of ''' a CaseBlock. If this is a Case Else statement, the Kind=CaseElse, otherwise the ''' Kind=Case. ''' </summary> ''' <param name="caseKeyword"> ''' The "Case" keyword ''' </param> ''' <param name="cases"> ''' A list of clauses associated with this Case. If Kind=CaseElse, then this list ''' has exactly one child, which is a ElseCaseClause. ''' </param> Public Shared Function CaseElseStatement(caseKeyword As SyntaxToken, cases As SeparatedSyntaxList(Of CaseClauseSyntax)) As CaseStatementSyntax Select Case caseKeyword.Kind() Case SyntaxKind.CaseKeyword Case Else Throw new ArgumentException("caseKeyword") End Select Return New CaseStatementSyntax(SyntaxKind.CaseElseStatement, Nothing, Nothing, DirectCast(caseKeyword.Node, InternalSyntax.KeywordSyntax), cases.Node) End Function ''' <summary> ''' Represents a Case or Case Else statement. This statement is always the Begin of ''' a CaseBlock. If this is a Case Else statement, the Kind=CaseElse, otherwise the ''' Kind=Case. ''' </summary> ''' <param name="cases"> ''' A list of clauses associated with this Case. If Kind=CaseElse, then this list ''' has exactly one child, which is a ElseCaseClause. ''' </param> Public Shared Function CaseElseStatement(cases As SeparatedSyntaxList(Of CaseClauseSyntax)) As CaseStatementSyntax Return SyntaxFactory.CaseElseStatement(SyntaxFactory.Token(SyntaxKind.CaseKeyword), cases) End Function ''' <summary> ''' Represents a Case or Case Else statement. This statement is always the Begin of ''' a CaseBlock. If this is a Case Else statement, the Kind=CaseElse, otherwise the ''' Kind=Case. ''' </summary> ''' <param name="cases"> ''' A list of clauses associated with this Case. If Kind=CaseElse, then this list ''' has exactly one child, which is a ElseCaseClause. ''' </param> Public Shared Function CaseElseStatement(ParamArray cases As CaseClauseSyntax()) As CaseStatementSyntax Return SyntaxFactory.CaseElseStatement(SyntaxFactory.Token(SyntaxKind.CaseKeyword), SyntaxFactory.SeparatedList(Of CaseClauseSyntax)().AddRange(cases)) End Function ''' <summary> ''' Represents a Case or Case Else statement. This statement is always the Begin of ''' a CaseBlock. If this is a Case Else statement, the Kind=CaseElse, otherwise the ''' Kind=Case. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' CaseStatementSyntax. One of CaseStatement, CaseElseStatement. ''' </param> ''' <param name="caseKeyword"> ''' The "Case" keyword ''' </param> ''' <param name="cases"> ''' A list of clauses associated with this Case. If Kind=CaseElse, then this list ''' has exactly one child, which is a ElseCaseClause. ''' </param> Public Shared Function CaseStatement(ByVal kind As SyntaxKind, caseKeyword As SyntaxToken, cases As SeparatedSyntaxList(Of CaseClauseSyntax)) As CaseStatementSyntax If Not SyntaxFacts.IsCaseStatement(kind) Then Throw New ArgumentException("kind") End If Select Case caseKeyword.Kind() Case SyntaxKind.CaseKeyword Case Else Throw new ArgumentException("caseKeyword") End Select Return New CaseStatementSyntax(kind, Nothing, Nothing, DirectCast(caseKeyword.Node, InternalSyntax.KeywordSyntax), cases.Node) End Function ''' <summary> ''' Represents a Case or Case Else statement. This statement is always the Begin of ''' a CaseBlock. If this is a Case Else statement, the Kind=CaseElse, otherwise the ''' Kind=Case. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' CaseStatementSyntax. One of CaseStatement, CaseElseStatement. ''' </param> ''' <param name="cases"> ''' A list of clauses associated with this Case. If Kind=CaseElse, then this list ''' has exactly one child, which is a ElseCaseClause. ''' </param> Public Shared Function CaseStatement(ByVal kind As SyntaxKind, cases As SeparatedSyntaxList(Of CaseClauseSyntax)) As CaseStatementSyntax Return SyntaxFactory.CaseStatement(kind, SyntaxFactory.Token(SyntaxKind.CaseKeyword), cases) End Function ''' <summary> ''' Represents a Case or Case Else statement. This statement is always the Begin of ''' a CaseBlock. If this is a Case Else statement, the Kind=CaseElse, otherwise the ''' Kind=Case. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' CaseStatementSyntax. One of CaseStatement, CaseElseStatement. ''' </param> ''' <param name="cases"> ''' A list of clauses associated with this Case. If Kind=CaseElse, then this list ''' has exactly one child, which is a ElseCaseClause. ''' </param> Public Shared Function CaseStatement(ByVal kind As SyntaxKind, ParamArray cases As CaseClauseSyntax()) As CaseStatementSyntax Return SyntaxFactory.CaseStatement(kind, SyntaxFactory.Token(SyntaxKind.CaseKeyword), SyntaxFactory.SeparatedList(Of CaseClauseSyntax)().AddRange(cases)) End Function ''' <summary> ''' The "Else" part in a Case Else statement. ''' </summary> ''' <param name="elseKeyword"> ''' The "Else" keyword. ''' </param> Public Shared Function ElseCaseClause(elseKeyword As SyntaxToken) As ElseCaseClauseSyntax Select Case elseKeyword.Kind() Case SyntaxKind.ElseKeyword Case Else Throw new ArgumentException("elseKeyword") End Select Return New ElseCaseClauseSyntax(SyntaxKind.ElseCaseClause, Nothing, Nothing, DirectCast(elseKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' The "Else" part in a Case Else statement. ''' </summary> Public Shared Function ElseCaseClause() As ElseCaseClauseSyntax Return SyntaxFactory.ElseCaseClause(SyntaxFactory.Token(SyntaxKind.ElseKeyword)) End Function ''' <summary> ''' Represents a single value in a Case. ''' </summary> ''' <param name="value"> ''' The expression that denotes the value being tested against. ''' </param> Public Shared Function SimpleCaseClause(value As ExpressionSyntax) As SimpleCaseClauseSyntax if value Is Nothing Then Throw New ArgumentNullException(NameOf(value)) End If Select Case value.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("value") End Select Return New SimpleCaseClauseSyntax(SyntaxKind.SimpleCaseClause, Nothing, Nothing, value) End Function ''' <summary> ''' Represents a range "expression To expression" in a Case. ''' </summary> ''' <param name="lowerBound"> ''' The lower bound of the range. ''' </param> ''' <param name="toKeyword"> ''' The "To" keyword ''' </param> ''' <param name="upperBound"> ''' The upper bound of the range. ''' </param> Public Shared Function RangeCaseClause(lowerBound As ExpressionSyntax, toKeyword As SyntaxToken, upperBound As ExpressionSyntax) As RangeCaseClauseSyntax if lowerBound Is Nothing Then Throw New ArgumentNullException(NameOf(lowerBound)) End If Select Case lowerBound.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("lowerBound") End Select Select Case toKeyword.Kind() Case SyntaxKind.ToKeyword Case Else Throw new ArgumentException("toKeyword") End Select if upperBound Is Nothing Then Throw New ArgumentNullException(NameOf(upperBound)) End If Select Case upperBound.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("upperBound") End Select Return New RangeCaseClauseSyntax(SyntaxKind.RangeCaseClause, Nothing, Nothing, lowerBound, DirectCast(toKeyword.Node, InternalSyntax.KeywordSyntax), upperBound) End Function ''' <summary> ''' Represents a range "expression To expression" in a Case. ''' </summary> ''' <param name="lowerBound"> ''' The lower bound of the range. ''' </param> ''' <param name="upperBound"> ''' The upper bound of the range. ''' </param> Public Shared Function RangeCaseClause(lowerBound As ExpressionSyntax, upperBound As ExpressionSyntax) As RangeCaseClauseSyntax Return SyntaxFactory.RangeCaseClause(lowerBound, SyntaxFactory.Token(SyntaxKind.ToKeyword), upperBound) End Function ''' <summary> ''' Represents a relation clause in a Case statement, such as "Is > expression". ''' </summary> ''' <param name="isKeyword"> ''' The "Is" keyword, if present. ''' </param> ''' <param name="operatorToken"> ''' The operator in the relational clause. One of "=", "<", ">", "<=" or ''' ">=". ''' </param> ''' <param name="value"> ''' The expression that denotes the value being tested against. ''' </param> Public Shared Function CaseEqualsClause(isKeyword As SyntaxToken, operatorToken As SyntaxToken, value As ExpressionSyntax) As RelationalCaseClauseSyntax Select Case operatorToken.Kind() Case SyntaxKind.EqualsToken : Case SyntaxKind.LessThanGreaterThanToken : Case SyntaxKind.LessThanToken : Case SyntaxKind.GreaterThanToken : Case SyntaxKind.LessThanEqualsToken : Case SyntaxKind.GreaterThanEqualsToken Case Else Throw new ArgumentException("operatorToken") End Select if value Is Nothing Then Throw New ArgumentNullException(NameOf(value)) End If Select Case value.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("value") End Select Return New RelationalCaseClauseSyntax(SyntaxKind.CaseEqualsClause, Nothing, Nothing, DirectCast(isKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(operatorToken.Node, InternalSyntax.PunctuationSyntax), value) End Function ''' <summary> ''' Represents a relation clause in a Case statement, such as "Is > expression". ''' </summary> ''' <param name="value"> ''' The expression that denotes the value being tested against. ''' </param> Public Shared Function CaseEqualsClause(value As ExpressionSyntax) As RelationalCaseClauseSyntax Return SyntaxFactory.CaseEqualsClause(Nothing, SyntaxFactory.Token(SyntaxKind.EqualsToken), value) End Function ''' <summary> ''' Represents a relation clause in a Case statement, such as "Is > expression". ''' </summary> ''' <param name="isKeyword"> ''' The "Is" keyword, if present. ''' </param> ''' <param name="operatorToken"> ''' The operator in the relational clause. One of "=", "<", ">", "<=" or ''' ">=". ''' </param> ''' <param name="value"> ''' The expression that denotes the value being tested against. ''' </param> Public Shared Function CaseNotEqualsClause(isKeyword As SyntaxToken, operatorToken As SyntaxToken, value As ExpressionSyntax) As RelationalCaseClauseSyntax Select Case operatorToken.Kind() Case SyntaxKind.LessThanGreaterThanToken Case Else Throw new ArgumentException("operatorToken") End Select if value Is Nothing Then Throw New ArgumentNullException(NameOf(value)) End If Select Case value.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("value") End Select Return New RelationalCaseClauseSyntax(SyntaxKind.CaseNotEqualsClause, Nothing, Nothing, DirectCast(isKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(operatorToken.Node, InternalSyntax.PunctuationSyntax), value) End Function ''' <summary> ''' Represents a relation clause in a Case statement, such as "Is > expression". ''' </summary> ''' <param name="value"> ''' The expression that denotes the value being tested against. ''' </param> Public Shared Function CaseNotEqualsClause(value As ExpressionSyntax) As RelationalCaseClauseSyntax Return SyntaxFactory.CaseNotEqualsClause(Nothing, SyntaxFactory.Token(SyntaxKind.LessThanGreaterThanToken), value) End Function ''' <summary> ''' Represents a relation clause in a Case statement, such as "Is > expression". ''' </summary> ''' <param name="isKeyword"> ''' The "Is" keyword, if present. ''' </param> ''' <param name="operatorToken"> ''' The operator in the relational clause. One of "=", "<", ">", "<=" or ''' ">=". ''' </param> ''' <param name="value"> ''' The expression that denotes the value being tested against. ''' </param> Public Shared Function CaseLessThanClause(isKeyword As SyntaxToken, operatorToken As SyntaxToken, value As ExpressionSyntax) As RelationalCaseClauseSyntax Select Case operatorToken.Kind() Case SyntaxKind.LessThanToken Case Else Throw new ArgumentException("operatorToken") End Select if value Is Nothing Then Throw New ArgumentNullException(NameOf(value)) End If Select Case value.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("value") End Select Return New RelationalCaseClauseSyntax(SyntaxKind.CaseLessThanClause, Nothing, Nothing, DirectCast(isKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(operatorToken.Node, InternalSyntax.PunctuationSyntax), value) End Function ''' <summary> ''' Represents a relation clause in a Case statement, such as "Is > expression". ''' </summary> ''' <param name="value"> ''' The expression that denotes the value being tested against. ''' </param> Public Shared Function CaseLessThanClause(value As ExpressionSyntax) As RelationalCaseClauseSyntax Return SyntaxFactory.CaseLessThanClause(Nothing, SyntaxFactory.Token(SyntaxKind.LessThanToken), value) End Function ''' <summary> ''' Represents a relation clause in a Case statement, such as "Is > expression". ''' </summary> ''' <param name="isKeyword"> ''' The "Is" keyword, if present. ''' </param> ''' <param name="operatorToken"> ''' The operator in the relational clause. One of "=", "<", ">", "<=" or ''' ">=". ''' </param> ''' <param name="value"> ''' The expression that denotes the value being tested against. ''' </param> Public Shared Function CaseLessThanOrEqualClause(isKeyword As SyntaxToken, operatorToken As SyntaxToken, value As ExpressionSyntax) As RelationalCaseClauseSyntax Select Case operatorToken.Kind() Case SyntaxKind.LessThanEqualsToken Case Else Throw new ArgumentException("operatorToken") End Select if value Is Nothing Then Throw New ArgumentNullException(NameOf(value)) End If Select Case value.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("value") End Select Return New RelationalCaseClauseSyntax(SyntaxKind.CaseLessThanOrEqualClause, Nothing, Nothing, DirectCast(isKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(operatorToken.Node, InternalSyntax.PunctuationSyntax), value) End Function ''' <summary> ''' Represents a relation clause in a Case statement, such as "Is > expression". ''' </summary> ''' <param name="value"> ''' The expression that denotes the value being tested against. ''' </param> Public Shared Function CaseLessThanOrEqualClause(value As ExpressionSyntax) As RelationalCaseClauseSyntax Return SyntaxFactory.CaseLessThanOrEqualClause(Nothing, SyntaxFactory.Token(SyntaxKind.LessThanEqualsToken), value) End Function ''' <summary> ''' Represents a relation clause in a Case statement, such as "Is > expression". ''' </summary> ''' <param name="isKeyword"> ''' The "Is" keyword, if present. ''' </param> ''' <param name="operatorToken"> ''' The operator in the relational clause. One of "=", "<", ">", "<=" or ''' ">=". ''' </param> ''' <param name="value"> ''' The expression that denotes the value being tested against. ''' </param> Public Shared Function CaseGreaterThanOrEqualClause(isKeyword As SyntaxToken, operatorToken As SyntaxToken, value As ExpressionSyntax) As RelationalCaseClauseSyntax Select Case operatorToken.Kind() Case SyntaxKind.GreaterThanEqualsToken Case Else Throw new ArgumentException("operatorToken") End Select if value Is Nothing Then Throw New ArgumentNullException(NameOf(value)) End If Select Case value.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("value") End Select Return New RelationalCaseClauseSyntax(SyntaxKind.CaseGreaterThanOrEqualClause, Nothing, Nothing, DirectCast(isKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(operatorToken.Node, InternalSyntax.PunctuationSyntax), value) End Function ''' <summary> ''' Represents a relation clause in a Case statement, such as "Is > expression". ''' </summary> ''' <param name="value"> ''' The expression that denotes the value being tested against. ''' </param> Public Shared Function CaseGreaterThanOrEqualClause(value As ExpressionSyntax) As RelationalCaseClauseSyntax Return SyntaxFactory.CaseGreaterThanOrEqualClause(Nothing, SyntaxFactory.Token(SyntaxKind.GreaterThanEqualsToken), value) End Function ''' <summary> ''' Represents a relation clause in a Case statement, such as "Is > expression". ''' </summary> ''' <param name="isKeyword"> ''' The "Is" keyword, if present. ''' </param> ''' <param name="operatorToken"> ''' The operator in the relational clause. One of "=", "<", ">", "<=" or ''' ">=". ''' </param> ''' <param name="value"> ''' The expression that denotes the value being tested against. ''' </param> Public Shared Function CaseGreaterThanClause(isKeyword As SyntaxToken, operatorToken As SyntaxToken, value As ExpressionSyntax) As RelationalCaseClauseSyntax Select Case operatorToken.Kind() Case SyntaxKind.GreaterThanToken Case Else Throw new ArgumentException("operatorToken") End Select if value Is Nothing Then Throw New ArgumentNullException(NameOf(value)) End If Select Case value.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("value") End Select Return New RelationalCaseClauseSyntax(SyntaxKind.CaseGreaterThanClause, Nothing, Nothing, DirectCast(isKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(operatorToken.Node, InternalSyntax.PunctuationSyntax), value) End Function ''' <summary> ''' Represents a relation clause in a Case statement, such as "Is > expression". ''' </summary> ''' <param name="value"> ''' The expression that denotes the value being tested against. ''' </param> Public Shared Function CaseGreaterThanClause(value As ExpressionSyntax) As RelationalCaseClauseSyntax Return SyntaxFactory.CaseGreaterThanClause(Nothing, SyntaxFactory.Token(SyntaxKind.GreaterThanToken), value) End Function ''' <summary> ''' Represents a relation clause in a Case statement, such as "Is > expression". ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' RelationalCaseClauseSyntax. One of CaseEqualsClause, CaseNotEqualsClause, ''' CaseLessThanClause, CaseLessThanOrEqualClause, CaseGreaterThanOrEqualClause, ''' CaseGreaterThanClause. ''' </param> ''' <param name="isKeyword"> ''' The "Is" keyword, if present. ''' </param> ''' <param name="operatorToken"> ''' The operator in the relational clause. One of "=", "<", ">", "<=" or ''' ">=". ''' </param> ''' <param name="value"> ''' The expression that denotes the value being tested against. ''' </param> Public Shared Function RelationalCaseClause(ByVal kind As SyntaxKind, isKeyword As SyntaxToken, operatorToken As SyntaxToken, value As ExpressionSyntax) As RelationalCaseClauseSyntax If Not SyntaxFacts.IsRelationalCaseClause(kind) Then Throw New ArgumentException("kind") End If If (Not operatorToken.IsKind(GetRelationalCaseClauseOperatorTokenKind(kind))) Then Throw new ArgumentException("operatorToken") End If if value Is Nothing Then Throw New ArgumentNullException(NameOf(value)) End If Select Case value.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("value") End Select Return New RelationalCaseClauseSyntax(kind, Nothing, Nothing, DirectCast(isKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(operatorToken.Node, InternalSyntax.PunctuationSyntax), value) End Function Private Shared Function GetRelationalCaseClauseOperatorTokenKind(kind As SyntaxKind) As SyntaxKind Select Case kind Case SyntaxKind.CaseEqualsClause Return SyntaxKind.EqualsToken Case SyntaxKind.CaseNotEqualsClause Return SyntaxKind.LessThanGreaterThanToken Case SyntaxKind.CaseLessThanClause Return SyntaxKind.LessThanToken Case SyntaxKind.CaseLessThanOrEqualClause Return SyntaxKind.LessThanEqualsToken Case SyntaxKind.CaseGreaterThanOrEqualClause Return SyntaxKind.GreaterThanEqualsToken Case SyntaxKind.CaseGreaterThanClause Return SyntaxKind.GreaterThanToken Case Else Throw New ArgumentException("OperatorToken") End Select End Function ''' <summary> ''' Represents a relation clause in a Case statement, such as "Is > expression". ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' RelationalCaseClauseSyntax. One of CaseEqualsClause, CaseNotEqualsClause, ''' CaseLessThanClause, CaseLessThanOrEqualClause, CaseGreaterThanOrEqualClause, ''' CaseGreaterThanClause. ''' </param> ''' <param name="operatorToken"> ''' The operator in the relational clause. One of "=", "<", ">", "<=" or ''' ">=". ''' </param> ''' <param name="value"> ''' The expression that denotes the value being tested against. ''' </param> Public Shared Function RelationalCaseClause(ByVal kind As SyntaxKind, operatorToken As SyntaxToken, value As ExpressionSyntax) As RelationalCaseClauseSyntax Return SyntaxFactory.RelationalCaseClause(kind, Nothing, operatorToken, value) End Function ''' <summary> ''' Represents the "SyncLock" statement. This statement always occurs as the Begin ''' of a SyncLockBlock. ''' </summary> ''' <param name="syncLockKeyword"> ''' The "SyncLock" keyword. ''' </param> ''' <param name="expression"> ''' The expression being synchronized on. ''' </param> Public Shared Function SyncLockStatement(syncLockKeyword As SyntaxToken, expression As ExpressionSyntax) As SyncLockStatementSyntax Select Case syncLockKeyword.Kind() Case SyntaxKind.SyncLockKeyword Case Else Throw new ArgumentException("syncLockKeyword") End Select if expression Is Nothing Then Throw New ArgumentNullException(NameOf(expression)) End If Select Case expression.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("expression") End Select Return New SyncLockStatementSyntax(SyntaxKind.SyncLockStatement, Nothing, Nothing, DirectCast(syncLockKeyword.Node, InternalSyntax.KeywordSyntax), expression) End Function ''' <summary> ''' Represents the "SyncLock" statement. This statement always occurs as the Begin ''' of a SyncLockBlock. ''' </summary> ''' <param name="expression"> ''' The expression being synchronized on. ''' </param> Public Shared Function SyncLockStatement(expression As ExpressionSyntax) As SyncLockStatementSyntax Return SyntaxFactory.SyncLockStatement(SyntaxFactory.Token(SyntaxKind.SyncLockKeyword), expression) End Function ''' <summary> ''' Represents a Do-Loop block. The Kind property can be used to determine if this ''' is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. ''' </summary> ''' <param name="doStatement"> ''' The Do statement that begins the block. ''' </param> ''' <param name="statements"> ''' The statements contained in the block statement. This might be an empty list. ''' </param> ''' <param name="loopStatement"> ''' The Loop statement that ends the block. ''' </param> Public Shared Function SimpleDoLoopBlock(doStatement As DoStatementSyntax, statements As SyntaxList(of StatementSyntax), loopStatement As LoopStatementSyntax) As DoLoopBlockSyntax if doStatement Is Nothing Then Throw New ArgumentNullException(NameOf(doStatement)) End If Select Case doStatement.Kind() Case SyntaxKind.SimpleDoStatement, SyntaxKind.DoWhileStatement, SyntaxKind.DoUntilStatement Case Else Throw new ArgumentException("doStatement") End Select if loopStatement Is Nothing Then Throw New ArgumentNullException(NameOf(loopStatement)) End If Select Case loopStatement.Kind() Case SyntaxKind.SimpleLoopStatement, SyntaxKind.LoopWhileStatement, SyntaxKind.LoopUntilStatement Case Else Throw new ArgumentException("loopStatement") End Select Return New DoLoopBlockSyntax(SyntaxKind.SimpleDoLoopBlock, Nothing, Nothing, doStatement, statements.Node, loopStatement) End Function ''' <summary> ''' Represents a Do-Loop block. The Kind property can be used to determine if this ''' is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. ''' </summary> ''' <param name="doStatement"> ''' The Do statement that begins the block. ''' </param> ''' <param name="loopStatement"> ''' The Loop statement that ends the block. ''' </param> Public Shared Function SimpleDoLoopBlock(doStatement As DoStatementSyntax, loopStatement As LoopStatementSyntax) As DoLoopBlockSyntax Return SyntaxFactory.SimpleDoLoopBlock(doStatement, Nothing, loopStatement) End Function ''' <summary> ''' Represents a Do-Loop block. The Kind property can be used to determine if this ''' is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. ''' </summary> ''' <param name="doStatement"> ''' The Do statement that begins the block. ''' </param> ''' <param name="statements"> ''' The statements contained in the block statement. This might be an empty list. ''' </param> ''' <param name="loopStatement"> ''' The Loop statement that ends the block. ''' </param> Public Shared Function DoWhileLoopBlock(doStatement As DoStatementSyntax, statements As SyntaxList(of StatementSyntax), loopStatement As LoopStatementSyntax) As DoLoopBlockSyntax if doStatement Is Nothing Then Throw New ArgumentNullException(NameOf(doStatement)) End If Select Case doStatement.Kind() Case SyntaxKind.DoWhileStatement Case Else Throw new ArgumentException("doStatement") End Select if loopStatement Is Nothing Then Throw New ArgumentNullException(NameOf(loopStatement)) End If Select Case loopStatement.Kind() Case SyntaxKind.SimpleLoopStatement Case Else Throw new ArgumentException("loopStatement") End Select Return New DoLoopBlockSyntax(SyntaxKind.DoWhileLoopBlock, Nothing, Nothing, doStatement, statements.Node, loopStatement) End Function ''' <summary> ''' Represents a Do-Loop block. The Kind property can be used to determine if this ''' is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. ''' </summary> ''' <param name="doStatement"> ''' The Do statement that begins the block. ''' </param> ''' <param name="loopStatement"> ''' The Loop statement that ends the block. ''' </param> Public Shared Function DoWhileLoopBlock(doStatement As DoStatementSyntax, loopStatement As LoopStatementSyntax) As DoLoopBlockSyntax Return SyntaxFactory.DoWhileLoopBlock(doStatement, Nothing, loopStatement) End Function ''' <summary> ''' Represents a Do-Loop block. The Kind property can be used to determine if this ''' is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. ''' </summary> ''' <param name="doStatement"> ''' The Do statement that begins the block. ''' </param> ''' <param name="statements"> ''' The statements contained in the block statement. This might be an empty list. ''' </param> ''' <param name="loopStatement"> ''' The Loop statement that ends the block. ''' </param> Public Shared Function DoUntilLoopBlock(doStatement As DoStatementSyntax, statements As SyntaxList(of StatementSyntax), loopStatement As LoopStatementSyntax) As DoLoopBlockSyntax if doStatement Is Nothing Then Throw New ArgumentNullException(NameOf(doStatement)) End If Select Case doStatement.Kind() Case SyntaxKind.DoUntilStatement Case Else Throw new ArgumentException("doStatement") End Select if loopStatement Is Nothing Then Throw New ArgumentNullException(NameOf(loopStatement)) End If Select Case loopStatement.Kind() Case SyntaxKind.SimpleLoopStatement Case Else Throw new ArgumentException("loopStatement") End Select Return New DoLoopBlockSyntax(SyntaxKind.DoUntilLoopBlock, Nothing, Nothing, doStatement, statements.Node, loopStatement) End Function ''' <summary> ''' Represents a Do-Loop block. The Kind property can be used to determine if this ''' is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. ''' </summary> ''' <param name="doStatement"> ''' The Do statement that begins the block. ''' </param> ''' <param name="loopStatement"> ''' The Loop statement that ends the block. ''' </param> Public Shared Function DoUntilLoopBlock(doStatement As DoStatementSyntax, loopStatement As LoopStatementSyntax) As DoLoopBlockSyntax Return SyntaxFactory.DoUntilLoopBlock(doStatement, Nothing, loopStatement) End Function ''' <summary> ''' Represents a Do-Loop block. The Kind property can be used to determine if this ''' is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. ''' </summary> ''' <param name="doStatement"> ''' The Do statement that begins the block. ''' </param> ''' <param name="statements"> ''' The statements contained in the block statement. This might be an empty list. ''' </param> ''' <param name="loopStatement"> ''' The Loop statement that ends the block. ''' </param> Public Shared Function DoLoopWhileBlock(doStatement As DoStatementSyntax, statements As SyntaxList(of StatementSyntax), loopStatement As LoopStatementSyntax) As DoLoopBlockSyntax if doStatement Is Nothing Then Throw New ArgumentNullException(NameOf(doStatement)) End If Select Case doStatement.Kind() Case SyntaxKind.SimpleDoStatement Case Else Throw new ArgumentException("doStatement") End Select if loopStatement Is Nothing Then Throw New ArgumentNullException(NameOf(loopStatement)) End If Select Case loopStatement.Kind() Case SyntaxKind.LoopWhileStatement Case Else Throw new ArgumentException("loopStatement") End Select Return New DoLoopBlockSyntax(SyntaxKind.DoLoopWhileBlock, Nothing, Nothing, doStatement, statements.Node, loopStatement) End Function ''' <summary> ''' Represents a Do-Loop block. The Kind property can be used to determine if this ''' is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. ''' </summary> ''' <param name="doStatement"> ''' The Do statement that begins the block. ''' </param> ''' <param name="loopStatement"> ''' The Loop statement that ends the block. ''' </param> Public Shared Function DoLoopWhileBlock(doStatement As DoStatementSyntax, loopStatement As LoopStatementSyntax) As DoLoopBlockSyntax Return SyntaxFactory.DoLoopWhileBlock(doStatement, Nothing, loopStatement) End Function ''' <summary> ''' Represents a Do-Loop block. The Kind property can be used to determine if this ''' is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. ''' </summary> ''' <param name="doStatement"> ''' The Do statement that begins the block. ''' </param> ''' <param name="statements"> ''' The statements contained in the block statement. This might be an empty list. ''' </param> ''' <param name="loopStatement"> ''' The Loop statement that ends the block. ''' </param> Public Shared Function DoLoopUntilBlock(doStatement As DoStatementSyntax, statements As SyntaxList(of StatementSyntax), loopStatement As LoopStatementSyntax) As DoLoopBlockSyntax if doStatement Is Nothing Then Throw New ArgumentNullException(NameOf(doStatement)) End If Select Case doStatement.Kind() Case SyntaxKind.SimpleDoStatement Case Else Throw new ArgumentException("doStatement") End Select if loopStatement Is Nothing Then Throw New ArgumentNullException(NameOf(loopStatement)) End If Select Case loopStatement.Kind() Case SyntaxKind.LoopUntilStatement Case Else Throw new ArgumentException("loopStatement") End Select Return New DoLoopBlockSyntax(SyntaxKind.DoLoopUntilBlock, Nothing, Nothing, doStatement, statements.Node, loopStatement) End Function ''' <summary> ''' Represents a Do-Loop block. The Kind property can be used to determine if this ''' is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. ''' </summary> ''' <param name="doStatement"> ''' The Do statement that begins the block. ''' </param> ''' <param name="loopStatement"> ''' The Loop statement that ends the block. ''' </param> Public Shared Function DoLoopUntilBlock(doStatement As DoStatementSyntax, loopStatement As LoopStatementSyntax) As DoLoopBlockSyntax Return SyntaxFactory.DoLoopUntilBlock(doStatement, Nothing, loopStatement) End Function ''' <summary> ''' Represents a Do-Loop block. The Kind property can be used to determine if this ''' is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of DoLoopBlockSyntax. ''' One of SimpleDoLoopBlock, DoWhileLoopBlock, DoUntilLoopBlock, DoLoopWhileBlock, ''' DoLoopUntilBlock. ''' </param> ''' <param name="doStatement"> ''' The Do statement that begins the block. ''' </param> ''' <param name="statements"> ''' The statements contained in the block statement. This might be an empty list. ''' </param> ''' <param name="loopStatement"> ''' The Loop statement that ends the block. ''' </param> Public Shared Function DoLoopBlock(ByVal kind As SyntaxKind, doStatement As DoStatementSyntax, statements As SyntaxList(of StatementSyntax), loopStatement As LoopStatementSyntax) As DoLoopBlockSyntax If Not SyntaxFacts.IsDoLoopBlock(kind) Then Throw New ArgumentException("kind") End If if doStatement Is Nothing Then Throw New ArgumentNullException(NameOf(doStatement)) End If If (Not doStatement.IsKind(GetDoLoopBlockDoStatementKind(kind))) Then Throw new ArgumentException("doStatement") End If if loopStatement Is Nothing Then Throw New ArgumentNullException(NameOf(loopStatement)) End If If (Not loopStatement.IsKind(GetDoLoopBlockLoopStatementKind(kind))) Then Throw new ArgumentException("loopStatement") End If Return New DoLoopBlockSyntax(kind, Nothing, Nothing, doStatement, statements.Node, loopStatement) End Function Private Shared Function GetDoLoopBlockDoStatementKind(kind As SyntaxKind) As SyntaxKind Select Case kind Case SyntaxKind.SimpleDoLoopBlock Return SyntaxKind.SimpleDoStatement Case SyntaxKind.DoWhileLoopBlock Return SyntaxKind.DoWhileStatement Case SyntaxKind.DoUntilLoopBlock Return SyntaxKind.DoUntilStatement Case SyntaxKind.DoLoopWhileBlock Return SyntaxKind.SimpleDoStatement Case SyntaxKind.DoLoopUntilBlock Return SyntaxKind.SimpleDoStatement Case Else Throw New ArgumentException("DoStatement") End Select End Function Private Shared Function GetDoLoopBlockLoopStatementKind(kind As SyntaxKind) As SyntaxKind Select Case kind Case SyntaxKind.SimpleDoLoopBlock Return SyntaxKind.SimpleLoopStatement Case SyntaxKind.DoWhileLoopBlock Return SyntaxKind.SimpleLoopStatement Case SyntaxKind.DoUntilLoopBlock Return SyntaxKind.SimpleLoopStatement Case SyntaxKind.DoLoopWhileBlock Return SyntaxKind.LoopWhileStatement Case SyntaxKind.DoLoopUntilBlock Return SyntaxKind.LoopUntilStatement Case Else Throw New ArgumentException("LoopStatement") End Select End Function ''' <summary> ''' Represents a Do-Loop block. The Kind property can be used to determine if this ''' is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of DoLoopBlockSyntax. ''' One of SimpleDoLoopBlock, DoWhileLoopBlock, DoUntilLoopBlock, DoLoopWhileBlock, ''' DoLoopUntilBlock. ''' </param> ''' <param name="doStatement"> ''' The Do statement that begins the block. ''' </param> ''' <param name="loopStatement"> ''' The Loop statement that ends the block. ''' </param> Public Shared Function DoLoopBlock(ByVal kind As SyntaxKind, doStatement As DoStatementSyntax, loopStatement As LoopStatementSyntax) As DoLoopBlockSyntax Return SyntaxFactory.DoLoopBlock(kind, doStatement, Nothing, loopStatement) End Function ''' <summary> ''' The Do statement that begins a Do-Loop block. ''' </summary> ''' <param name="doKeyword"> ''' The "Do" keyword. ''' </param> ''' <param name="whileOrUntilClause"> ''' The "While expression" or "Until expression" clause of the Do statement, if ''' present. ''' </param> Public Shared Function SimpleDoStatement(doKeyword As SyntaxToken, whileOrUntilClause As WhileOrUntilClauseSyntax) As DoStatementSyntax Select Case doKeyword.Kind() Case SyntaxKind.DoKeyword Case Else Throw new ArgumentException("doKeyword") End Select Return New DoStatementSyntax(SyntaxKind.SimpleDoStatement, Nothing, Nothing, DirectCast(doKeyword.Node, InternalSyntax.KeywordSyntax), whileOrUntilClause) End Function ''' <summary> ''' The Do statement that begins a Do-Loop block. ''' </summary> ''' <param name="whileOrUntilClause"> ''' The "While expression" or "Until expression" clause of the Do statement, if ''' present. ''' </param> Public Shared Function SimpleDoStatement(whileOrUntilClause As WhileOrUntilClauseSyntax) As DoStatementSyntax Return SyntaxFactory.SimpleDoStatement(SyntaxFactory.Token(SyntaxKind.DoKeyword), whileOrUntilClause) End Function ''' <summary> ''' The Do statement that begins a Do-Loop block. ''' </summary> Public Shared Function SimpleDoStatement() As DoStatementSyntax Return SyntaxFactory.SimpleDoStatement(SyntaxFactory.Token(SyntaxKind.DoKeyword), Nothing) End Function ''' <summary> ''' The Do statement that begins a Do-Loop block. ''' </summary> ''' <param name="doKeyword"> ''' The "Do" keyword. ''' </param> ''' <param name="whileOrUntilClause"> ''' The "While expression" or "Until expression" clause of the Do statement, if ''' present. ''' </param> Public Shared Function DoWhileStatement(doKeyword As SyntaxToken, whileOrUntilClause As WhileOrUntilClauseSyntax) As DoStatementSyntax Select Case doKeyword.Kind() Case SyntaxKind.DoKeyword Case Else Throw new ArgumentException("doKeyword") End Select Return New DoStatementSyntax(SyntaxKind.DoWhileStatement, Nothing, Nothing, DirectCast(doKeyword.Node, InternalSyntax.KeywordSyntax), whileOrUntilClause) End Function ''' <summary> ''' The Do statement that begins a Do-Loop block. ''' </summary> ''' <param name="whileOrUntilClause"> ''' The "While expression" or "Until expression" clause of the Do statement, if ''' present. ''' </param> Public Shared Function DoWhileStatement(whileOrUntilClause As WhileOrUntilClauseSyntax) As DoStatementSyntax Return SyntaxFactory.DoWhileStatement(SyntaxFactory.Token(SyntaxKind.DoKeyword), whileOrUntilClause) End Function ''' <summary> ''' The Do statement that begins a Do-Loop block. ''' </summary> Public Shared Function DoWhileStatement() As DoStatementSyntax Return SyntaxFactory.DoWhileStatement(SyntaxFactory.Token(SyntaxKind.DoKeyword), Nothing) End Function ''' <summary> ''' The Do statement that begins a Do-Loop block. ''' </summary> ''' <param name="doKeyword"> ''' The "Do" keyword. ''' </param> ''' <param name="whileOrUntilClause"> ''' The "While expression" or "Until expression" clause of the Do statement, if ''' present. ''' </param> Public Shared Function DoUntilStatement(doKeyword As SyntaxToken, whileOrUntilClause As WhileOrUntilClauseSyntax) As DoStatementSyntax Select Case doKeyword.Kind() Case SyntaxKind.DoKeyword Case Else Throw new ArgumentException("doKeyword") End Select Return New DoStatementSyntax(SyntaxKind.DoUntilStatement, Nothing, Nothing, DirectCast(doKeyword.Node, InternalSyntax.KeywordSyntax), whileOrUntilClause) End Function ''' <summary> ''' The Do statement that begins a Do-Loop block. ''' </summary> ''' <param name="whileOrUntilClause"> ''' The "While expression" or "Until expression" clause of the Do statement, if ''' present. ''' </param> Public Shared Function DoUntilStatement(whileOrUntilClause As WhileOrUntilClauseSyntax) As DoStatementSyntax Return SyntaxFactory.DoUntilStatement(SyntaxFactory.Token(SyntaxKind.DoKeyword), whileOrUntilClause) End Function ''' <summary> ''' The Do statement that begins a Do-Loop block. ''' </summary> Public Shared Function DoUntilStatement() As DoStatementSyntax Return SyntaxFactory.DoUntilStatement(SyntaxFactory.Token(SyntaxKind.DoKeyword), Nothing) End Function ''' <summary> ''' The Do statement that begins a Do-Loop block. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of DoStatementSyntax. ''' One of SimpleDoStatement, DoWhileStatement, DoUntilStatement. ''' </param> ''' <param name="doKeyword"> ''' The "Do" keyword. ''' </param> ''' <param name="whileOrUntilClause"> ''' The "While expression" or "Until expression" clause of the Do statement, if ''' present. ''' </param> Public Shared Function DoStatement(ByVal kind As SyntaxKind, doKeyword As SyntaxToken, whileOrUntilClause As WhileOrUntilClauseSyntax) As DoStatementSyntax If Not SyntaxFacts.IsDoStatement(kind) Then Throw New ArgumentException("kind") End If Select Case doKeyword.Kind() Case SyntaxKind.DoKeyword Case Else Throw new ArgumentException("doKeyword") End Select Return New DoStatementSyntax(kind, Nothing, Nothing, DirectCast(doKeyword.Node, InternalSyntax.KeywordSyntax), whileOrUntilClause) End Function Private Shared Function GetDoStatementWhileOrUntilClauseKind(kind As SyntaxKind) As SyntaxKind Select Case kind Case SyntaxKind.DoWhileStatement Return SyntaxKind.WhileClause Case SyntaxKind.DoUntilStatement Return SyntaxKind.UntilClause Case Else Throw New ArgumentException("WhileOrUntilClause") End Select End Function ''' <summary> ''' The Do statement that begins a Do-Loop block. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of DoStatementSyntax. ''' One of SimpleDoStatement, DoWhileStatement, DoUntilStatement. ''' </param> ''' <param name="whileOrUntilClause"> ''' The "While expression" or "Until expression" clause of the Do statement, if ''' present. ''' </param> Public Shared Function DoStatement(ByVal kind As SyntaxKind, whileOrUntilClause As WhileOrUntilClauseSyntax) As DoStatementSyntax Return SyntaxFactory.DoStatement(kind, SyntaxFactory.Token(SyntaxKind.DoKeyword), whileOrUntilClause) End Function ''' <summary> ''' The Do statement that begins a Do-Loop block. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of DoStatementSyntax. ''' One of SimpleDoStatement, DoWhileStatement, DoUntilStatement. ''' </param> Public Shared Function DoStatement(ByVal kind As SyntaxKind) As DoStatementSyntax Return SyntaxFactory.DoStatement(kind, SyntaxFactory.Token(SyntaxKind.DoKeyword), Nothing) End Function ''' <summary> ''' The Loop statement that begins a Do-Loop block. ''' </summary> ''' <param name="loopKeyword"> ''' The "Loop" keyword. ''' </param> ''' <param name="whileOrUntilClause"> ''' The "While expression" or "Until expression" clause of the Loop statement, if ''' present. ''' </param> Public Shared Function SimpleLoopStatement(loopKeyword As SyntaxToken, whileOrUntilClause As WhileOrUntilClauseSyntax) As LoopStatementSyntax Select Case loopKeyword.Kind() Case SyntaxKind.LoopKeyword Case Else Throw new ArgumentException("loopKeyword") End Select Return New LoopStatementSyntax(SyntaxKind.SimpleLoopStatement, Nothing, Nothing, DirectCast(loopKeyword.Node, InternalSyntax.KeywordSyntax), whileOrUntilClause) End Function ''' <summary> ''' The Loop statement that begins a Do-Loop block. ''' </summary> ''' <param name="whileOrUntilClause"> ''' The "While expression" or "Until expression" clause of the Loop statement, if ''' present. ''' </param> Public Shared Function SimpleLoopStatement(whileOrUntilClause As WhileOrUntilClauseSyntax) As LoopStatementSyntax Return SyntaxFactory.SimpleLoopStatement(SyntaxFactory.Token(SyntaxKind.LoopKeyword), whileOrUntilClause) End Function ''' <summary> ''' The Loop statement that begins a Do-Loop block. ''' </summary> Public Shared Function SimpleLoopStatement() As LoopStatementSyntax Return SyntaxFactory.SimpleLoopStatement(SyntaxFactory.Token(SyntaxKind.LoopKeyword), Nothing) End Function ''' <summary> ''' The Loop statement that begins a Do-Loop block. ''' </summary> ''' <param name="loopKeyword"> ''' The "Loop" keyword. ''' </param> ''' <param name="whileOrUntilClause"> ''' The "While expression" or "Until expression" clause of the Loop statement, if ''' present. ''' </param> Public Shared Function LoopWhileStatement(loopKeyword As SyntaxToken, whileOrUntilClause As WhileOrUntilClauseSyntax) As LoopStatementSyntax Select Case loopKeyword.Kind() Case SyntaxKind.LoopKeyword Case Else Throw new ArgumentException("loopKeyword") End Select Return New LoopStatementSyntax(SyntaxKind.LoopWhileStatement, Nothing, Nothing, DirectCast(loopKeyword.Node, InternalSyntax.KeywordSyntax), whileOrUntilClause) End Function ''' <summary> ''' The Loop statement that begins a Do-Loop block. ''' </summary> ''' <param name="whileOrUntilClause"> ''' The "While expression" or "Until expression" clause of the Loop statement, if ''' present. ''' </param> Public Shared Function LoopWhileStatement(whileOrUntilClause As WhileOrUntilClauseSyntax) As LoopStatementSyntax Return SyntaxFactory.LoopWhileStatement(SyntaxFactory.Token(SyntaxKind.LoopKeyword), whileOrUntilClause) End Function ''' <summary> ''' The Loop statement that begins a Do-Loop block. ''' </summary> Public Shared Function LoopWhileStatement() As LoopStatementSyntax Return SyntaxFactory.LoopWhileStatement(SyntaxFactory.Token(SyntaxKind.LoopKeyword), Nothing) End Function ''' <summary> ''' The Loop statement that begins a Do-Loop block. ''' </summary> ''' <param name="loopKeyword"> ''' The "Loop" keyword. ''' </param> ''' <param name="whileOrUntilClause"> ''' The "While expression" or "Until expression" clause of the Loop statement, if ''' present. ''' </param> Public Shared Function LoopUntilStatement(loopKeyword As SyntaxToken, whileOrUntilClause As WhileOrUntilClauseSyntax) As LoopStatementSyntax Select Case loopKeyword.Kind() Case SyntaxKind.LoopKeyword Case Else Throw new ArgumentException("loopKeyword") End Select Return New LoopStatementSyntax(SyntaxKind.LoopUntilStatement, Nothing, Nothing, DirectCast(loopKeyword.Node, InternalSyntax.KeywordSyntax), whileOrUntilClause) End Function ''' <summary> ''' The Loop statement that begins a Do-Loop block. ''' </summary> ''' <param name="whileOrUntilClause"> ''' The "While expression" or "Until expression" clause of the Loop statement, if ''' present. ''' </param> Public Shared Function LoopUntilStatement(whileOrUntilClause As WhileOrUntilClauseSyntax) As LoopStatementSyntax Return SyntaxFactory.LoopUntilStatement(SyntaxFactory.Token(SyntaxKind.LoopKeyword), whileOrUntilClause) End Function ''' <summary> ''' The Loop statement that begins a Do-Loop block. ''' </summary> Public Shared Function LoopUntilStatement() As LoopStatementSyntax Return SyntaxFactory.LoopUntilStatement(SyntaxFactory.Token(SyntaxKind.LoopKeyword), Nothing) End Function ''' <summary> ''' The Loop statement that begins a Do-Loop block. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' LoopStatementSyntax. One of SimpleLoopStatement, LoopWhileStatement, ''' LoopUntilStatement. ''' </param> ''' <param name="loopKeyword"> ''' The "Loop" keyword. ''' </param> ''' <param name="whileOrUntilClause"> ''' The "While expression" or "Until expression" clause of the Loop statement, if ''' present. ''' </param> Public Shared Function LoopStatement(ByVal kind As SyntaxKind, loopKeyword As SyntaxToken, whileOrUntilClause As WhileOrUntilClauseSyntax) As LoopStatementSyntax If Not SyntaxFacts.IsLoopStatement(kind) Then Throw New ArgumentException("kind") End If Select Case loopKeyword.Kind() Case SyntaxKind.LoopKeyword Case Else Throw new ArgumentException("loopKeyword") End Select Return New LoopStatementSyntax(kind, Nothing, Nothing, DirectCast(loopKeyword.Node, InternalSyntax.KeywordSyntax), whileOrUntilClause) End Function Private Shared Function GetLoopStatementWhileOrUntilClauseKind(kind As SyntaxKind) As SyntaxKind Select Case kind Case SyntaxKind.LoopWhileStatement Return SyntaxKind.WhileClause Case SyntaxKind.LoopUntilStatement Return SyntaxKind.UntilClause Case Else Throw New ArgumentException("WhileOrUntilClause") End Select End Function ''' <summary> ''' The Loop statement that begins a Do-Loop block. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' LoopStatementSyntax. One of SimpleLoopStatement, LoopWhileStatement, ''' LoopUntilStatement. ''' </param> ''' <param name="whileOrUntilClause"> ''' The "While expression" or "Until expression" clause of the Loop statement, if ''' present. ''' </param> Public Shared Function LoopStatement(ByVal kind As SyntaxKind, whileOrUntilClause As WhileOrUntilClauseSyntax) As LoopStatementSyntax Return SyntaxFactory.LoopStatement(kind, SyntaxFactory.Token(SyntaxKind.LoopKeyword), whileOrUntilClause) End Function ''' <summary> ''' The Loop statement that begins a Do-Loop block. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' LoopStatementSyntax. One of SimpleLoopStatement, LoopWhileStatement, ''' LoopUntilStatement. ''' </param> Public Shared Function LoopStatement(ByVal kind As SyntaxKind) As LoopStatementSyntax Return SyntaxFactory.LoopStatement(kind, SyntaxFactory.Token(SyntaxKind.LoopKeyword), Nothing) End Function ''' <summary> ''' Represents a "While expression" or "Until expression" in a Do or Loop ''' statement. The Kind of the clause can be "WhileClause" or "UntilClause" to ''' indicate which kind of clause. ''' </summary> ''' <param name="whileOrUntilKeyword"> ''' The "While" or "Until" keyword. ''' </param> ''' <param name="condition"> ''' The boolean expression after the While or Until. ''' </param> Public Shared Function WhileClause(whileOrUntilKeyword As SyntaxToken, condition As ExpressionSyntax) As WhileOrUntilClauseSyntax Select Case whileOrUntilKeyword.Kind() Case SyntaxKind.WhileKeyword Case Else Throw new ArgumentException("whileOrUntilKeyword") End Select if condition Is Nothing Then Throw New ArgumentNullException(NameOf(condition)) End If Select Case condition.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("condition") End Select Return New WhileOrUntilClauseSyntax(SyntaxKind.WhileClause, Nothing, Nothing, DirectCast(whileOrUntilKeyword.Node, InternalSyntax.KeywordSyntax), condition) End Function ''' <summary> ''' Represents a "While expression" or "Until expression" in a Do or Loop ''' statement. The Kind of the clause can be "WhileClause" or "UntilClause" to ''' indicate which kind of clause. ''' </summary> ''' <param name="condition"> ''' The boolean expression after the While or Until. ''' </param> Public Shared Function WhileClause(condition As ExpressionSyntax) As WhileOrUntilClauseSyntax Return SyntaxFactory.WhileClause(SyntaxFactory.Token(SyntaxKind.WhileKeyword), condition) End Function ''' <summary> ''' Represents a "While expression" or "Until expression" in a Do or Loop ''' statement. The Kind of the clause can be "WhileClause" or "UntilClause" to ''' indicate which kind of clause. ''' </summary> ''' <param name="whileOrUntilKeyword"> ''' The "While" or "Until" keyword. ''' </param> ''' <param name="condition"> ''' The boolean expression after the While or Until. ''' </param> Public Shared Function UntilClause(whileOrUntilKeyword As SyntaxToken, condition As ExpressionSyntax) As WhileOrUntilClauseSyntax Select Case whileOrUntilKeyword.Kind() Case SyntaxKind.UntilKeyword Case Else Throw new ArgumentException("whileOrUntilKeyword") End Select if condition Is Nothing Then Throw New ArgumentNullException(NameOf(condition)) End If Select Case condition.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("condition") End Select Return New WhileOrUntilClauseSyntax(SyntaxKind.UntilClause, Nothing, Nothing, DirectCast(whileOrUntilKeyword.Node, InternalSyntax.KeywordSyntax), condition) End Function ''' <summary> ''' Represents a "While expression" or "Until expression" in a Do or Loop ''' statement. The Kind of the clause can be "WhileClause" or "UntilClause" to ''' indicate which kind of clause. ''' </summary> ''' <param name="condition"> ''' The boolean expression after the While or Until. ''' </param> Public Shared Function UntilClause(condition As ExpressionSyntax) As WhileOrUntilClauseSyntax Return SyntaxFactory.UntilClause(SyntaxFactory.Token(SyntaxKind.UntilKeyword), condition) End Function ''' <summary> ''' Represents a "While expression" or "Until expression" in a Do or Loop ''' statement. The Kind of the clause can be "WhileClause" or "UntilClause" to ''' indicate which kind of clause. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' WhileOrUntilClauseSyntax. One of WhileClause, UntilClause. ''' </param> ''' <param name="whileOrUntilKeyword"> ''' The "While" or "Until" keyword. ''' </param> ''' <param name="condition"> ''' The boolean expression after the While or Until. ''' </param> Public Shared Function WhileOrUntilClause(ByVal kind As SyntaxKind, whileOrUntilKeyword As SyntaxToken, condition As ExpressionSyntax) As WhileOrUntilClauseSyntax If Not SyntaxFacts.IsWhileOrUntilClause(kind) Then Throw New ArgumentException("kind") End If If (Not whileOrUntilKeyword.IsKind(GetWhileOrUntilClauseWhileOrUntilKeywordKind(kind))) Then Throw new ArgumentException("whileOrUntilKeyword") End If if condition Is Nothing Then Throw New ArgumentNullException(NameOf(condition)) End If Select Case condition.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("condition") End Select Return New WhileOrUntilClauseSyntax(kind, Nothing, Nothing, DirectCast(whileOrUntilKeyword.Node, InternalSyntax.KeywordSyntax), condition) End Function Private Shared Function GetWhileOrUntilClauseWhileOrUntilKeywordKind(kind As SyntaxKind) As SyntaxKind Select Case kind Case SyntaxKind.WhileClause Return SyntaxKind.WhileKeyword Case SyntaxKind.UntilClause Return SyntaxKind.UntilKeyword Case Else Throw New ArgumentException("WhileOrUntilKeyword") End Select End Function ''' <summary> ''' The While statement that begins a While...End While block. This statement ''' always occurs as the Begin of a WhileBlock. ''' </summary> ''' <param name="whileKeyword"> ''' The "While" keyword. ''' </param> ''' <param name="condition"> ''' The boolean expression that controls the While loop. ''' </param> Public Shared Function WhileStatement(whileKeyword As SyntaxToken, condition As ExpressionSyntax) As WhileStatementSyntax Select Case whileKeyword.Kind() Case SyntaxKind.WhileKeyword Case Else Throw new ArgumentException("whileKeyword") End Select if condition Is Nothing Then Throw New ArgumentNullException(NameOf(condition)) End If Select Case condition.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("condition") End Select Return New WhileStatementSyntax(SyntaxKind.WhileStatement, Nothing, Nothing, DirectCast(whileKeyword.Node, InternalSyntax.KeywordSyntax), condition) End Function ''' <summary> ''' The While statement that begins a While...End While block. This statement ''' always occurs as the Begin of a WhileBlock. ''' </summary> ''' <param name="condition"> ''' The boolean expression that controls the While loop. ''' </param> Public Shared Function WhileStatement(condition As ExpressionSyntax) As WhileStatementSyntax Return SyntaxFactory.WhileStatement(SyntaxFactory.Token(SyntaxKind.WhileKeyword), condition) End Function ''' <summary> ''' Represents a For block, including the introducing statement, the body and the ''' "Next" (which can be omitted if a containing For has a Next with multiple ''' variables). ''' </summary> ''' <param name="forStatement"> ''' The For statement that begins the block. ''' </param> ''' <param name="statements"> ''' The statements contained in the For or For Each loop. This might be an empty ''' list. ''' </param> ''' <param name="nextStatement"> ''' The Next statement that ends the block. If two For or For Each statements are ''' ended by a single Next statement, the inner For will not have a Next statement. ''' </param> Public Shared Function ForBlock(forStatement As ForStatementSyntax, statements As SyntaxList(of StatementSyntax), nextStatement As NextStatementSyntax) As ForBlockSyntax if forStatement Is Nothing Then Throw New ArgumentNullException(NameOf(forStatement)) End If Select Case forStatement.Kind() Case SyntaxKind.ForStatement Case Else Throw new ArgumentException("forStatement") End Select Return New ForBlockSyntax(SyntaxKind.ForBlock, Nothing, Nothing, forStatement, statements.Node, nextStatement) End Function ''' <summary> ''' Represents a For block, including the introducing statement, the body and the ''' "Next" (which can be omitted if a containing For has a Next with multiple ''' variables). ''' </summary> ''' <param name="forStatement"> ''' The For statement that begins the block. ''' </param> Public Shared Function ForBlock(forStatement As ForStatementSyntax) As ForBlockSyntax Return SyntaxFactory.ForBlock(forStatement, Nothing, Nothing) End Function ''' <summary> ''' Represents a For Each block, including the introducing statement, the body and ''' the "Next" (which can be omitted if a containing For has a Next with multiple ''' variables). ''' </summary> ''' <param name="forEachStatement"> ''' The For Each statement that begins the block. ''' </param> ''' <param name="statements"> ''' The statements contained in the For or For Each loop. This might be an empty ''' list. ''' </param> ''' <param name="nextStatement"> ''' The Next statement that ends the block. If two For or For Each statements are ''' ended by a single Next statement, the inner For will not have a Next statement. ''' </param> Public Shared Function ForEachBlock(forEachStatement As ForEachStatementSyntax, statements As SyntaxList(of StatementSyntax), nextStatement As NextStatementSyntax) As ForEachBlockSyntax if forEachStatement Is Nothing Then Throw New ArgumentNullException(NameOf(forEachStatement)) End If Select Case forEachStatement.Kind() Case SyntaxKind.ForEachStatement Case Else Throw new ArgumentException("forEachStatement") End Select Return New ForEachBlockSyntax(SyntaxKind.ForEachBlock, Nothing, Nothing, forEachStatement, statements.Node, nextStatement) End Function ''' <summary> ''' Represents a For Each block, including the introducing statement, the body and ''' the "Next" (which can be omitted if a containing For has a Next with multiple ''' variables). ''' </summary> ''' <param name="forEachStatement"> ''' The For Each statement that begins the block. ''' </param> Public Shared Function ForEachBlock(forEachStatement As ForEachStatementSyntax) As ForEachBlockSyntax Return SyntaxFactory.ForEachBlock(forEachStatement, Nothing, Nothing) End Function ''' <summary> ''' The For statement that begins a For-Next block. This statement always occurs as ''' the Begin of a ForBlock. Most of the time, the End of that ForBlock is the ''' corresponding Next statement. However, multiple nested For statements are ended ''' by a single Next statement with multiple variables, then the inner For ''' statements will have End set to Nothing, and the Next statement is the End of ''' the outermost For statement that is being ended. ''' </summary> ''' <param name="forKeyword"> ''' The "For" keyword. ''' </param> ''' <param name="controlVariable"> ''' If the For or For Each statement is of a form that does not declare a new loop ''' control variable, this is the expression that denotes the loop control ''' variable. If this loop is of a form that does declare a new control variable, ''' this is a VariableDeclarator that has the variable being declared. ''' </param> ''' <param name="equalsToken"> ''' The "=" token. ''' </param> ''' <param name="fromValue"> ''' The expression denoting the initial value of the iteration. ''' </param> ''' <param name="toKeyword"> ''' The "To" keyword. ''' </param> ''' <param name="toValue"> ''' The expression denoting the final value of the iteration. ''' </param> ''' <param name="stepClause"> ''' The optional Step clause. ''' </param> Public Shared Function ForStatement(forKeyword As SyntaxToken, controlVariable As VisualBasicSyntaxNode, equalsToken As SyntaxToken, fromValue As ExpressionSyntax, toKeyword As SyntaxToken, toValue As ExpressionSyntax, stepClause As ForStepClauseSyntax) As ForStatementSyntax Select Case forKeyword.Kind() Case SyntaxKind.ForKeyword Case Else Throw new ArgumentException("forKeyword") End Select if controlVariable Is Nothing Then Throw New ArgumentNullException(NameOf(controlVariable)) End If Select Case controlVariable.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression, SyntaxKind.VariableDeclarator Case Else Throw new ArgumentException("controlVariable") End Select Select Case equalsToken.Kind() Case SyntaxKind.EqualsToken Case Else Throw new ArgumentException("equalsToken") End Select if fromValue Is Nothing Then Throw New ArgumentNullException(NameOf(fromValue)) End If Select Case fromValue.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("fromValue") End Select Select Case toKeyword.Kind() Case SyntaxKind.ToKeyword Case Else Throw new ArgumentException("toKeyword") End Select if toValue Is Nothing Then Throw New ArgumentNullException(NameOf(toValue)) End If Select Case toValue.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("toValue") End Select Return New ForStatementSyntax(SyntaxKind.ForStatement, Nothing, Nothing, DirectCast(forKeyword.Node, InternalSyntax.KeywordSyntax), controlVariable, DirectCast(equalsToken.Node, InternalSyntax.PunctuationSyntax), fromValue, DirectCast(toKeyword.Node, InternalSyntax.KeywordSyntax), toValue, stepClause) End Function ''' <summary> ''' The For statement that begins a For-Next block. This statement always occurs as ''' the Begin of a ForBlock. Most of the time, the End of that ForBlock is the ''' corresponding Next statement. However, multiple nested For statements are ended ''' by a single Next statement with multiple variables, then the inner For ''' statements will have End set to Nothing, and the Next statement is the End of ''' the outermost For statement that is being ended. ''' </summary> ''' <param name="controlVariable"> ''' If the For or For Each statement is of a form that does not declare a new loop ''' control variable, this is the expression that denotes the loop control ''' variable. If this loop is of a form that does declare a new control variable, ''' this is a VariableDeclarator that has the variable being declared. ''' </param> ''' <param name="fromValue"> ''' The expression denoting the initial value of the iteration. ''' </param> ''' <param name="toValue"> ''' The expression denoting the final value of the iteration. ''' </param> ''' <param name="stepClause"> ''' The optional Step clause. ''' </param> Public Shared Function ForStatement(controlVariable As VisualBasicSyntaxNode, fromValue As ExpressionSyntax, toValue As ExpressionSyntax, stepClause As ForStepClauseSyntax) As ForStatementSyntax Return SyntaxFactory.ForStatement(SyntaxFactory.Token(SyntaxKind.ForKeyword), controlVariable, SyntaxFactory.Token(SyntaxKind.EqualsToken), fromValue, SyntaxFactory.Token(SyntaxKind.ToKeyword), toValue, stepClause) End Function ''' <summary> ''' The For statement that begins a For-Next block. This statement always occurs as ''' the Begin of a ForBlock. Most of the time, the End of that ForBlock is the ''' corresponding Next statement. However, multiple nested For statements are ended ''' by a single Next statement with multiple variables, then the inner For ''' statements will have End set to Nothing, and the Next statement is the End of ''' the outermost For statement that is being ended. ''' </summary> ''' <param name="controlVariable"> ''' If the For or For Each statement is of a form that does not declare a new loop ''' control variable, this is the expression that denotes the loop control ''' variable. If this loop is of a form that does declare a new control variable, ''' this is a VariableDeclarator that has the variable being declared. ''' </param> ''' <param name="fromValue"> ''' The expression denoting the initial value of the iteration. ''' </param> ''' <param name="toValue"> ''' The expression denoting the final value of the iteration. ''' </param> Public Shared Function ForStatement(controlVariable As VisualBasicSyntaxNode, fromValue As ExpressionSyntax, toValue As ExpressionSyntax) As ForStatementSyntax Return SyntaxFactory.ForStatement(SyntaxFactory.Token(SyntaxKind.ForKeyword), controlVariable, SyntaxFactory.Token(SyntaxKind.EqualsToken), fromValue, SyntaxFactory.Token(SyntaxKind.ToKeyword), toValue, Nothing) End Function ''' <summary> ''' The Step clause in a For Statement. ''' </summary> ''' <param name="stepKeyword"> ''' The "Step" keyword. ''' </param> ''' <param name="stepValue"> ''' The expression denoting the step increment. ''' </param> Public Shared Function ForStepClause(stepKeyword As SyntaxToken, stepValue As ExpressionSyntax) As ForStepClauseSyntax Select Case stepKeyword.Kind() Case SyntaxKind.StepKeyword Case Else Throw new ArgumentException("stepKeyword") End Select if stepValue Is Nothing Then Throw New ArgumentNullException(NameOf(stepValue)) End If Select Case stepValue.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("stepValue") End Select Return New ForStepClauseSyntax(SyntaxKind.ForStepClause, Nothing, Nothing, DirectCast(stepKeyword.Node, InternalSyntax.KeywordSyntax), stepValue) End Function ''' <summary> ''' The Step clause in a For Statement. ''' </summary> ''' <param name="stepValue"> ''' The expression denoting the step increment. ''' </param> Public Shared Function ForStepClause(stepValue As ExpressionSyntax) As ForStepClauseSyntax Return SyntaxFactory.ForStepClause(SyntaxFactory.Token(SyntaxKind.StepKeyword), stepValue) End Function ''' <summary> ''' The For Each statement that begins a For Each-Next block. This statement always ''' occurs as the Begin of a ForBlock, and the body of the For Each-Next is the ''' Body of that ForBlock. Most of the time, the End of that ForBlock is the ''' corresponding Next statement. However, multiple nested For statements are ended ''' by a single Next statement with multiple variables, then the inner For ''' statements will have End set to Nothing, and the Next statement is the End of ''' the outermost For statement that is being ended. ''' </summary> ''' <param name="forKeyword"> ''' The "For" keyword. ''' </param> ''' <param name="eachKeyword"> ''' The "Each" keyword. ''' </param> ''' <param name="controlVariable"> ''' If the For or For Each statement is of a form that does not declare a new loop ''' control variable, this is the expression that denotes the loop control ''' variable. If this loop is of a form that does declare a new control variable, ''' this is a VariableDeclarator that has the variable being declared. ''' </param> ''' <param name="inKeyword"> ''' The "In" keyword. ''' </param> ''' <param name="expression"> ''' The expression denoting the collection to iterate over. ''' </param> Public Shared Function ForEachStatement(forKeyword As SyntaxToken, eachKeyword As SyntaxToken, controlVariable As VisualBasicSyntaxNode, inKeyword As SyntaxToken, expression As ExpressionSyntax) As ForEachStatementSyntax Select Case forKeyword.Kind() Case SyntaxKind.ForKeyword Case Else Throw new ArgumentException("forKeyword") End Select Select Case eachKeyword.Kind() Case SyntaxKind.EachKeyword Case Else Throw new ArgumentException("eachKeyword") End Select if controlVariable Is Nothing Then Throw New ArgumentNullException(NameOf(controlVariable)) End If Select Case controlVariable.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression, SyntaxKind.VariableDeclarator Case Else Throw new ArgumentException("controlVariable") End Select Select Case inKeyword.Kind() Case SyntaxKind.InKeyword Case Else Throw new ArgumentException("inKeyword") End Select if expression Is Nothing Then Throw New ArgumentNullException(NameOf(expression)) End If Select Case expression.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("expression") End Select Return New ForEachStatementSyntax(SyntaxKind.ForEachStatement, Nothing, Nothing, DirectCast(forKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(eachKeyword.Node, InternalSyntax.KeywordSyntax), controlVariable, DirectCast(inKeyword.Node, InternalSyntax.KeywordSyntax), expression) End Function ''' <summary> ''' The For Each statement that begins a For Each-Next block. This statement always ''' occurs as the Begin of a ForBlock, and the body of the For Each-Next is the ''' Body of that ForBlock. Most of the time, the End of that ForBlock is the ''' corresponding Next statement. However, multiple nested For statements are ended ''' by a single Next statement with multiple variables, then the inner For ''' statements will have End set to Nothing, and the Next statement is the End of ''' the outermost For statement that is being ended. ''' </summary> ''' <param name="controlVariable"> ''' If the For or For Each statement is of a form that does not declare a new loop ''' control variable, this is the expression that denotes the loop control ''' variable. If this loop is of a form that does declare a new control variable, ''' this is a VariableDeclarator that has the variable being declared. ''' </param> ''' <param name="expression"> ''' The expression denoting the collection to iterate over. ''' </param> Public Shared Function ForEachStatement(controlVariable As VisualBasicSyntaxNode, expression As ExpressionSyntax) As ForEachStatementSyntax Return SyntaxFactory.ForEachStatement(SyntaxFactory.Token(SyntaxKind.ForKeyword), SyntaxFactory.Token(SyntaxKind.EachKeyword), controlVariable, SyntaxFactory.Token(SyntaxKind.InKeyword), expression) End Function ''' <summary> ''' The Next statement that ends a For-Next or For Each-Next block. This statement ''' always occurs as the End of a ForBlock (with Kind=ForBlock or ForEachBlock), ''' and the body of the For-Next is the Body of that ForBlock. The Begin of that ''' ForBlock has the corresponding For or For Each statement. ''' </summary> ''' <param name="nextKeyword"> ''' The "Next" keyword. ''' </param> ''' <param name="controlVariables"> ''' The variables in the Next statement, if present ''' </param> Public Shared Function NextStatement(nextKeyword As SyntaxToken, controlVariables As SeparatedSyntaxList(Of ExpressionSyntax)) As NextStatementSyntax Select Case nextKeyword.Kind() Case SyntaxKind.NextKeyword Case Else Throw new ArgumentException("nextKeyword") End Select Return New NextStatementSyntax(SyntaxKind.NextStatement, Nothing, Nothing, DirectCast(nextKeyword.Node, InternalSyntax.KeywordSyntax), controlVariables.Node) End Function ''' <summary> ''' The Next statement that ends a For-Next or For Each-Next block. This statement ''' always occurs as the End of a ForBlock (with Kind=ForBlock or ForEachBlock), ''' and the body of the For-Next is the Body of that ForBlock. The Begin of that ''' ForBlock has the corresponding For or For Each statement. ''' </summary> ''' <param name="controlVariables"> ''' The variables in the Next statement, if present ''' </param> Public Shared Function NextStatement(controlVariables As SeparatedSyntaxList(Of ExpressionSyntax)) As NextStatementSyntax Return SyntaxFactory.NextStatement(SyntaxFactory.Token(SyntaxKind.NextKeyword), controlVariables) End Function ''' <summary> ''' The Next statement that ends a For-Next or For Each-Next block. This statement ''' always occurs as the End of a ForBlock (with Kind=ForBlock or ForEachBlock), ''' and the body of the For-Next is the Body of that ForBlock. The Begin of that ''' ForBlock has the corresponding For or For Each statement. ''' </summary> Public Shared Function NextStatement() As NextStatementSyntax Return SyntaxFactory.NextStatement(SyntaxFactory.Token(SyntaxKind.NextKeyword), Nothing) End Function ''' <summary> ''' The Using statement that begins a Using block. This statement always occurs as ''' the Begin of a UsingBlock, and the body of the Using is the Body of that ''' UsingBlock. ''' </summary> ''' <param name="usingKeyword"> ''' The "Using" keyword. ''' </param> ''' <param name="expression"> ''' If the Using statement is of a form that does not declare a new variable, this ''' is the expression used in the using. Otherwise, Nothing is returned. ''' </param> ''' <param name="variables"> ''' If the Using statement is of a form that declares one or more new variables, ''' this is the list of variable declarations. Otherwise, Nothing is returned. ''' </param> Public Shared Function UsingStatement(usingKeyword As SyntaxToken, expression As ExpressionSyntax, variables As SeparatedSyntaxList(Of VariableDeclaratorSyntax)) As UsingStatementSyntax Select Case usingKeyword.Kind() Case SyntaxKind.UsingKeyword Case Else Throw new ArgumentException("usingKeyword") End Select Return New UsingStatementSyntax(SyntaxKind.UsingStatement, Nothing, Nothing, DirectCast(usingKeyword.Node, InternalSyntax.KeywordSyntax), expression, variables.Node) End Function ''' <summary> ''' The Using statement that begins a Using block. This statement always occurs as ''' the Begin of a UsingBlock, and the body of the Using is the Body of that ''' UsingBlock. ''' </summary> ''' <param name="expression"> ''' If the Using statement is of a form that does not declare a new variable, this ''' is the expression used in the using. Otherwise, Nothing is returned. ''' </param> ''' <param name="variables"> ''' If the Using statement is of a form that declares one or more new variables, ''' this is the list of variable declarations. Otherwise, Nothing is returned. ''' </param> Public Shared Function UsingStatement(expression As ExpressionSyntax, variables As SeparatedSyntaxList(Of VariableDeclaratorSyntax)) As UsingStatementSyntax Return SyntaxFactory.UsingStatement(SyntaxFactory.Token(SyntaxKind.UsingKeyword), expression, variables) End Function ''' <summary> ''' The Using statement that begins a Using block. This statement always occurs as ''' the Begin of a UsingBlock, and the body of the Using is the Body of that ''' UsingBlock. ''' </summary> Public Shared Function UsingStatement() As UsingStatementSyntax Return SyntaxFactory.UsingStatement(SyntaxFactory.Token(SyntaxKind.UsingKeyword), Nothing, Nothing) End Function ''' <summary> ''' Represents a Throw statement. ''' </summary> ''' <param name="throwKeyword"> ''' The "Throw" keyword ''' </param> ''' <param name="expression"> ''' The expression denoting the value being thrown. ''' </param> Public Shared Function ThrowStatement(throwKeyword As SyntaxToken, expression As ExpressionSyntax) As ThrowStatementSyntax Select Case throwKeyword.Kind() Case SyntaxKind.ThrowKeyword Case Else Throw new ArgumentException("throwKeyword") End Select Return New ThrowStatementSyntax(SyntaxKind.ThrowStatement, Nothing, Nothing, DirectCast(throwKeyword.Node, InternalSyntax.KeywordSyntax), expression) End Function ''' <summary> ''' Represents a Throw statement. ''' </summary> ''' <param name="expression"> ''' The expression denoting the value being thrown. ''' </param> Public Shared Function ThrowStatement(expression As ExpressionSyntax) As ThrowStatementSyntax Return SyntaxFactory.ThrowStatement(SyntaxFactory.Token(SyntaxKind.ThrowKeyword), expression) End Function ''' <summary> ''' Represents a Throw statement. ''' </summary> Public Shared Function ThrowStatement() As ThrowStatementSyntax Return SyntaxFactory.ThrowStatement(SyntaxFactory.Token(SyntaxKind.ThrowKeyword), Nothing) End Function ''' <summary> ''' Represents a simple, compound, or Mid assignment statement. Which one can be ''' determined by checking the Kind. ''' </summary> ''' <param name="left"> ''' The target (left hand side) of the assignment. ''' </param> ''' <param name="operatorToken"> ''' The operator used in the assignment statement. One of "=", "+=", "-=", "*=", ''' "/=", "\=", "^=", "&=", "<<=" or ">>=". ''' </param> ''' <param name="right"> ''' The source (right hand side) of the assignment. ''' </param> Public Shared Function SimpleAssignmentStatement(left As ExpressionSyntax, operatorToken As SyntaxToken, right As ExpressionSyntax) As AssignmentStatementSyntax if left Is Nothing Then Throw New ArgumentNullException(NameOf(left)) End If Select Case left.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("left") End Select Select Case operatorToken.Kind() Case SyntaxKind.EqualsToken : Case SyntaxKind.PlusEqualsToken : Case SyntaxKind.MinusEqualsToken : Case SyntaxKind.AsteriskEqualsToken : Case SyntaxKind.SlashEqualsToken : Case SyntaxKind.BackslashEqualsToken : Case SyntaxKind.CaretEqualsToken : Case SyntaxKind.LessThanLessThanEqualsToken : Case SyntaxKind.GreaterThanGreaterThanEqualsToken : Case SyntaxKind.AmpersandEqualsToken Case Else Throw new ArgumentException("operatorToken") End Select if right Is Nothing Then Throw New ArgumentNullException(NameOf(right)) End If Select Case right.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("right") End Select Return New AssignmentStatementSyntax(SyntaxKind.SimpleAssignmentStatement, Nothing, Nothing, left, DirectCast(operatorToken.Node, InternalSyntax.PunctuationSyntax), right) End Function ''' <summary> ''' Represents a simple, compound, or Mid assignment statement. Which one can be ''' determined by checking the Kind. ''' </summary> ''' <param name="left"> ''' The target (left hand side) of the assignment. ''' </param> ''' <param name="right"> ''' The source (right hand side) of the assignment. ''' </param> Public Shared Function SimpleAssignmentStatement(left As ExpressionSyntax, right As ExpressionSyntax) As AssignmentStatementSyntax Return SyntaxFactory.SimpleAssignmentStatement(left, SyntaxFactory.Token(SyntaxKind.EqualsToken), right) End Function ''' <summary> ''' Represents a simple, compound, or Mid assignment statement. Which one can be ''' determined by checking the Kind. ''' </summary> ''' <param name="left"> ''' The target (left hand side) of the assignment. ''' </param> ''' <param name="operatorToken"> ''' The operator used in the assignment statement. One of "=", "+=", "-=", "*=", ''' "/=", "\=", "^=", "&=", "<<=" or ">>=". ''' </param> ''' <param name="right"> ''' The source (right hand side) of the assignment. ''' </param> Public Shared Function MidAssignmentStatement(left As ExpressionSyntax, operatorToken As SyntaxToken, right As ExpressionSyntax) As AssignmentStatementSyntax if left Is Nothing Then Throw New ArgumentNullException(NameOf(left)) End If Select Case left.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("left") End Select Select Case operatorToken.Kind() Case SyntaxKind.EqualsToken Case Else Throw new ArgumentException("operatorToken") End Select if right Is Nothing Then Throw New ArgumentNullException(NameOf(right)) End If Select Case right.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("right") End Select Return New AssignmentStatementSyntax(SyntaxKind.MidAssignmentStatement, Nothing, Nothing, left, DirectCast(operatorToken.Node, InternalSyntax.PunctuationSyntax), right) End Function ''' <summary> ''' Represents a simple, compound, or Mid assignment statement. Which one can be ''' determined by checking the Kind. ''' </summary> ''' <param name="left"> ''' The target (left hand side) of the assignment. ''' </param> ''' <param name="right"> ''' The source (right hand side) of the assignment. ''' </param> Public Shared Function MidAssignmentStatement(left As ExpressionSyntax, right As ExpressionSyntax) As AssignmentStatementSyntax Return SyntaxFactory.MidAssignmentStatement(left, SyntaxFactory.Token(SyntaxKind.EqualsToken), right) End Function ''' <summary> ''' Represents a simple, compound, or Mid assignment statement. Which one can be ''' determined by checking the Kind. ''' </summary> ''' <param name="left"> ''' The target (left hand side) of the assignment. ''' </param> ''' <param name="operatorToken"> ''' The operator used in the assignment statement. One of "=", "+=", "-=", "*=", ''' "/=", "\=", "^=", "&=", "<<=" or ">>=". ''' </param> ''' <param name="right"> ''' The source (right hand side) of the assignment. ''' </param> Public Shared Function AddAssignmentStatement(left As ExpressionSyntax, operatorToken As SyntaxToken, right As ExpressionSyntax) As AssignmentStatementSyntax if left Is Nothing Then Throw New ArgumentNullException(NameOf(left)) End If Select Case left.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("left") End Select Select Case operatorToken.Kind() Case SyntaxKind.PlusEqualsToken Case Else Throw new ArgumentException("operatorToken") End Select if right Is Nothing Then Throw New ArgumentNullException(NameOf(right)) End If Select Case right.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("right") End Select Return New AssignmentStatementSyntax(SyntaxKind.AddAssignmentStatement, Nothing, Nothing, left, DirectCast(operatorToken.Node, InternalSyntax.PunctuationSyntax), right) End Function ''' <summary> ''' Represents a simple, compound, or Mid assignment statement. Which one can be ''' determined by checking the Kind. ''' </summary> ''' <param name="left"> ''' The target (left hand side) of the assignment. ''' </param> ''' <param name="right"> ''' The source (right hand side) of the assignment. ''' </param> Public Shared Function AddAssignmentStatement(left As ExpressionSyntax, right As ExpressionSyntax) As AssignmentStatementSyntax Return SyntaxFactory.AddAssignmentStatement(left, SyntaxFactory.Token(SyntaxKind.PlusEqualsToken), right) End Function ''' <summary> ''' Represents a simple, compound, or Mid assignment statement. Which one can be ''' determined by checking the Kind. ''' </summary> ''' <param name="left"> ''' The target (left hand side) of the assignment. ''' </param> ''' <param name="operatorToken"> ''' The operator used in the assignment statement. One of "=", "+=", "-=", "*=", ''' "/=", "\=", "^=", "&=", "<<=" or ">>=". ''' </param> ''' <param name="right"> ''' The source (right hand side) of the assignment. ''' </param> Public Shared Function SubtractAssignmentStatement(left As ExpressionSyntax, operatorToken As SyntaxToken, right As ExpressionSyntax) As AssignmentStatementSyntax if left Is Nothing Then Throw New ArgumentNullException(NameOf(left)) End If Select Case left.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("left") End Select Select Case operatorToken.Kind() Case SyntaxKind.MinusEqualsToken Case Else Throw new ArgumentException("operatorToken") End Select if right Is Nothing Then Throw New ArgumentNullException(NameOf(right)) End If Select Case right.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("right") End Select Return New AssignmentStatementSyntax(SyntaxKind.SubtractAssignmentStatement, Nothing, Nothing, left, DirectCast(operatorToken.Node, InternalSyntax.PunctuationSyntax), right) End Function ''' <summary> ''' Represents a simple, compound, or Mid assignment statement. Which one can be ''' determined by checking the Kind. ''' </summary> ''' <param name="left"> ''' The target (left hand side) of the assignment. ''' </param> ''' <param name="right"> ''' The source (right hand side) of the assignment. ''' </param> Public Shared Function SubtractAssignmentStatement(left As ExpressionSyntax, right As ExpressionSyntax) As AssignmentStatementSyntax Return SyntaxFactory.SubtractAssignmentStatement(left, SyntaxFactory.Token(SyntaxKind.MinusEqualsToken), right) End Function ''' <summary> ''' Represents a simple, compound, or Mid assignment statement. Which one can be ''' determined by checking the Kind. ''' </summary> ''' <param name="left"> ''' The target (left hand side) of the assignment. ''' </param> ''' <param name="operatorToken"> ''' The operator used in the assignment statement. One of "=", "+=", "-=", "*=", ''' "/=", "\=", "^=", "&=", "<<=" or ">>=". ''' </param> ''' <param name="right"> ''' The source (right hand side) of the assignment. ''' </param> Public Shared Function MultiplyAssignmentStatement(left As ExpressionSyntax, operatorToken As SyntaxToken, right As ExpressionSyntax) As AssignmentStatementSyntax if left Is Nothing Then Throw New ArgumentNullException(NameOf(left)) End If Select Case left.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("left") End Select Select Case operatorToken.Kind() Case SyntaxKind.AsteriskEqualsToken Case Else Throw new ArgumentException("operatorToken") End Select if right Is Nothing Then Throw New ArgumentNullException(NameOf(right)) End If Select Case right.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("right") End Select Return New AssignmentStatementSyntax(SyntaxKind.MultiplyAssignmentStatement, Nothing, Nothing, left, DirectCast(operatorToken.Node, InternalSyntax.PunctuationSyntax), right) End Function ''' <summary> ''' Represents a simple, compound, or Mid assignment statement. Which one can be ''' determined by checking the Kind. ''' </summary> ''' <param name="left"> ''' The target (left hand side) of the assignment. ''' </param> ''' <param name="right"> ''' The source (right hand side) of the assignment. ''' </param> Public Shared Function MultiplyAssignmentStatement(left As ExpressionSyntax, right As ExpressionSyntax) As AssignmentStatementSyntax Return SyntaxFactory.MultiplyAssignmentStatement(left, SyntaxFactory.Token(SyntaxKind.AsteriskEqualsToken), right) End Function ''' <summary> ''' Represents a simple, compound, or Mid assignment statement. Which one can be ''' determined by checking the Kind. ''' </summary> ''' <param name="left"> ''' The target (left hand side) of the assignment. ''' </param> ''' <param name="operatorToken"> ''' The operator used in the assignment statement. One of "=", "+=", "-=", "*=", ''' "/=", "\=", "^=", "&=", "<<=" or ">>=". ''' </param> ''' <param name="right"> ''' The source (right hand side) of the assignment. ''' </param> Public Shared Function DivideAssignmentStatement(left As ExpressionSyntax, operatorToken As SyntaxToken, right As ExpressionSyntax) As AssignmentStatementSyntax if left Is Nothing Then Throw New ArgumentNullException(NameOf(left)) End If Select Case left.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("left") End Select Select Case operatorToken.Kind() Case SyntaxKind.SlashEqualsToken Case Else Throw new ArgumentException("operatorToken") End Select if right Is Nothing Then Throw New ArgumentNullException(NameOf(right)) End If Select Case right.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("right") End Select Return New AssignmentStatementSyntax(SyntaxKind.DivideAssignmentStatement, Nothing, Nothing, left, DirectCast(operatorToken.Node, InternalSyntax.PunctuationSyntax), right) End Function ''' <summary> ''' Represents a simple, compound, or Mid assignment statement. Which one can be ''' determined by checking the Kind. ''' </summary> ''' <param name="left"> ''' The target (left hand side) of the assignment. ''' </param> ''' <param name="right"> ''' The source (right hand side) of the assignment. ''' </param> Public Shared Function DivideAssignmentStatement(left As ExpressionSyntax, right As ExpressionSyntax) As AssignmentStatementSyntax Return SyntaxFactory.DivideAssignmentStatement(left, SyntaxFactory.Token(SyntaxKind.SlashEqualsToken), right) End Function ''' <summary> ''' Represents a simple, compound, or Mid assignment statement. Which one can be ''' determined by checking the Kind. ''' </summary> ''' <param name="left"> ''' The target (left hand side) of the assignment. ''' </param> ''' <param name="operatorToken"> ''' The operator used in the assignment statement. One of "=", "+=", "-=", "*=", ''' "/=", "\=", "^=", "&=", "<<=" or ">>=". ''' </param> ''' <param name="right"> ''' The source (right hand side) of the assignment. ''' </param> Public Shared Function IntegerDivideAssignmentStatement(left As ExpressionSyntax, operatorToken As SyntaxToken, right As ExpressionSyntax) As AssignmentStatementSyntax if left Is Nothing Then Throw New ArgumentNullException(NameOf(left)) End If Select Case left.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("left") End Select Select Case operatorToken.Kind() Case SyntaxKind.BackslashEqualsToken Case Else Throw new ArgumentException("operatorToken") End Select if right Is Nothing Then Throw New ArgumentNullException(NameOf(right)) End If Select Case right.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("right") End Select Return New AssignmentStatementSyntax(SyntaxKind.IntegerDivideAssignmentStatement, Nothing, Nothing, left, DirectCast(operatorToken.Node, InternalSyntax.PunctuationSyntax), right) End Function ''' <summary> ''' Represents a simple, compound, or Mid assignment statement. Which one can be ''' determined by checking the Kind. ''' </summary> ''' <param name="left"> ''' The target (left hand side) of the assignment. ''' </param> ''' <param name="right"> ''' The source (right hand side) of the assignment. ''' </param> Public Shared Function IntegerDivideAssignmentStatement(left As ExpressionSyntax, right As ExpressionSyntax) As AssignmentStatementSyntax Return SyntaxFactory.IntegerDivideAssignmentStatement(left, SyntaxFactory.Token(SyntaxKind.BackslashEqualsToken), right) End Function ''' <summary> ''' Represents a simple, compound, or Mid assignment statement. Which one can be ''' determined by checking the Kind. ''' </summary> ''' <param name="left"> ''' The target (left hand side) of the assignment. ''' </param> ''' <param name="operatorToken"> ''' The operator used in the assignment statement. One of "=", "+=", "-=", "*=", ''' "/=", "\=", "^=", "&=", "<<=" or ">>=". ''' </param> ''' <param name="right"> ''' The source (right hand side) of the assignment. ''' </param> Public Shared Function ExponentiateAssignmentStatement(left As ExpressionSyntax, operatorToken As SyntaxToken, right As ExpressionSyntax) As AssignmentStatementSyntax if left Is Nothing Then Throw New ArgumentNullException(NameOf(left)) End If Select Case left.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("left") End Select Select Case operatorToken.Kind() Case SyntaxKind.CaretEqualsToken Case Else Throw new ArgumentException("operatorToken") End Select if right Is Nothing Then Throw New ArgumentNullException(NameOf(right)) End If Select Case right.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("right") End Select Return New AssignmentStatementSyntax(SyntaxKind.ExponentiateAssignmentStatement, Nothing, Nothing, left, DirectCast(operatorToken.Node, InternalSyntax.PunctuationSyntax), right) End Function ''' <summary> ''' Represents a simple, compound, or Mid assignment statement. Which one can be ''' determined by checking the Kind. ''' </summary> ''' <param name="left"> ''' The target (left hand side) of the assignment. ''' </param> ''' <param name="right"> ''' The source (right hand side) of the assignment. ''' </param> Public Shared Function ExponentiateAssignmentStatement(left As ExpressionSyntax, right As ExpressionSyntax) As AssignmentStatementSyntax Return SyntaxFactory.ExponentiateAssignmentStatement(left, SyntaxFactory.Token(SyntaxKind.CaretEqualsToken), right) End Function ''' <summary> ''' Represents a simple, compound, or Mid assignment statement. Which one can be ''' determined by checking the Kind. ''' </summary> ''' <param name="left"> ''' The target (left hand side) of the assignment. ''' </param> ''' <param name="operatorToken"> ''' The operator used in the assignment statement. One of "=", "+=", "-=", "*=", ''' "/=", "\=", "^=", "&=", "<<=" or ">>=". ''' </param> ''' <param name="right"> ''' The source (right hand side) of the assignment. ''' </param> Public Shared Function LeftShiftAssignmentStatement(left As ExpressionSyntax, operatorToken As SyntaxToken, right As ExpressionSyntax) As AssignmentStatementSyntax if left Is Nothing Then Throw New ArgumentNullException(NameOf(left)) End If Select Case left.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("left") End Select Select Case operatorToken.Kind() Case SyntaxKind.LessThanLessThanEqualsToken Case Else Throw new ArgumentException("operatorToken") End Select if right Is Nothing Then Throw New ArgumentNullException(NameOf(right)) End If Select Case right.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("right") End Select Return New AssignmentStatementSyntax(SyntaxKind.LeftShiftAssignmentStatement, Nothing, Nothing, left, DirectCast(operatorToken.Node, InternalSyntax.PunctuationSyntax), right) End Function ''' <summary> ''' Represents a simple, compound, or Mid assignment statement. Which one can be ''' determined by checking the Kind. ''' </summary> ''' <param name="left"> ''' The target (left hand side) of the assignment. ''' </param> ''' <param name="right"> ''' The source (right hand side) of the assignment. ''' </param> Public Shared Function LeftShiftAssignmentStatement(left As ExpressionSyntax, right As ExpressionSyntax) As AssignmentStatementSyntax Return SyntaxFactory.LeftShiftAssignmentStatement(left, SyntaxFactory.Token(SyntaxKind.LessThanLessThanEqualsToken), right) End Function ''' <summary> ''' Represents a simple, compound, or Mid assignment statement. Which one can be ''' determined by checking the Kind. ''' </summary> ''' <param name="left"> ''' The target (left hand side) of the assignment. ''' </param> ''' <param name="operatorToken"> ''' The operator used in the assignment statement. One of "=", "+=", "-=", "*=", ''' "/=", "\=", "^=", "&=", "<<=" or ">>=". ''' </param> ''' <param name="right"> ''' The source (right hand side) of the assignment. ''' </param> Public Shared Function RightShiftAssignmentStatement(left As ExpressionSyntax, operatorToken As SyntaxToken, right As ExpressionSyntax) As AssignmentStatementSyntax if left Is Nothing Then Throw New ArgumentNullException(NameOf(left)) End If Select Case left.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("left") End Select Select Case operatorToken.Kind() Case SyntaxKind.GreaterThanGreaterThanEqualsToken Case Else Throw new ArgumentException("operatorToken") End Select if right Is Nothing Then Throw New ArgumentNullException(NameOf(right)) End If Select Case right.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("right") End Select Return New AssignmentStatementSyntax(SyntaxKind.RightShiftAssignmentStatement, Nothing, Nothing, left, DirectCast(operatorToken.Node, InternalSyntax.PunctuationSyntax), right) End Function ''' <summary> ''' Represents a simple, compound, or Mid assignment statement. Which one can be ''' determined by checking the Kind. ''' </summary> ''' <param name="left"> ''' The target (left hand side) of the assignment. ''' </param> ''' <param name="right"> ''' The source (right hand side) of the assignment. ''' </param> Public Shared Function RightShiftAssignmentStatement(left As ExpressionSyntax, right As ExpressionSyntax) As AssignmentStatementSyntax Return SyntaxFactory.RightShiftAssignmentStatement(left, SyntaxFactory.Token(SyntaxKind.GreaterThanGreaterThanEqualsToken), right) End Function ''' <summary> ''' Represents a simple, compound, or Mid assignment statement. Which one can be ''' determined by checking the Kind. ''' </summary> ''' <param name="left"> ''' The target (left hand side) of the assignment. ''' </param> ''' <param name="operatorToken"> ''' The operator used in the assignment statement. One of "=", "+=", "-=", "*=", ''' "/=", "\=", "^=", "&=", "<<=" or ">>=". ''' </param> ''' <param name="right"> ''' The source (right hand side) of the assignment. ''' </param> Public Shared Function ConcatenateAssignmentStatement(left As ExpressionSyntax, operatorToken As SyntaxToken, right As ExpressionSyntax) As AssignmentStatementSyntax if left Is Nothing Then Throw New ArgumentNullException(NameOf(left)) End If Select Case left.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("left") End Select Select Case operatorToken.Kind() Case SyntaxKind.AmpersandEqualsToken Case Else Throw new ArgumentException("operatorToken") End Select if right Is Nothing Then Throw New ArgumentNullException(NameOf(right)) End If Select Case right.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("right") End Select Return New AssignmentStatementSyntax(SyntaxKind.ConcatenateAssignmentStatement, Nothing, Nothing, left, DirectCast(operatorToken.Node, InternalSyntax.PunctuationSyntax), right) End Function ''' <summary> ''' Represents a simple, compound, or Mid assignment statement. Which one can be ''' determined by checking the Kind. ''' </summary> ''' <param name="left"> ''' The target (left hand side) of the assignment. ''' </param> ''' <param name="right"> ''' The source (right hand side) of the assignment. ''' </param> Public Shared Function ConcatenateAssignmentStatement(left As ExpressionSyntax, right As ExpressionSyntax) As AssignmentStatementSyntax Return SyntaxFactory.ConcatenateAssignmentStatement(left, SyntaxFactory.Token(SyntaxKind.AmpersandEqualsToken), right) End Function ''' <summary> ''' Represents a simple, compound, or Mid assignment statement. Which one can be ''' determined by checking the Kind. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' AssignmentStatementSyntax. One of SimpleAssignmentStatement, ''' MidAssignmentStatement, AddAssignmentStatement, SubtractAssignmentStatement, ''' MultiplyAssignmentStatement, DivideAssignmentStatement, ''' IntegerDivideAssignmentStatement, ExponentiateAssignmentStatement, ''' LeftShiftAssignmentStatement, RightShiftAssignmentStatement, ''' ConcatenateAssignmentStatement. ''' </param> ''' <param name="left"> ''' The target (left hand side) of the assignment. ''' </param> ''' <param name="operatorToken"> ''' The operator used in the assignment statement. One of "=", "+=", "-=", "*=", ''' "/=", "\=", "^=", "&=", "<<=" or ">>=". ''' </param> ''' <param name="right"> ''' The source (right hand side) of the assignment. ''' </param> Public Shared Function AssignmentStatement(ByVal kind As SyntaxKind, left As ExpressionSyntax, operatorToken As SyntaxToken, right As ExpressionSyntax) As AssignmentStatementSyntax If Not SyntaxFacts.IsAssignmentStatement(kind) Then Throw New ArgumentException("kind") End If if left Is Nothing Then Throw New ArgumentNullException(NameOf(left)) End If Select Case left.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("left") End Select If (Not operatorToken.IsKind(GetAssignmentStatementOperatorTokenKind(kind))) Then Throw new ArgumentException("operatorToken") End If if right Is Nothing Then Throw New ArgumentNullException(NameOf(right)) End If Select Case right.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("right") End Select Return New AssignmentStatementSyntax(kind, Nothing, Nothing, left, DirectCast(operatorToken.Node, InternalSyntax.PunctuationSyntax), right) End Function Private Shared Function GetAssignmentStatementOperatorTokenKind(kind As SyntaxKind) As SyntaxKind Select Case kind Case SyntaxKind.SimpleAssignmentStatement Return SyntaxKind.EqualsToken Case SyntaxKind.MidAssignmentStatement Return SyntaxKind.EqualsToken Case SyntaxKind.AddAssignmentStatement Return SyntaxKind.PlusEqualsToken Case SyntaxKind.SubtractAssignmentStatement Return SyntaxKind.MinusEqualsToken Case SyntaxKind.MultiplyAssignmentStatement Return SyntaxKind.AsteriskEqualsToken Case SyntaxKind.DivideAssignmentStatement Return SyntaxKind.SlashEqualsToken Case SyntaxKind.IntegerDivideAssignmentStatement Return SyntaxKind.BackslashEqualsToken Case SyntaxKind.ExponentiateAssignmentStatement Return SyntaxKind.CaretEqualsToken Case SyntaxKind.LeftShiftAssignmentStatement Return SyntaxKind.LessThanLessThanEqualsToken Case SyntaxKind.RightShiftAssignmentStatement Return SyntaxKind.GreaterThanGreaterThanEqualsToken Case SyntaxKind.ConcatenateAssignmentStatement Return SyntaxKind.AmpersandEqualsToken Case Else Throw New ArgumentException("OperatorToken") End Select End Function ''' <summary> ''' Represents a left-hand side of a MidAssignment statement. ''' </summary> ''' <param name="mid"> ''' The "Mid" possibly followed by a type character. ''' </param> ''' <param name="argumentList"> ''' The argument list. ''' </param> Public Shared Function MidExpression(mid As SyntaxToken, argumentList As ArgumentListSyntax) As MidExpressionSyntax Select Case mid.Kind() Case SyntaxKind.IdentifierToken Case Else Throw new ArgumentException("mid") End Select if argumentList Is Nothing Then Throw New ArgumentNullException(NameOf(argumentList)) End If Select Case argumentList.Kind() Case SyntaxKind.ArgumentList Case Else Throw new ArgumentException("argumentList") End Select Return New MidExpressionSyntax(SyntaxKind.MidExpression, Nothing, Nothing, DirectCast(mid.Node, InternalSyntax.IdentifierTokenSyntax), argumentList) End Function ''' <summary> ''' Represents a left-hand side of a MidAssignment statement. ''' </summary> ''' <param name="mid"> ''' The "Mid" possibly followed by a type character. ''' </param> ''' <param name="argumentList"> ''' The argument list. ''' </param> Public Shared Function MidExpression(mid As String, argumentList As ArgumentListSyntax) As MidExpressionSyntax Return SyntaxFactory.MidExpression(SyntaxFactory.Identifier(mid), argumentList) End Function ''' <summary> ''' Represent a call statement (also known as a invocation statement). ''' </summary> ''' <param name="callKeyword"> ''' The "Call" keyword. ''' </param> ''' <param name="invocation"> ''' The expression denoting the call. This could be an Invocation or a MemberAccess ''' (in the case where no parentheses were supplied.) ''' </param> Public Shared Function CallStatement(callKeyword As SyntaxToken, invocation As ExpressionSyntax) As CallStatementSyntax Select Case callKeyword.Kind() Case SyntaxKind.CallKeyword Case Else Throw new ArgumentException("callKeyword") End Select if invocation Is Nothing Then Throw New ArgumentNullException(NameOf(invocation)) End If Select Case invocation.Kind() Case SyntaxKind.InvocationExpression, SyntaxKind.SimpleMemberAccessExpression Case Else Throw new ArgumentException("invocation") End Select Return New CallStatementSyntax(SyntaxKind.CallStatement, Nothing, Nothing, DirectCast(callKeyword.Node, InternalSyntax.KeywordSyntax), invocation) End Function ''' <summary> ''' Represent a call statement (also known as a invocation statement). ''' </summary> ''' <param name="invocation"> ''' The expression denoting the call. This could be an Invocation or a MemberAccess ''' (in the case where no parentheses were supplied.) ''' </param> Public Shared Function CallStatement(invocation As ExpressionSyntax) As CallStatementSyntax Return SyntaxFactory.CallStatement(SyntaxFactory.Token(SyntaxKind.CallKeyword), invocation) End Function ''' <summary> ''' Represents an AddHandler or RemoveHandler statement. The Kind property ''' determines which one. ''' </summary> ''' <param name="addHandlerOrRemoveHandlerKeyword"> ''' The "AddHandler" or "RemoveHandler" keyword. ''' </param> ''' <param name="eventExpression"> ''' The event being accessed. ''' </param> ''' <param name="commaToken"> ''' The "," token. ''' </param> ''' <param name="delegateExpression"> ''' The delegate being added or removed. ''' </param> Public Shared Function AddHandlerStatement(addHandlerOrRemoveHandlerKeyword As SyntaxToken, eventExpression As ExpressionSyntax, commaToken As SyntaxToken, delegateExpression As ExpressionSyntax) As AddRemoveHandlerStatementSyntax Select Case addHandlerOrRemoveHandlerKeyword.Kind() Case SyntaxKind.AddHandlerKeyword : Case SyntaxKind.RemoveHandlerKeyword Case Else Throw new ArgumentException("addHandlerOrRemoveHandlerKeyword") End Select if eventExpression Is Nothing Then Throw New ArgumentNullException(NameOf(eventExpression)) End If Select Case eventExpression.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("eventExpression") End Select Select Case commaToken.Kind() Case SyntaxKind.CommaToken Case Else Throw new ArgumentException("commaToken") End Select if delegateExpression Is Nothing Then Throw New ArgumentNullException(NameOf(delegateExpression)) End If Select Case delegateExpression.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("delegateExpression") End Select Return New AddRemoveHandlerStatementSyntax(SyntaxKind.AddHandlerStatement, Nothing, Nothing, DirectCast(addHandlerOrRemoveHandlerKeyword.Node, InternalSyntax.KeywordSyntax), eventExpression, DirectCast(commaToken.Node, InternalSyntax.PunctuationSyntax), delegateExpression) End Function ''' <summary> ''' Represents an AddHandler or RemoveHandler statement. The Kind property ''' determines which one. ''' </summary> ''' <param name="eventExpression"> ''' The event being accessed. ''' </param> ''' <param name="delegateExpression"> ''' The delegate being added or removed. ''' </param> Public Shared Function AddHandlerStatement(eventExpression As ExpressionSyntax, delegateExpression As ExpressionSyntax) As AddRemoveHandlerStatementSyntax Return SyntaxFactory.AddHandlerStatement(SyntaxFactory.Token(SyntaxKind.AddHandlerKeyword), eventExpression, SyntaxFactory.Token(SyntaxKind.CommaToken), delegateExpression) End Function ''' <summary> ''' Represents an AddHandler or RemoveHandler statement. The Kind property ''' determines which one. ''' </summary> ''' <param name="addHandlerOrRemoveHandlerKeyword"> ''' The "AddHandler" or "RemoveHandler" keyword. ''' </param> ''' <param name="eventExpression"> ''' The event being accessed. ''' </param> ''' <param name="commaToken"> ''' The "," token. ''' </param> ''' <param name="delegateExpression"> ''' The delegate being added or removed. ''' </param> Public Shared Function RemoveHandlerStatement(addHandlerOrRemoveHandlerKeyword As SyntaxToken, eventExpression As ExpressionSyntax, commaToken As SyntaxToken, delegateExpression As ExpressionSyntax) As AddRemoveHandlerStatementSyntax Select Case addHandlerOrRemoveHandlerKeyword.Kind() Case SyntaxKind.RemoveHandlerKeyword Case Else Throw new ArgumentException("addHandlerOrRemoveHandlerKeyword") End Select if eventExpression Is Nothing Then Throw New ArgumentNullException(NameOf(eventExpression)) End If Select Case eventExpression.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("eventExpression") End Select Select Case commaToken.Kind() Case SyntaxKind.CommaToken Case Else Throw new ArgumentException("commaToken") End Select if delegateExpression Is Nothing Then Throw New ArgumentNullException(NameOf(delegateExpression)) End If Select Case delegateExpression.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("delegateExpression") End Select Return New AddRemoveHandlerStatementSyntax(SyntaxKind.RemoveHandlerStatement, Nothing, Nothing, DirectCast(addHandlerOrRemoveHandlerKeyword.Node, InternalSyntax.KeywordSyntax), eventExpression, DirectCast(commaToken.Node, InternalSyntax.PunctuationSyntax), delegateExpression) End Function ''' <summary> ''' Represents an AddHandler or RemoveHandler statement. The Kind property ''' determines which one. ''' </summary> ''' <param name="eventExpression"> ''' The event being accessed. ''' </param> ''' <param name="delegateExpression"> ''' The delegate being added or removed. ''' </param> Public Shared Function RemoveHandlerStatement(eventExpression As ExpressionSyntax, delegateExpression As ExpressionSyntax) As AddRemoveHandlerStatementSyntax Return SyntaxFactory.RemoveHandlerStatement(SyntaxFactory.Token(SyntaxKind.RemoveHandlerKeyword), eventExpression, SyntaxFactory.Token(SyntaxKind.CommaToken), delegateExpression) End Function ''' <summary> ''' Represents an AddHandler or RemoveHandler statement. The Kind property ''' determines which one. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' AddRemoveHandlerStatementSyntax. One of AddHandlerStatement, ''' RemoveHandlerStatement. ''' </param> ''' <param name="addHandlerOrRemoveHandlerKeyword"> ''' The "AddHandler" or "RemoveHandler" keyword. ''' </param> ''' <param name="eventExpression"> ''' The event being accessed. ''' </param> ''' <param name="commaToken"> ''' The "," token. ''' </param> ''' <param name="delegateExpression"> ''' The delegate being added or removed. ''' </param> Public Shared Function AddRemoveHandlerStatement(ByVal kind As SyntaxKind, addHandlerOrRemoveHandlerKeyword As SyntaxToken, eventExpression As ExpressionSyntax, commaToken As SyntaxToken, delegateExpression As ExpressionSyntax) As AddRemoveHandlerStatementSyntax If Not SyntaxFacts.IsAddRemoveHandlerStatement(kind) Then Throw New ArgumentException("kind") End If If (Not addHandlerOrRemoveHandlerKeyword.IsKind(GetAddRemoveHandlerStatementAddHandlerOrRemoveHandlerKeywordKind(kind))) Then Throw new ArgumentException("addHandlerOrRemoveHandlerKeyword") End If if eventExpression Is Nothing Then Throw New ArgumentNullException(NameOf(eventExpression)) End If Select Case eventExpression.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("eventExpression") End Select Select Case commaToken.Kind() Case SyntaxKind.CommaToken Case Else Throw new ArgumentException("commaToken") End Select if delegateExpression Is Nothing Then Throw New ArgumentNullException(NameOf(delegateExpression)) End If Select Case delegateExpression.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("delegateExpression") End Select Return New AddRemoveHandlerStatementSyntax(kind, Nothing, Nothing, DirectCast(addHandlerOrRemoveHandlerKeyword.Node, InternalSyntax.KeywordSyntax), eventExpression, DirectCast(commaToken.Node, InternalSyntax.PunctuationSyntax), delegateExpression) End Function Private Shared Function GetAddRemoveHandlerStatementAddHandlerOrRemoveHandlerKeywordKind(kind As SyntaxKind) As SyntaxKind Select Case kind Case SyntaxKind.AddHandlerStatement Return SyntaxKind.AddHandlerKeyword Case SyntaxKind.RemoveHandlerStatement Return SyntaxKind.RemoveHandlerKeyword Case Else Throw New ArgumentException("AddHandlerOrRemoveHandlerKeyword") End Select End Function ''' <summary> ''' Represents an AddHandler or RemoveHandler statement. The Kind property ''' determines which one. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' AddRemoveHandlerStatementSyntax. One of AddHandlerStatement, ''' RemoveHandlerStatement. ''' </param> ''' <param name="addHandlerOrRemoveHandlerKeyword"> ''' The "AddHandler" or "RemoveHandler" keyword. ''' </param> ''' <param name="eventExpression"> ''' The event being accessed. ''' </param> ''' <param name="delegateExpression"> ''' The delegate being added or removed. ''' </param> Public Shared Function AddRemoveHandlerStatement(ByVal kind As SyntaxKind, addHandlerOrRemoveHandlerKeyword As SyntaxToken, eventExpression As ExpressionSyntax, delegateExpression As ExpressionSyntax) As AddRemoveHandlerStatementSyntax Return SyntaxFactory.AddRemoveHandlerStatement(kind, addHandlerOrRemoveHandlerKeyword, eventExpression, SyntaxFactory.Token(SyntaxKind.CommaToken), delegateExpression) End Function ''' <summary> ''' Represent a RaiseEvent statement. ''' </summary> ''' <param name="raiseEventKeyword"> ''' The "RaiseEvent" keyword ''' </param> ''' <param name="name"> ''' The name of the event being raised. ''' </param> ''' <param name="argumentList"> ''' The argument list, if present. ''' </param> Public Shared Function RaiseEventStatement(raiseEventKeyword As SyntaxToken, name As IdentifierNameSyntax, argumentList As ArgumentListSyntax) As RaiseEventStatementSyntax Select Case raiseEventKeyword.Kind() Case SyntaxKind.RaiseEventKeyword Case Else Throw new ArgumentException("raiseEventKeyword") End Select if name Is Nothing Then Throw New ArgumentNullException(NameOf(name)) End If Select Case name.Kind() Case SyntaxKind.IdentifierName Case Else Throw new ArgumentException("name") End Select Return New RaiseEventStatementSyntax(SyntaxKind.RaiseEventStatement, Nothing, Nothing, DirectCast(raiseEventKeyword.Node, InternalSyntax.KeywordSyntax), name, argumentList) End Function ''' <summary> ''' Represent a RaiseEvent statement. ''' </summary> ''' <param name="name"> ''' The name of the event being raised. ''' </param> ''' <param name="argumentList"> ''' The argument list, if present. ''' </param> Public Shared Function RaiseEventStatement(name As IdentifierNameSyntax, argumentList As ArgumentListSyntax) As RaiseEventStatementSyntax Return SyntaxFactory.RaiseEventStatement(SyntaxFactory.Token(SyntaxKind.RaiseEventKeyword), name, argumentList) End Function ''' <summary> ''' Represent a RaiseEvent statement. ''' </summary> ''' <param name="name"> ''' The name of the event being raised. ''' </param> Public Shared Function RaiseEventStatement(name As IdentifierNameSyntax) As RaiseEventStatementSyntax Return SyntaxFactory.RaiseEventStatement(SyntaxFactory.Token(SyntaxKind.RaiseEventKeyword), name, Nothing) End Function ''' <summary> ''' Represents a "With" statement. This statement always occurs as the ''' BeginStatement of a WithBlock, and the body of the With is the Body of that ''' WithBlock. ''' </summary> ''' <param name="withKeyword"> ''' The "With" keyword. ''' </param> ''' <param name="expression"> ''' The expression that is the operand of the With statement. ''' </param> Public Shared Function WithStatement(withKeyword As SyntaxToken, expression As ExpressionSyntax) As WithStatementSyntax Select Case withKeyword.Kind() Case SyntaxKind.WithKeyword Case Else Throw new ArgumentException("withKeyword") End Select if expression Is Nothing Then Throw New ArgumentNullException(NameOf(expression)) End If Select Case expression.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("expression") End Select Return New WithStatementSyntax(SyntaxKind.WithStatement, Nothing, Nothing, DirectCast(withKeyword.Node, InternalSyntax.KeywordSyntax), expression) End Function ''' <summary> ''' Represents a "With" statement. This statement always occurs as the ''' BeginStatement of a WithBlock, and the body of the With is the Body of that ''' WithBlock. ''' </summary> ''' <param name="expression"> ''' The expression that is the operand of the With statement. ''' </param> Public Shared Function WithStatement(expression As ExpressionSyntax) As WithStatementSyntax Return SyntaxFactory.WithStatement(SyntaxFactory.Token(SyntaxKind.WithKeyword), expression) End Function ''' <summary> ''' Represents a ReDim statement. ''' </summary> ''' <param name="reDimKeyword"> ''' The "ReDim" keyword. ''' </param> ''' <param name="preserveKeyword"> ''' Returns Nothing if Kind=ReDim, returns the "Preserve" keyword if ''' Kind=RedimPreserve. ''' </param> ''' <param name="clauses"> ''' The list of ReDim clauses. ''' </param> Public Shared Function ReDimStatement(reDimKeyword As SyntaxToken, preserveKeyword As SyntaxToken, clauses As SeparatedSyntaxList(Of RedimClauseSyntax)) As ReDimStatementSyntax Select Case reDimKeyword.Kind() Case SyntaxKind.ReDimKeyword Case Else Throw new ArgumentException("reDimKeyword") End Select Return New ReDimStatementSyntax(SyntaxKind.ReDimStatement, Nothing, Nothing, DirectCast(reDimKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(preserveKeyword.Node, InternalSyntax.KeywordSyntax), clauses.Node) End Function ''' <summary> ''' Represents a ReDim statement. ''' </summary> ''' <param name="clauses"> ''' The list of ReDim clauses. ''' </param> Public Shared Function ReDimStatement(clauses As SeparatedSyntaxList(Of RedimClauseSyntax)) As ReDimStatementSyntax Return SyntaxFactory.ReDimStatement(SyntaxKind.ReDimStatement, SyntaxFactory.Token(SyntaxKind.ReDimKeyword), Nothing, clauses) End Function ''' <summary> ''' Represents a ReDim statement. ''' </summary> ''' <param name="clauses"> ''' The list of ReDim clauses. ''' </param> Public Shared Function ReDimStatement(ParamArray clauses As RedimClauseSyntax()) As ReDimStatementSyntax Return SyntaxFactory.ReDimStatement(SyntaxKind.ReDimStatement, SyntaxFactory.Token(SyntaxKind.ReDimKeyword), Nothing, SyntaxFactory.SeparatedList(Of RedimClauseSyntax)().AddRange(clauses)) End Function ''' <summary> ''' Represents a ReDim statement. ''' </summary> ''' <param name="reDimKeyword"> ''' The "ReDim" keyword. ''' </param> ''' <param name="preserveKeyword"> ''' Returns Nothing if Kind=ReDim, returns the "Preserve" keyword if ''' Kind=RedimPreserve. ''' </param> ''' <param name="clauses"> ''' The list of ReDim clauses. ''' </param> Public Shared Function ReDimPreserveStatement(reDimKeyword As SyntaxToken, preserveKeyword As SyntaxToken, clauses As SeparatedSyntaxList(Of RedimClauseSyntax)) As ReDimStatementSyntax Select Case reDimKeyword.Kind() Case SyntaxKind.ReDimKeyword Case Else Throw new ArgumentException("reDimKeyword") End Select Return New ReDimStatementSyntax(SyntaxKind.ReDimPreserveStatement, Nothing, Nothing, DirectCast(reDimKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(preserveKeyword.Node, InternalSyntax.KeywordSyntax), clauses.Node) End Function ''' <summary> ''' Represents a ReDim statement. ''' </summary> ''' <param name="clauses"> ''' The list of ReDim clauses. ''' </param> Public Shared Function ReDimPreserveStatement(clauses As SeparatedSyntaxList(Of RedimClauseSyntax)) As ReDimStatementSyntax Return SyntaxFactory.ReDimPreserveStatement(SyntaxFactory.Token(SyntaxKind.ReDimKeyword), Nothing, clauses) End Function ''' <summary> ''' Represents a ReDim statement. ''' </summary> ''' <param name="clauses"> ''' The list of ReDim clauses. ''' </param> Public Shared Function ReDimPreserveStatement(ParamArray clauses As RedimClauseSyntax()) As ReDimStatementSyntax Return SyntaxFactory.ReDimPreserveStatement(SyntaxFactory.Token(SyntaxKind.ReDimKeyword), Nothing, SyntaxFactory.SeparatedList(Of RedimClauseSyntax)().AddRange(clauses)) End Function ''' <summary> ''' Represents a ReDim statement. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' ReDimStatementSyntax. One of ReDimStatement, ReDimPreserveStatement. ''' </param> ''' <param name="reDimKeyword"> ''' The "ReDim" keyword. ''' </param> ''' <param name="preserveKeyword"> ''' Returns Nothing if Kind=ReDim, returns the "Preserve" keyword if ''' Kind=RedimPreserve. ''' </param> ''' <param name="clauses"> ''' The list of ReDim clauses. ''' </param> Public Shared Function ReDimStatement(ByVal kind As SyntaxKind, reDimKeyword As SyntaxToken, preserveKeyword As SyntaxToken, clauses As SeparatedSyntaxList(Of RedimClauseSyntax)) As ReDimStatementSyntax If Not SyntaxFacts.IsReDimStatement(kind) Then Throw New ArgumentException("kind") End If Select Case reDimKeyword.Kind() Case SyntaxKind.ReDimKeyword Case Else Throw new ArgumentException("reDimKeyword") End Select Return New ReDimStatementSyntax(kind, Nothing, Nothing, DirectCast(reDimKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(preserveKeyword.Node, InternalSyntax.KeywordSyntax), clauses.Node) End Function ''' <summary> ''' Represents a ReDim statement. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' ReDimStatementSyntax. One of ReDimStatement, ReDimPreserveStatement. ''' </param> ''' <param name="clauses"> ''' The list of ReDim clauses. ''' </param> Public Shared Function ReDimStatement(ByVal kind As SyntaxKind, clauses As SeparatedSyntaxList(Of RedimClauseSyntax)) As ReDimStatementSyntax Return SyntaxFactory.ReDimStatement(kind, SyntaxFactory.Token(SyntaxKind.ReDimKeyword), Nothing, clauses) End Function ''' <summary> ''' Represents a ReDim statement. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' ReDimStatementSyntax. One of ReDimStatement, ReDimPreserveStatement. ''' </param> ''' <param name="clauses"> ''' The list of ReDim clauses. ''' </param> Public Shared Function ReDimStatement(ByVal kind As SyntaxKind, ParamArray clauses As RedimClauseSyntax()) As ReDimStatementSyntax Return SyntaxFactory.ReDimStatement(kind, SyntaxFactory.Token(SyntaxKind.ReDimKeyword), Nothing, SyntaxFactory.SeparatedList(Of RedimClauseSyntax)().AddRange(clauses)) End Function ''' <summary> ''' Represents a ReDim statement clause. ''' </summary> ''' <param name="expression"> ''' The target of the ReDim statement. ''' </param> ''' <param name="arrayBounds"> ''' The ArraySizeInitializationModifier. ''' </param> Public Shared Function RedimClause(expression As ExpressionSyntax, arrayBounds As ArgumentListSyntax) As RedimClauseSyntax if expression Is Nothing Then Throw New ArgumentNullException(NameOf(expression)) End If Select Case expression.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("expression") End Select if arrayBounds Is Nothing Then Throw New ArgumentNullException(NameOf(arrayBounds)) End If Select Case arrayBounds.Kind() Case SyntaxKind.ArgumentList Case Else Throw new ArgumentException("arrayBounds") End Select Return New RedimClauseSyntax(SyntaxKind.RedimClause, Nothing, Nothing, expression, arrayBounds) End Function ''' <summary> ''' Represents an "Erase" statement. ''' </summary> ''' <param name="eraseKeyword"> ''' The "Erase" keyword. ''' </param> ''' <param name="expressions"> ''' A list of expressions denoting the arrays to erase. ''' </param> Public Shared Function EraseStatement(eraseKeyword As SyntaxToken, expressions As SeparatedSyntaxList(Of ExpressionSyntax)) As EraseStatementSyntax Select Case eraseKeyword.Kind() Case SyntaxKind.EraseKeyword Case Else Throw new ArgumentException("eraseKeyword") End Select Return New EraseStatementSyntax(SyntaxKind.EraseStatement, Nothing, Nothing, DirectCast(eraseKeyword.Node, InternalSyntax.KeywordSyntax), expressions.Node) End Function ''' <summary> ''' Represents an "Erase" statement. ''' </summary> ''' <param name="expressions"> ''' A list of expressions denoting the arrays to erase. ''' </param> Public Shared Function EraseStatement(expressions As SeparatedSyntaxList(Of ExpressionSyntax)) As EraseStatementSyntax Return SyntaxFactory.EraseStatement(SyntaxFactory.Token(SyntaxKind.EraseKeyword), expressions) End Function ''' <summary> ''' Represents an "Erase" statement. ''' </summary> ''' <param name="expressions"> ''' A list of expressions denoting the arrays to erase. ''' </param> Public Shared Function EraseStatement(ParamArray expressions As ExpressionSyntax()) As EraseStatementSyntax Return SyntaxFactory.EraseStatement(SyntaxFactory.Token(SyntaxKind.EraseKeyword), SyntaxFactory.SeparatedList(Of ExpressionSyntax)().AddRange(expressions)) End Function ''' <summary> ''' Represents a literal. The kind of literal is determined by the Kind property: ''' IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, ''' FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be ''' determined by casting the associated Token to the correct type and getting the ''' value from the token. ''' </summary> ''' <param name="token"> ''' The token that represents the literal. The Kind property determines what type ''' this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. ''' Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral ''' ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns ''' FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken ''' Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> ''' Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) ''' Kind=NothingLiteral ==> Returns Keyword (with it's kind being ''' NothingKeyword) ''' </param> Public Shared Function CharacterLiteralExpression(token As SyntaxToken) As LiteralExpressionSyntax Select Case token.Kind() Case SyntaxKind.IntegerLiteralToken : Case SyntaxKind.CharacterLiteralToken : Case SyntaxKind.DecimalLiteralToken : Case SyntaxKind.FloatingLiteralToken : Case SyntaxKind.DateLiteralToken : Case SyntaxKind.StringLiteralToken : Case SyntaxKind.TrueKeyword : Case SyntaxKind.FalseKeyword : Case SyntaxKind.NothingKeyword Case Else Throw new ArgumentException("token") End Select Return New LiteralExpressionSyntax(SyntaxKind.CharacterLiteralExpression, Nothing, Nothing, DirectCast(token.Node, InternalSyntax.SyntaxToken)) End Function ''' <summary> ''' Represents a literal. The kind of literal is determined by the Kind property: ''' IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, ''' FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be ''' determined by casting the associated Token to the correct type and getting the ''' value from the token. ''' </summary> ''' <param name="token"> ''' The token that represents the literal. The Kind property determines what type ''' this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. ''' Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral ''' ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns ''' FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken ''' Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> ''' Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) ''' Kind=NothingLiteral ==> Returns Keyword (with it's kind being ''' NothingKeyword) ''' </param> Public Shared Function TrueLiteralExpression(token As SyntaxToken) As LiteralExpressionSyntax Select Case token.Kind() Case SyntaxKind.IntegerLiteralToken : Case SyntaxKind.CharacterLiteralToken : Case SyntaxKind.DecimalLiteralToken : Case SyntaxKind.FloatingLiteralToken : Case SyntaxKind.DateLiteralToken : Case SyntaxKind.StringLiteralToken : Case SyntaxKind.TrueKeyword : Case SyntaxKind.FalseKeyword : Case SyntaxKind.NothingKeyword Case Else Throw new ArgumentException("token") End Select Return New LiteralExpressionSyntax(SyntaxKind.TrueLiteralExpression, Nothing, Nothing, DirectCast(token.Node, InternalSyntax.SyntaxToken)) End Function ''' <summary> ''' Represents a literal. The kind of literal is determined by the Kind property: ''' IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, ''' FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be ''' determined by casting the associated Token to the correct type and getting the ''' value from the token. ''' </summary> ''' <param name="token"> ''' The token that represents the literal. The Kind property determines what type ''' this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. ''' Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral ''' ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns ''' FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken ''' Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> ''' Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) ''' Kind=NothingLiteral ==> Returns Keyword (with it's kind being ''' NothingKeyword) ''' </param> Public Shared Function FalseLiteralExpression(token As SyntaxToken) As LiteralExpressionSyntax Select Case token.Kind() Case SyntaxKind.IntegerLiteralToken : Case SyntaxKind.CharacterLiteralToken : Case SyntaxKind.DecimalLiteralToken : Case SyntaxKind.FloatingLiteralToken : Case SyntaxKind.DateLiteralToken : Case SyntaxKind.StringLiteralToken : Case SyntaxKind.TrueKeyword : Case SyntaxKind.FalseKeyword : Case SyntaxKind.NothingKeyword Case Else Throw new ArgumentException("token") End Select Return New LiteralExpressionSyntax(SyntaxKind.FalseLiteralExpression, Nothing, Nothing, DirectCast(token.Node, InternalSyntax.SyntaxToken)) End Function ''' <summary> ''' Represents a literal. The kind of literal is determined by the Kind property: ''' IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, ''' FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be ''' determined by casting the associated Token to the correct type and getting the ''' value from the token. ''' </summary> ''' <param name="token"> ''' The token that represents the literal. The Kind property determines what type ''' this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. ''' Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral ''' ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns ''' FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken ''' Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> ''' Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) ''' Kind=NothingLiteral ==> Returns Keyword (with it's kind being ''' NothingKeyword) ''' </param> Public Shared Function NumericLiteralExpression(token As SyntaxToken) As LiteralExpressionSyntax Select Case token.Kind() Case SyntaxKind.IntegerLiteralToken : Case SyntaxKind.CharacterLiteralToken : Case SyntaxKind.DecimalLiteralToken : Case SyntaxKind.FloatingLiteralToken : Case SyntaxKind.DateLiteralToken : Case SyntaxKind.StringLiteralToken : Case SyntaxKind.TrueKeyword : Case SyntaxKind.FalseKeyword : Case SyntaxKind.NothingKeyword Case Else Throw new ArgumentException("token") End Select Return New LiteralExpressionSyntax(SyntaxKind.NumericLiteralExpression, Nothing, Nothing, DirectCast(token.Node, InternalSyntax.SyntaxToken)) End Function ''' <summary> ''' Represents a literal. The kind of literal is determined by the Kind property: ''' IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, ''' FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be ''' determined by casting the associated Token to the correct type and getting the ''' value from the token. ''' </summary> ''' <param name="token"> ''' The token that represents the literal. The Kind property determines what type ''' this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. ''' Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral ''' ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns ''' FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken ''' Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> ''' Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) ''' Kind=NothingLiteral ==> Returns Keyword (with it's kind being ''' NothingKeyword) ''' </param> Public Shared Function DateLiteralExpression(token As SyntaxToken) As LiteralExpressionSyntax Select Case token.Kind() Case SyntaxKind.IntegerLiteralToken : Case SyntaxKind.CharacterLiteralToken : Case SyntaxKind.DecimalLiteralToken : Case SyntaxKind.FloatingLiteralToken : Case SyntaxKind.DateLiteralToken : Case SyntaxKind.StringLiteralToken : Case SyntaxKind.TrueKeyword : Case SyntaxKind.FalseKeyword : Case SyntaxKind.NothingKeyword Case Else Throw new ArgumentException("token") End Select Return New LiteralExpressionSyntax(SyntaxKind.DateLiteralExpression, Nothing, Nothing, DirectCast(token.Node, InternalSyntax.SyntaxToken)) End Function ''' <summary> ''' Represents a literal. The kind of literal is determined by the Kind property: ''' IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, ''' FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be ''' determined by casting the associated Token to the correct type and getting the ''' value from the token. ''' </summary> ''' <param name="token"> ''' The token that represents the literal. The Kind property determines what type ''' this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. ''' Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral ''' ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns ''' FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken ''' Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> ''' Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) ''' Kind=NothingLiteral ==> Returns Keyword (with it's kind being ''' NothingKeyword) ''' </param> Public Shared Function StringLiteralExpression(token As SyntaxToken) As LiteralExpressionSyntax Select Case token.Kind() Case SyntaxKind.IntegerLiteralToken : Case SyntaxKind.CharacterLiteralToken : Case SyntaxKind.DecimalLiteralToken : Case SyntaxKind.FloatingLiteralToken : Case SyntaxKind.DateLiteralToken : Case SyntaxKind.StringLiteralToken : Case SyntaxKind.TrueKeyword : Case SyntaxKind.FalseKeyword : Case SyntaxKind.NothingKeyword Case Else Throw new ArgumentException("token") End Select Return New LiteralExpressionSyntax(SyntaxKind.StringLiteralExpression, Nothing, Nothing, DirectCast(token.Node, InternalSyntax.SyntaxToken)) End Function ''' <summary> ''' Represents a literal. The kind of literal is determined by the Kind property: ''' IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, ''' FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be ''' determined by casting the associated Token to the correct type and getting the ''' value from the token. ''' </summary> ''' <param name="token"> ''' The token that represents the literal. The Kind property determines what type ''' this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. ''' Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral ''' ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns ''' FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken ''' Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> ''' Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) ''' Kind=NothingLiteral ==> Returns Keyword (with it's kind being ''' NothingKeyword) ''' </param> Public Shared Function NothingLiteralExpression(token As SyntaxToken) As LiteralExpressionSyntax Select Case token.Kind() Case SyntaxKind.IntegerLiteralToken : Case SyntaxKind.CharacterLiteralToken : Case SyntaxKind.DecimalLiteralToken : Case SyntaxKind.FloatingLiteralToken : Case SyntaxKind.DateLiteralToken : Case SyntaxKind.StringLiteralToken : Case SyntaxKind.TrueKeyword : Case SyntaxKind.FalseKeyword : Case SyntaxKind.NothingKeyword Case Else Throw new ArgumentException("token") End Select Return New LiteralExpressionSyntax(SyntaxKind.NothingLiteralExpression, Nothing, Nothing, DirectCast(token.Node, InternalSyntax.SyntaxToken)) End Function ''' <summary> ''' Represents a literal. The kind of literal is determined by the Kind property: ''' IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, ''' FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be ''' determined by casting the associated Token to the correct type and getting the ''' value from the token. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' LiteralExpressionSyntax. One of CharacterLiteralExpression, ''' TrueLiteralExpression, FalseLiteralExpression, NumericLiteralExpression, ''' DateLiteralExpression, StringLiteralExpression, NothingLiteralExpression. ''' </param> ''' <param name="token"> ''' The token that represents the literal. The Kind property determines what type ''' this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. ''' Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral ''' ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns ''' FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken ''' Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> ''' Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) ''' Kind=NothingLiteral ==> Returns Keyword (with it's kind being ''' NothingKeyword) ''' </param> Public Shared Function LiteralExpression(ByVal kind As SyntaxKind, token As SyntaxToken) As LiteralExpressionSyntax If Not SyntaxFacts.IsLiteralExpression(kind) Then Throw New ArgumentException("kind") End If Select Case token.Kind() Case SyntaxKind.IntegerLiteralToken : Case SyntaxKind.CharacterLiteralToken : Case SyntaxKind.DecimalLiteralToken : Case SyntaxKind.FloatingLiteralToken : Case SyntaxKind.DateLiteralToken : Case SyntaxKind.StringLiteralToken : Case SyntaxKind.TrueKeyword : Case SyntaxKind.FalseKeyword : Case SyntaxKind.NothingKeyword Case Else Throw new ArgumentException("token") End Select Return New LiteralExpressionSyntax(kind, Nothing, Nothing, DirectCast(token.Node, InternalSyntax.SyntaxToken)) End Function ''' <summary> ''' Represents a parenthesized expression. ''' </summary> ''' <param name="openParenToken"> ''' The "(" token ''' </param> ''' <param name="expression"> ''' The expression inside the parentheses. ''' </param> ''' <param name="closeParenToken"> ''' The ")" token ''' </param> Public Shared Function ParenthesizedExpression(openParenToken As SyntaxToken, expression As ExpressionSyntax, closeParenToken As SyntaxToken) As ParenthesizedExpressionSyntax Select Case openParenToken.Kind() Case SyntaxKind.OpenParenToken Case Else Throw new ArgumentException("openParenToken") End Select if expression Is Nothing Then Throw New ArgumentNullException(NameOf(expression)) End If Select Case expression.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("expression") End Select Select Case closeParenToken.Kind() Case SyntaxKind.CloseParenToken Case Else Throw new ArgumentException("closeParenToken") End Select Return New ParenthesizedExpressionSyntax(SyntaxKind.ParenthesizedExpression, Nothing, Nothing, DirectCast(openParenToken.Node, InternalSyntax.PunctuationSyntax), expression, DirectCast(closeParenToken.Node, InternalSyntax.PunctuationSyntax)) End Function ''' <summary> ''' Represents a parenthesized expression. ''' </summary> ''' <param name="expression"> ''' The expression inside the parentheses. ''' </param> Public Shared Function ParenthesizedExpression(expression As ExpressionSyntax) As ParenthesizedExpressionSyntax Return SyntaxFactory.ParenthesizedExpression(SyntaxFactory.Token(SyntaxKind.OpenParenToken), expression, SyntaxFactory.Token(SyntaxKind.CloseParenToken)) End Function ''' <summary> ''' Represents a tuple literal expression. ''' </summary> ''' <param name="openParenToken"> ''' The "(" token ''' </param> ''' <param name="arguments"> ''' The list of tuple arguments. ''' </param> ''' <param name="closeParenToken"> ''' The ")" token ''' </param> Public Shared Function TupleExpression(openParenToken As SyntaxToken, arguments As SeparatedSyntaxList(Of SimpleArgumentSyntax), closeParenToken As SyntaxToken) As TupleExpressionSyntax Select Case openParenToken.Kind() Case SyntaxKind.OpenParenToken Case Else Throw new ArgumentException("openParenToken") End Select Select Case closeParenToken.Kind() Case SyntaxKind.CloseParenToken Case Else Throw new ArgumentException("closeParenToken") End Select Return New TupleExpressionSyntax(SyntaxKind.TupleExpression, Nothing, Nothing, DirectCast(openParenToken.Node, InternalSyntax.PunctuationSyntax), arguments.Node, DirectCast(closeParenToken.Node, InternalSyntax.PunctuationSyntax)) End Function ''' <summary> ''' Represents a tuple literal expression. ''' </summary> ''' <param name="arguments"> ''' The list of tuple arguments. ''' </param> Public Shared Function TupleExpression(arguments As SeparatedSyntaxList(Of SimpleArgumentSyntax)) As TupleExpressionSyntax Return SyntaxFactory.TupleExpression(SyntaxFactory.Token(SyntaxKind.OpenParenToken), arguments, SyntaxFactory.Token(SyntaxKind.CloseParenToken)) End Function ''' <summary> ''' Represents a tuple literal expression. ''' </summary> ''' <param name="arguments"> ''' The list of tuple arguments. ''' </param> Public Shared Function TupleExpression(ParamArray arguments As SimpleArgumentSyntax()) As TupleExpressionSyntax Return SyntaxFactory.TupleExpression(SyntaxFactory.Token(SyntaxKind.OpenParenToken), SyntaxFactory.SeparatedList(Of SimpleArgumentSyntax)().AddRange(arguments), SyntaxFactory.Token(SyntaxKind.CloseParenToken)) End Function ''' <summary> ''' Represents a tuple type expression. ''' </summary> ''' <param name="openParenToken"> ''' The "(" token ''' </param> ''' <param name="elements"> ''' The list of tuple elements. ''' </param> ''' <param name="closeParenToken"> ''' The ")" token ''' </param> Public Shared Function TupleType(openParenToken As SyntaxToken, elements As SeparatedSyntaxList(Of TupleElementSyntax), closeParenToken As SyntaxToken) As TupleTypeSyntax Select Case openParenToken.Kind() Case SyntaxKind.OpenParenToken Case Else Throw new ArgumentException("openParenToken") End Select Select Case closeParenToken.Kind() Case SyntaxKind.CloseParenToken Case Else Throw new ArgumentException("closeParenToken") End Select Return New TupleTypeSyntax(SyntaxKind.TupleType, Nothing, Nothing, DirectCast(openParenToken.Node, InternalSyntax.PunctuationSyntax), elements.Node, DirectCast(closeParenToken.Node, InternalSyntax.PunctuationSyntax)) End Function ''' <summary> ''' Represents a tuple type expression. ''' </summary> ''' <param name="elements"> ''' The list of tuple elements. ''' </param> Public Shared Function TupleType(elements As SeparatedSyntaxList(Of TupleElementSyntax)) As TupleTypeSyntax Return SyntaxFactory.TupleType(SyntaxFactory.Token(SyntaxKind.OpenParenToken), elements, SyntaxFactory.Token(SyntaxKind.CloseParenToken)) End Function ''' <summary> ''' Represents a tuple type expression. ''' </summary> ''' <param name="elements"> ''' The list of tuple elements. ''' </param> Public Shared Function TupleType(ParamArray elements As TupleElementSyntax()) As TupleTypeSyntax Return SyntaxFactory.TupleType(SyntaxFactory.Token(SyntaxKind.OpenParenToken), SyntaxFactory.SeparatedList(Of TupleElementSyntax)().AddRange(elements), SyntaxFactory.Token(SyntaxKind.CloseParenToken)) End Function ''' <summary> ''' Represents a single declaration of a tuple element supplying only the type. ''' </summary> ''' <param name="type"> ''' The type-name part of the tuple element syntax. ''' </param> Public Shared Function TypedTupleElement(type As TypeSyntax) As TypedTupleElementSyntax if type Is Nothing Then Throw New ArgumentNullException(NameOf(type)) End If Select Case type.Kind() Case SyntaxKind.TupleType, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference Case Else Throw new ArgumentException("type") End Select Return New TypedTupleElementSyntax(SyntaxKind.TypedTupleElement, Nothing, Nothing, type) End Function ''' <summary> ''' Represents a single declaration of a tuple element supplying element name and ''' optionally a type. ''' </summary> ''' <param name="identifier"> ''' The name of the element. ''' </param> ''' <param name="asClause"> ''' A simple "As" clause specifying the type of the tuple element. ''' </param> Public Shared Function NamedTupleElement(identifier As SyntaxToken, asClause As SimpleAsClauseSyntax) As NamedTupleElementSyntax Select Case identifier.Kind() Case SyntaxKind.IdentifierToken Case Else Throw new ArgumentException("identifier") End Select Return New NamedTupleElementSyntax(SyntaxKind.NamedTupleElement, Nothing, Nothing, DirectCast(identifier.Node, InternalSyntax.IdentifierTokenSyntax), asClause) End Function ''' <summary> ''' Represents a single declaration of a tuple element supplying element name and ''' optionally a type. ''' </summary> ''' <param name="identifier"> ''' The name of the element. ''' </param> Public Shared Function NamedTupleElement(identifier As SyntaxToken) As NamedTupleElementSyntax Return SyntaxFactory.NamedTupleElement(identifier, Nothing) End Function ''' <summary> ''' Represents a single declaration of a tuple element supplying element name and ''' optionally a type. ''' </summary> ''' <param name="identifier"> ''' The name of the element. ''' </param> Public Shared Function NamedTupleElement(identifier As String) As NamedTupleElementSyntax Return SyntaxFactory.NamedTupleElement(SyntaxFactory.Identifier(identifier), Nothing) End Function ''' <summary> ''' Identifies the special instance "Me" ''' </summary> ''' <param name="keyword"> ''' The "Me", "MyClass" or "MyBase" keyword. ''' </param> Public Shared Function MeExpression(keyword As SyntaxToken) As MeExpressionSyntax Select Case keyword.Kind() Case SyntaxKind.MeKeyword : Case SyntaxKind.MyClassKeyword : Case SyntaxKind.MyBaseKeyword Case Else Throw new ArgumentException("keyword") End Select Return New MeExpressionSyntax(SyntaxKind.MeExpression, Nothing, Nothing, DirectCast(keyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' Identifies the special instance "Me" ''' </summary> Public Shared Function MeExpression() As MeExpressionSyntax Return SyntaxFactory.MeExpression(SyntaxFactory.Token(SyntaxKind.MeKeyword)) End Function ''' <summary> ''' Identifies the special instance "MyBase" ''' </summary> ''' <param name="keyword"> ''' The "Me", "MyClass" or "MyBase" keyword. ''' </param> Public Shared Function MyBaseExpression(keyword As SyntaxToken) As MyBaseExpressionSyntax Select Case keyword.Kind() Case SyntaxKind.MyBaseKeyword Case Else Throw new ArgumentException("keyword") End Select Return New MyBaseExpressionSyntax(SyntaxKind.MyBaseExpression, Nothing, Nothing, DirectCast(keyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' Identifies the special instance "MyBase" ''' </summary> Public Shared Function MyBaseExpression() As MyBaseExpressionSyntax Return SyntaxFactory.MyBaseExpression(SyntaxFactory.Token(SyntaxKind.MyBaseKeyword)) End Function ''' <summary> ''' Identifies the special instance "MyClass" ''' </summary> ''' <param name="keyword"> ''' The "Me", "MyClass" or "MyBase" keyword. ''' </param> Public Shared Function MyClassExpression(keyword As SyntaxToken) As MyClassExpressionSyntax Select Case keyword.Kind() Case SyntaxKind.MyClassKeyword Case Else Throw new ArgumentException("keyword") End Select Return New MyClassExpressionSyntax(SyntaxKind.MyClassExpression, Nothing, Nothing, DirectCast(keyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' Identifies the special instance "MyClass" ''' </summary> Public Shared Function MyClassExpression() As MyClassExpressionSyntax Return SyntaxFactory.MyClassExpression(SyntaxFactory.Token(SyntaxKind.MyClassKeyword)) End Function ''' <summary> ''' Represents a GetType expression. ''' </summary> ''' <param name="getTypeKeyword"> ''' The "GetType" keyword. ''' </param> ''' <param name="openParenToken"> ''' The "(" token. ''' </param> ''' <param name="type"> ''' The type to get the Type object for. This can be an open generic type. ''' </param> ''' <param name="closeParenToken"> ''' The ")" token. ''' </param> Public Shared Function GetTypeExpression(getTypeKeyword As SyntaxToken, openParenToken As SyntaxToken, type As TypeSyntax, closeParenToken As SyntaxToken) As GetTypeExpressionSyntax Select Case getTypeKeyword.Kind() Case SyntaxKind.GetTypeKeyword Case Else Throw new ArgumentException("getTypeKeyword") End Select Select Case openParenToken.Kind() Case SyntaxKind.OpenParenToken Case Else Throw new ArgumentException("openParenToken") End Select if type Is Nothing Then Throw New ArgumentNullException(NameOf(type)) End If Select Case type.Kind() Case SyntaxKind.TupleType, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference Case Else Throw new ArgumentException("type") End Select Select Case closeParenToken.Kind() Case SyntaxKind.CloseParenToken Case Else Throw new ArgumentException("closeParenToken") End Select Return New GetTypeExpressionSyntax(SyntaxKind.GetTypeExpression, Nothing, Nothing, DirectCast(getTypeKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(openParenToken.Node, InternalSyntax.PunctuationSyntax), type, DirectCast(closeParenToken.Node, InternalSyntax.PunctuationSyntax)) End Function ''' <summary> ''' Represents a GetType expression. ''' </summary> ''' <param name="type"> ''' The type to get the Type object for. This can be an open generic type. ''' </param> Public Shared Function GetTypeExpression(type As TypeSyntax) As GetTypeExpressionSyntax Return SyntaxFactory.GetTypeExpression(SyntaxFactory.Token(SyntaxKind.GetTypeKeyword), SyntaxFactory.Token(SyntaxKind.OpenParenToken), type, SyntaxFactory.Token(SyntaxKind.CloseParenToken)) End Function ''' <summary> ''' Represents a TypeOf...Is or IsNot expression. ''' </summary> ''' <param name="typeOfKeyword"> ''' The "TypeOf" keyword. ''' </param> ''' <param name="expression"> ''' The expression being tested. ''' </param> ''' <param name="operatorToken"> ''' The "Is" or "IsNot" keyword. ''' </param> ''' <param name="type"> ''' The name of the type being tested against. ''' </param> Public Shared Function TypeOfIsExpression(typeOfKeyword As SyntaxToken, expression As ExpressionSyntax, operatorToken As SyntaxToken, type As TypeSyntax) As TypeOfExpressionSyntax Select Case typeOfKeyword.Kind() Case SyntaxKind.TypeOfKeyword Case Else Throw new ArgumentException("typeOfKeyword") End Select if expression Is Nothing Then Throw New ArgumentNullException(NameOf(expression)) End If Select Case expression.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("expression") End Select Select Case operatorToken.Kind() Case SyntaxKind.IsKeyword : Case SyntaxKind.IsNotKeyword Case Else Throw new ArgumentException("operatorToken") End Select if type Is Nothing Then Throw New ArgumentNullException(NameOf(type)) End If Select Case type.Kind() Case SyntaxKind.TupleType, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference Case Else Throw new ArgumentException("type") End Select Return New TypeOfExpressionSyntax(SyntaxKind.TypeOfIsExpression, Nothing, Nothing, DirectCast(typeOfKeyword.Node, InternalSyntax.KeywordSyntax), expression, DirectCast(operatorToken.Node, InternalSyntax.KeywordSyntax), type) End Function ''' <summary> ''' Represents a TypeOf...Is or IsNot expression. ''' </summary> ''' <param name="expression"> ''' The expression being tested. ''' </param> ''' <param name="type"> ''' The name of the type being tested against. ''' </param> Public Shared Function TypeOfIsExpression(expression As ExpressionSyntax, type As TypeSyntax) As TypeOfExpressionSyntax Return SyntaxFactory.TypeOfIsExpression(SyntaxFactory.Token(SyntaxKind.TypeOfKeyword), expression, SyntaxFactory.Token(SyntaxKind.IsKeyword), type) End Function ''' <summary> ''' Represents a TypeOf...Is or IsNot expression. ''' </summary> ''' <param name="typeOfKeyword"> ''' The "TypeOf" keyword. ''' </param> ''' <param name="expression"> ''' The expression being tested. ''' </param> ''' <param name="operatorToken"> ''' The "Is" or "IsNot" keyword. ''' </param> ''' <param name="type"> ''' The name of the type being tested against. ''' </param> Public Shared Function TypeOfIsNotExpression(typeOfKeyword As SyntaxToken, expression As ExpressionSyntax, operatorToken As SyntaxToken, type As TypeSyntax) As TypeOfExpressionSyntax Select Case typeOfKeyword.Kind() Case SyntaxKind.TypeOfKeyword Case Else Throw new ArgumentException("typeOfKeyword") End Select if expression Is Nothing Then Throw New ArgumentNullException(NameOf(expression)) End If Select Case expression.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("expression") End Select Select Case operatorToken.Kind() Case SyntaxKind.IsNotKeyword Case Else Throw new ArgumentException("operatorToken") End Select if type Is Nothing Then Throw New ArgumentNullException(NameOf(type)) End If Select Case type.Kind() Case SyntaxKind.TupleType, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference Case Else Throw new ArgumentException("type") End Select Return New TypeOfExpressionSyntax(SyntaxKind.TypeOfIsNotExpression, Nothing, Nothing, DirectCast(typeOfKeyword.Node, InternalSyntax.KeywordSyntax), expression, DirectCast(operatorToken.Node, InternalSyntax.KeywordSyntax), type) End Function ''' <summary> ''' Represents a TypeOf...Is or IsNot expression. ''' </summary> ''' <param name="expression"> ''' The expression being tested. ''' </param> ''' <param name="type"> ''' The name of the type being tested against. ''' </param> Public Shared Function TypeOfIsNotExpression(expression As ExpressionSyntax, type As TypeSyntax) As TypeOfExpressionSyntax Return SyntaxFactory.TypeOfIsNotExpression(SyntaxFactory.Token(SyntaxKind.TypeOfKeyword), expression, SyntaxFactory.Token(SyntaxKind.IsNotKeyword), type) End Function ''' <summary> ''' Represents a TypeOf...Is or IsNot expression. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' TypeOfExpressionSyntax. One of TypeOfIsExpression, TypeOfIsNotExpression. ''' </param> ''' <param name="typeOfKeyword"> ''' The "TypeOf" keyword. ''' </param> ''' <param name="expression"> ''' The expression being tested. ''' </param> ''' <param name="operatorToken"> ''' The "Is" or "IsNot" keyword. ''' </param> ''' <param name="type"> ''' The name of the type being tested against. ''' </param> Public Shared Function TypeOfExpression(ByVal kind As SyntaxKind, typeOfKeyword As SyntaxToken, expression As ExpressionSyntax, operatorToken As SyntaxToken, type As TypeSyntax) As TypeOfExpressionSyntax If Not SyntaxFacts.IsTypeOfExpression(kind) Then Throw New ArgumentException("kind") End If Select Case typeOfKeyword.Kind() Case SyntaxKind.TypeOfKeyword Case Else Throw new ArgumentException("typeOfKeyword") End Select if expression Is Nothing Then Throw New ArgumentNullException(NameOf(expression)) End If Select Case expression.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("expression") End Select If (Not operatorToken.IsKind(GetTypeOfExpressionOperatorTokenKind(kind))) Then Throw new ArgumentException("operatorToken") End If if type Is Nothing Then Throw New ArgumentNullException(NameOf(type)) End If Select Case type.Kind() Case SyntaxKind.TupleType, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference Case Else Throw new ArgumentException("type") End Select Return New TypeOfExpressionSyntax(kind, Nothing, Nothing, DirectCast(typeOfKeyword.Node, InternalSyntax.KeywordSyntax), expression, DirectCast(operatorToken.Node, InternalSyntax.KeywordSyntax), type) End Function Private Shared Function GetTypeOfExpressionOperatorTokenKind(kind As SyntaxKind) As SyntaxKind Select Case kind Case SyntaxKind.TypeOfIsExpression Return SyntaxKind.IsKeyword Case SyntaxKind.TypeOfIsNotExpression Return SyntaxKind.IsNotKeyword Case Else Throw New ArgumentException("OperatorToken") End Select End Function ''' <summary> ''' Represents a TypeOf...Is or IsNot expression. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' TypeOfExpressionSyntax. One of TypeOfIsExpression, TypeOfIsNotExpression. ''' </param> ''' <param name="expression"> ''' The expression being tested. ''' </param> ''' <param name="operatorToken"> ''' The "Is" or "IsNot" keyword. ''' </param> ''' <param name="type"> ''' The name of the type being tested against. ''' </param> Public Shared Function TypeOfExpression(ByVal kind As SyntaxKind, expression As ExpressionSyntax, operatorToken As SyntaxToken, type As TypeSyntax) As TypeOfExpressionSyntax Return SyntaxFactory.TypeOfExpression(kind, SyntaxFactory.Token(SyntaxKind.TypeOfKeyword), expression, operatorToken, type) End Function ''' <summary> ''' Represents a GetXmlNamespace expression. ''' </summary> ''' <param name="getXmlNamespaceKeyword"> ''' The "GetXmlNamespace" keyword. ''' </param> ''' <param name="openParenToken"> ''' The "(" token. ''' </param> ''' <param name="name"> ''' The Xml namespace name being referenced. ''' </param> ''' <param name="closeParenToken"> ''' The ")" token. ''' </param> Public Shared Function GetXmlNamespaceExpression(getXmlNamespaceKeyword As SyntaxToken, openParenToken As SyntaxToken, name As XmlPrefixNameSyntax, closeParenToken As SyntaxToken) As GetXmlNamespaceExpressionSyntax Select Case getXmlNamespaceKeyword.Kind() Case SyntaxKind.GetXmlNamespaceKeyword Case Else Throw new ArgumentException("getXmlNamespaceKeyword") End Select Select Case openParenToken.Kind() Case SyntaxKind.OpenParenToken Case Else Throw new ArgumentException("openParenToken") End Select Select Case closeParenToken.Kind() Case SyntaxKind.CloseParenToken Case Else Throw new ArgumentException("closeParenToken") End Select Return New GetXmlNamespaceExpressionSyntax(SyntaxKind.GetXmlNamespaceExpression, Nothing, Nothing, DirectCast(getXmlNamespaceKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(openParenToken.Node, InternalSyntax.PunctuationSyntax), name, DirectCast(closeParenToken.Node, InternalSyntax.PunctuationSyntax)) End Function ''' <summary> ''' Represents a GetXmlNamespace expression. ''' </summary> Public Shared Function GetXmlNamespaceExpression() As GetXmlNamespaceExpressionSyntax Return SyntaxFactory.GetXmlNamespaceExpression(SyntaxFactory.Token(SyntaxKind.GetXmlNamespaceKeyword), SyntaxFactory.Token(SyntaxKind.OpenParenToken), Nothing, SyntaxFactory.Token(SyntaxKind.CloseParenToken)) End Function ''' <summary> ''' Represents member access (.name) or dictionary access (!name). The Kind ''' property determines which kind of access. ''' </summary> ''' <param name="expression"> ''' The expression on the left-hand-side of the "." or "!" token. ''' </param> ''' <param name="operatorToken"> ''' The "." or "!" token. ''' </param> ''' <param name="name"> ''' The identifier after the "." or "!" token. ''' </param> Public Shared Function SimpleMemberAccessExpression(expression As ExpressionSyntax, operatorToken As SyntaxToken, name As SimpleNameSyntax) As MemberAccessExpressionSyntax Select Case operatorToken.Kind() Case SyntaxKind.DotToken : Case SyntaxKind.ExclamationToken Case Else Throw new ArgumentException("operatorToken") End Select if name Is Nothing Then Throw New ArgumentNullException(NameOf(name)) End If Select Case name.Kind() Case SyntaxKind.IdentifierName, SyntaxKind.GenericName Case Else Throw new ArgumentException("name") End Select Return New MemberAccessExpressionSyntax(SyntaxKind.SimpleMemberAccessExpression, Nothing, Nothing, expression, DirectCast(operatorToken.Node, InternalSyntax.PunctuationSyntax), name) End Function ''' <summary> ''' Represents member access (.name) or dictionary access (!name). The Kind ''' property determines which kind of access. ''' </summary> ''' <param name="expression"> ''' The expression on the left-hand-side of the "." or "!" token. ''' </param> ''' <param name="name"> ''' The identifier after the "." or "!" token. ''' </param> Public Shared Function SimpleMemberAccessExpression(expression As ExpressionSyntax, name As SimpleNameSyntax) As MemberAccessExpressionSyntax Return SyntaxFactory.SimpleMemberAccessExpression(expression, SyntaxFactory.Token(SyntaxKind.DotToken), name) End Function ''' <summary> ''' Represents member access (.name) or dictionary access (!name). The Kind ''' property determines which kind of access. ''' </summary> ''' <param name="name"> ''' The identifier after the "." or "!" token. ''' </param> Public Shared Function SimpleMemberAccessExpression(name As SimpleNameSyntax) As MemberAccessExpressionSyntax Return SyntaxFactory.SimpleMemberAccessExpression(Nothing, SyntaxFactory.Token(SyntaxKind.DotToken), name) End Function ''' <summary> ''' Represents member access (.name) or dictionary access (!name). The Kind ''' property determines which kind of access. ''' </summary> ''' <param name="expression"> ''' The expression on the left-hand-side of the "." or "!" token. ''' </param> ''' <param name="operatorToken"> ''' The "." or "!" token. ''' </param> ''' <param name="name"> ''' The identifier after the "." or "!" token. ''' </param> Public Shared Function DictionaryAccessExpression(expression As ExpressionSyntax, operatorToken As SyntaxToken, name As SimpleNameSyntax) As MemberAccessExpressionSyntax Select Case operatorToken.Kind() Case SyntaxKind.ExclamationToken Case Else Throw new ArgumentException("operatorToken") End Select if name Is Nothing Then Throw New ArgumentNullException(NameOf(name)) End If Select Case name.Kind() Case SyntaxKind.IdentifierName, SyntaxKind.GenericName Case Else Throw new ArgumentException("name") End Select Return New MemberAccessExpressionSyntax(SyntaxKind.DictionaryAccessExpression, Nothing, Nothing, expression, DirectCast(operatorToken.Node, InternalSyntax.PunctuationSyntax), name) End Function ''' <summary> ''' Represents member access (.name) or dictionary access (!name). The Kind ''' property determines which kind of access. ''' </summary> ''' <param name="expression"> ''' The expression on the left-hand-side of the "." or "!" token. ''' </param> ''' <param name="name"> ''' The identifier after the "." or "!" token. ''' </param> Public Shared Function DictionaryAccessExpression(expression As ExpressionSyntax, name As SimpleNameSyntax) As MemberAccessExpressionSyntax Return SyntaxFactory.DictionaryAccessExpression(expression, SyntaxFactory.Token(SyntaxKind.ExclamationToken), name) End Function ''' <summary> ''' Represents member access (.name) or dictionary access (!name). The Kind ''' property determines which kind of access. ''' </summary> ''' <param name="name"> ''' The identifier after the "." or "!" token. ''' </param> Public Shared Function DictionaryAccessExpression(name As SimpleNameSyntax) As MemberAccessExpressionSyntax Return SyntaxFactory.DictionaryAccessExpression(Nothing, SyntaxFactory.Token(SyntaxKind.ExclamationToken), name) End Function ''' <summary> ''' Represents member access (.name) or dictionary access (!name). The Kind ''' property determines which kind of access. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' MemberAccessExpressionSyntax. One of SimpleMemberAccessExpression, ''' DictionaryAccessExpression. ''' </param> ''' <param name="expression"> ''' The expression on the left-hand-side of the "." or "!" token. ''' </param> ''' <param name="operatorToken"> ''' The "." or "!" token. ''' </param> ''' <param name="name"> ''' The identifier after the "." or "!" token. ''' </param> Public Shared Function MemberAccessExpression(ByVal kind As SyntaxKind, expression As ExpressionSyntax, operatorToken As SyntaxToken, name As SimpleNameSyntax) As MemberAccessExpressionSyntax If Not SyntaxFacts.IsMemberAccessExpression(kind) Then Throw New ArgumentException("kind") End If If (Not operatorToken.IsKind(GetMemberAccessExpressionOperatorTokenKind(kind))) Then Throw new ArgumentException("operatorToken") End If if name Is Nothing Then Throw New ArgumentNullException(NameOf(name)) End If Select Case name.Kind() Case SyntaxKind.IdentifierName, SyntaxKind.GenericName Case Else Throw new ArgumentException("name") End Select Return New MemberAccessExpressionSyntax(kind, Nothing, Nothing, expression, DirectCast(operatorToken.Node, InternalSyntax.PunctuationSyntax), name) End Function Private Shared Function GetMemberAccessExpressionOperatorTokenKind(kind As SyntaxKind) As SyntaxKind Select Case kind Case SyntaxKind.SimpleMemberAccessExpression Return SyntaxKind.DotToken Case SyntaxKind.DictionaryAccessExpression Return SyntaxKind.ExclamationToken Case Else Throw New ArgumentException("OperatorToken") End Select End Function ''' <summary> ''' Represents member access (.name) or dictionary access (!name). The Kind ''' property determines which kind of access. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' MemberAccessExpressionSyntax. One of SimpleMemberAccessExpression, ''' DictionaryAccessExpression. ''' </param> ''' <param name="operatorToken"> ''' The "." or "!" token. ''' </param> ''' <param name="name"> ''' The identifier after the "." or "!" token. ''' </param> Public Shared Function MemberAccessExpression(ByVal kind As SyntaxKind, operatorToken As SyntaxToken, name As SimpleNameSyntax) As MemberAccessExpressionSyntax Return SyntaxFactory.MemberAccessExpression(kind, Nothing, operatorToken, name) End Function ''' <summary> ''' Represents an XML member element access (node.<Element>), attribute ''' access (node.@Attribute) or descendants access (node...<Descendant>). The ''' Kind property determines which kind of access. ''' </summary> ''' <param name="base"> ''' The expression on the left-hand-side of the ".", ".@" or "..." . ''' </param> ''' <param name="token1"> ''' The initial dot "." part of the separator. ''' </param> ''' <param name="token2"> ''' The "@" part of .@ or the second "." of "...". ''' </param> ''' <param name="token3"> ''' The third "." in a "..." separator. ''' </param> ''' <param name="name"> ''' The identifier after the ".", ".@" or "..." ''' </param> Public Shared Function XmlElementAccessExpression(base As ExpressionSyntax, token1 As SyntaxToken, token2 As SyntaxToken, token3 As SyntaxToken, name As XmlNodeSyntax) As XmlMemberAccessExpressionSyntax Select Case token1.Kind() Case SyntaxKind.DotToken Case Else Throw new ArgumentException("token1") End Select if name Is Nothing Then Throw New ArgumentNullException(NameOf(name)) End If Select Case name.Kind() Case SyntaxKind.XmlName, SyntaxKind.XmlBracketedName Case Else Throw new ArgumentException("name") End Select Return New XmlMemberAccessExpressionSyntax(SyntaxKind.XmlElementAccessExpression, Nothing, Nothing, base, DirectCast(token1.Node, InternalSyntax.PunctuationSyntax), DirectCast(token2.Node, InternalSyntax.PunctuationSyntax), DirectCast(token3.Node, InternalSyntax.PunctuationSyntax), name) End Function ''' <summary> ''' Represents an XML member element access (node.<Element>), attribute ''' access (node.@Attribute) or descendants access (node...<Descendant>). The ''' Kind property determines which kind of access. ''' </summary> ''' <param name="base"> ''' The expression on the left-hand-side of the ".", ".@" or "..." . ''' </param> ''' <param name="token2"> ''' The "@" part of .@ or the second "." of "...". ''' </param> ''' <param name="name"> ''' The identifier after the ".", ".@" or "..." ''' </param> Public Shared Function XmlElementAccessExpression(base As ExpressionSyntax, token2 As SyntaxToken, name As XmlNodeSyntax) As XmlMemberAccessExpressionSyntax Return SyntaxFactory.XmlElementAccessExpression(base, SyntaxFactory.Token(SyntaxKind.DotToken), token2, Nothing, name) End Function ''' <summary> ''' Represents an XML member element access (node.<Element>), attribute ''' access (node.@Attribute) or descendants access (node...<Descendant>). The ''' Kind property determines which kind of access. ''' </summary> ''' <param name="name"> ''' The identifier after the ".", ".@" or "..." ''' </param> Public Shared Function XmlElementAccessExpression(name As XmlNodeSyntax) As XmlMemberAccessExpressionSyntax Return SyntaxFactory.XmlElementAccessExpression(Nothing, SyntaxFactory.Token(SyntaxKind.DotToken), Nothing, Nothing, name) End Function ''' <summary> ''' Represents an XML member element access (node.<Element>), attribute ''' access (node.@Attribute) or descendants access (node...<Descendant>). The ''' Kind property determines which kind of access. ''' </summary> ''' <param name="base"> ''' The expression on the left-hand-side of the ".", ".@" or "..." . ''' </param> ''' <param name="token1"> ''' The initial dot "." part of the separator. ''' </param> ''' <param name="token2"> ''' The "@" part of .@ or the second "." of "...". ''' </param> ''' <param name="token3"> ''' The third "." in a "..." separator. ''' </param> ''' <param name="name"> ''' The identifier after the ".", ".@" or "..." ''' </param> Public Shared Function XmlDescendantAccessExpression(base As ExpressionSyntax, token1 As SyntaxToken, token2 As SyntaxToken, token3 As SyntaxToken, name As XmlNodeSyntax) As XmlMemberAccessExpressionSyntax Select Case token1.Kind() Case SyntaxKind.DotToken Case Else Throw new ArgumentException("token1") End Select if name Is Nothing Then Throw New ArgumentNullException(NameOf(name)) End If Select Case name.Kind() Case SyntaxKind.XmlName, SyntaxKind.XmlBracketedName Case Else Throw new ArgumentException("name") End Select Return New XmlMemberAccessExpressionSyntax(SyntaxKind.XmlDescendantAccessExpression, Nothing, Nothing, base, DirectCast(token1.Node, InternalSyntax.PunctuationSyntax), DirectCast(token2.Node, InternalSyntax.PunctuationSyntax), DirectCast(token3.Node, InternalSyntax.PunctuationSyntax), name) End Function ''' <summary> ''' Represents an XML member element access (node.<Element>), attribute ''' access (node.@Attribute) or descendants access (node...<Descendant>). The ''' Kind property determines which kind of access. ''' </summary> ''' <param name="base"> ''' The expression on the left-hand-side of the ".", ".@" or "..." . ''' </param> ''' <param name="token2"> ''' The "@" part of .@ or the second "." of "...". ''' </param> ''' <param name="name"> ''' The identifier after the ".", ".@" or "..." ''' </param> Public Shared Function XmlDescendantAccessExpression(base As ExpressionSyntax, token2 As SyntaxToken, name As XmlNodeSyntax) As XmlMemberAccessExpressionSyntax Return SyntaxFactory.XmlDescendantAccessExpression(base, SyntaxFactory.Token(SyntaxKind.DotToken), token2, Nothing, name) End Function ''' <summary> ''' Represents an XML member element access (node.<Element>), attribute ''' access (node.@Attribute) or descendants access (node...<Descendant>). The ''' Kind property determines which kind of access. ''' </summary> ''' <param name="name"> ''' The identifier after the ".", ".@" or "..." ''' </param> Public Shared Function XmlDescendantAccessExpression(name As XmlNodeSyntax) As XmlMemberAccessExpressionSyntax Return SyntaxFactory.XmlDescendantAccessExpression(Nothing, SyntaxFactory.Token(SyntaxKind.DotToken), Nothing, Nothing, name) End Function ''' <summary> ''' Represents an XML member element access (node.<Element>), attribute ''' access (node.@Attribute) or descendants access (node...<Descendant>). The ''' Kind property determines which kind of access. ''' </summary> ''' <param name="base"> ''' The expression on the left-hand-side of the ".", ".@" or "..." . ''' </param> ''' <param name="token1"> ''' The initial dot "." part of the separator. ''' </param> ''' <param name="token2"> ''' The "@" part of .@ or the second "." of "...". ''' </param> ''' <param name="token3"> ''' The third "." in a "..." separator. ''' </param> ''' <param name="name"> ''' The identifier after the ".", ".@" or "..." ''' </param> Public Shared Function XmlAttributeAccessExpression(base As ExpressionSyntax, token1 As SyntaxToken, token2 As SyntaxToken, token3 As SyntaxToken, name As XmlNodeSyntax) As XmlMemberAccessExpressionSyntax Select Case token1.Kind() Case SyntaxKind.DotToken Case Else Throw new ArgumentException("token1") End Select if name Is Nothing Then Throw New ArgumentNullException(NameOf(name)) End If Select Case name.Kind() Case SyntaxKind.XmlName, SyntaxKind.XmlBracketedName Case Else Throw new ArgumentException("name") End Select Return New XmlMemberAccessExpressionSyntax(SyntaxKind.XmlAttributeAccessExpression, Nothing, Nothing, base, DirectCast(token1.Node, InternalSyntax.PunctuationSyntax), DirectCast(token2.Node, InternalSyntax.PunctuationSyntax), DirectCast(token3.Node, InternalSyntax.PunctuationSyntax), name) End Function ''' <summary> ''' Represents an XML member element access (node.<Element>), attribute ''' access (node.@Attribute) or descendants access (node...<Descendant>). The ''' Kind property determines which kind of access. ''' </summary> ''' <param name="base"> ''' The expression on the left-hand-side of the ".", ".@" or "..." . ''' </param> ''' <param name="token2"> ''' The "@" part of .@ or the second "." of "...". ''' </param> ''' <param name="name"> ''' The identifier after the ".", ".@" or "..." ''' </param> Public Shared Function XmlAttributeAccessExpression(base As ExpressionSyntax, token2 As SyntaxToken, name As XmlNodeSyntax) As XmlMemberAccessExpressionSyntax Return SyntaxFactory.XmlAttributeAccessExpression(base, SyntaxFactory.Token(SyntaxKind.DotToken), token2, Nothing, name) End Function ''' <summary> ''' Represents an XML member element access (node.<Element>), attribute ''' access (node.@Attribute) or descendants access (node...<Descendant>). The ''' Kind property determines which kind of access. ''' </summary> ''' <param name="name"> ''' The identifier after the ".", ".@" or "..." ''' </param> Public Shared Function XmlAttributeAccessExpression(name As XmlNodeSyntax) As XmlMemberAccessExpressionSyntax Return SyntaxFactory.XmlAttributeAccessExpression(Nothing, SyntaxFactory.Token(SyntaxKind.DotToken), Nothing, Nothing, name) End Function ''' <summary> ''' Represents an XML member element access (node.<Element>), attribute ''' access (node.@Attribute) or descendants access (node...<Descendant>). The ''' Kind property determines which kind of access. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' XmlMemberAccessExpressionSyntax. One of XmlElementAccessExpression, ''' XmlDescendantAccessExpression, XmlAttributeAccessExpression. ''' </param> ''' <param name="base"> ''' The expression on the left-hand-side of the ".", ".@" or "..." . ''' </param> ''' <param name="token1"> ''' The initial dot "." part of the separator. ''' </param> ''' <param name="token2"> ''' The "@" part of .@ or the second "." of "...". ''' </param> ''' <param name="token3"> ''' The third "." in a "..." separator. ''' </param> ''' <param name="name"> ''' The identifier after the ".", ".@" or "..." ''' </param> Public Shared Function XmlMemberAccessExpression(ByVal kind As SyntaxKind, base As ExpressionSyntax, token1 As SyntaxToken, token2 As SyntaxToken, token3 As SyntaxToken, name As XmlNodeSyntax) As XmlMemberAccessExpressionSyntax If Not SyntaxFacts.IsXmlMemberAccessExpression(kind) Then Throw New ArgumentException("kind") End If Select Case token1.Kind() Case SyntaxKind.DotToken Case Else Throw new ArgumentException("token1") End Select if name Is Nothing Then Throw New ArgumentNullException(NameOf(name)) End If Select Case name.Kind() Case SyntaxKind.XmlName, SyntaxKind.XmlBracketedName Case Else Throw new ArgumentException("name") End Select Return New XmlMemberAccessExpressionSyntax(kind, Nothing, Nothing, base, DirectCast(token1.Node, InternalSyntax.PunctuationSyntax), DirectCast(token2.Node, InternalSyntax.PunctuationSyntax), DirectCast(token3.Node, InternalSyntax.PunctuationSyntax), name) End Function ''' <summary> ''' Represents an XML member element access (node.<Element>), attribute ''' access (node.@Attribute) or descendants access (node...<Descendant>). The ''' Kind property determines which kind of access. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' XmlMemberAccessExpressionSyntax. One of XmlElementAccessExpression, ''' XmlDescendantAccessExpression, XmlAttributeAccessExpression. ''' </param> ''' <param name="base"> ''' The expression on the left-hand-side of the ".", ".@" or "..." . ''' </param> ''' <param name="token2"> ''' The "@" part of .@ or the second "." of "...". ''' </param> ''' <param name="name"> ''' The identifier after the ".", ".@" or "..." ''' </param> Public Shared Function XmlMemberAccessExpression(ByVal kind As SyntaxKind, base As ExpressionSyntax, token2 As SyntaxToken, name As XmlNodeSyntax) As XmlMemberAccessExpressionSyntax Return SyntaxFactory.XmlMemberAccessExpression(kind, base, SyntaxFactory.Token(SyntaxKind.DotToken), token2, Nothing, name) End Function ''' <summary> ''' Represents an XML member element access (node.<Element>), attribute ''' access (node.@Attribute) or descendants access (node...<Descendant>). The ''' Kind property determines which kind of access. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' XmlMemberAccessExpressionSyntax. One of XmlElementAccessExpression, ''' XmlDescendantAccessExpression, XmlAttributeAccessExpression. ''' </param> ''' <param name="name"> ''' The identifier after the ".", ".@" or "..." ''' </param> Public Shared Function XmlMemberAccessExpression(ByVal kind As SyntaxKind, name As XmlNodeSyntax) As XmlMemberAccessExpressionSyntax Return SyntaxFactory.XmlMemberAccessExpression(kind, Nothing, SyntaxFactory.Token(SyntaxKind.DotToken), Nothing, Nothing, name) End Function ''' <summary> ''' Represents an invocation expression consisting of an invocation target and an ''' optional argument list or an array, parameterized property or object default ''' property index. ''' </summary> ''' <param name="expression"> ''' The target of the call or index expression. ''' </param> ''' <param name="argumentList"> ''' The argument list. ''' </param> Public Shared Function InvocationExpression(expression As ExpressionSyntax, argumentList As ArgumentListSyntax) As InvocationExpressionSyntax Return New InvocationExpressionSyntax(SyntaxKind.InvocationExpression, Nothing, Nothing, expression, argumentList) End Function ''' <summary> ''' Represents an invocation expression consisting of an invocation target and an ''' optional argument list or an array, parameterized property or object default ''' property index. ''' </summary> Public Shared Function InvocationExpression() As InvocationExpressionSyntax Return SyntaxFactory.InvocationExpression(Nothing, Nothing) End Function ''' <summary> ''' Represents a New expression that creates a new non-array object, possibly with ''' a "With" or "From" clause. ''' </summary> ''' <param name="newKeyword"> ''' The "New" keyword. ''' </param> ''' <param name="attributeLists"> ''' A list of all attribute lists on the type. If no attributes were specified, an ''' empty list is returned. ''' </param> ''' <param name="type"> ''' The type of the object being initialized. ''' </param> ''' <param name="argumentList"> ''' The argument list, if present. If no argument list was supplied, Nothing is ''' returned. ''' </param> ''' <param name="initializer"> ''' An optional From or With clause to initialize the new object. ''' </param> Public Shared Function ObjectCreationExpression(newKeyword As SyntaxToken, attributeLists As SyntaxList(of AttributeListSyntax), type As TypeSyntax, argumentList As ArgumentListSyntax, initializer As ObjectCreationInitializerSyntax) As ObjectCreationExpressionSyntax Select Case newKeyword.Kind() Case SyntaxKind.NewKeyword Case Else Throw new ArgumentException("newKeyword") End Select if type Is Nothing Then Throw New ArgumentNullException(NameOf(type)) End If Select Case type.Kind() Case SyntaxKind.PredefinedType, SyntaxKind.NullableType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.TupleType Case Else Throw new ArgumentException("type") End Select Return New ObjectCreationExpressionSyntax(SyntaxKind.ObjectCreationExpression, Nothing, Nothing, DirectCast(newKeyword.Node, InternalSyntax.KeywordSyntax), attributeLists.Node, type, argumentList, initializer) End Function ''' <summary> ''' Represents a New expression that creates a new non-array object, possibly with ''' a "With" or "From" clause. ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on the type. If no attributes were specified, an ''' empty list is returned. ''' </param> ''' <param name="type"> ''' The type of the object being initialized. ''' </param> ''' <param name="argumentList"> ''' The argument list, if present. If no argument list was supplied, Nothing is ''' returned. ''' </param> ''' <param name="initializer"> ''' An optional From or With clause to initialize the new object. ''' </param> Public Shared Function ObjectCreationExpression(attributeLists As SyntaxList(of AttributeListSyntax), type As TypeSyntax, argumentList As ArgumentListSyntax, initializer As ObjectCreationInitializerSyntax) As ObjectCreationExpressionSyntax Return SyntaxFactory.ObjectCreationExpression(SyntaxFactory.Token(SyntaxKind.NewKeyword), attributeLists, type, argumentList, initializer) End Function ''' <summary> ''' Represents a New expression that creates a new non-array object, possibly with ''' a "With" or "From" clause. ''' </summary> ''' <param name="type"> ''' The type of the object being initialized. ''' </param> Public Shared Function ObjectCreationExpression(type As TypeSyntax) As ObjectCreationExpressionSyntax Return SyntaxFactory.ObjectCreationExpression(SyntaxFactory.Token(SyntaxKind.NewKeyword), Nothing, type, Nothing, Nothing) End Function ''' <summary> ''' Represents a New expression that create an object of anonymous type. ''' </summary> ''' <param name="newKeyword"> ''' The "New" keyword. ''' </param> ''' <param name="attributeLists"> ''' A list of all attribute lists on the type. If no attributes were specified, an ''' empty list is returned. ''' </param> ''' <param name="initializer"> ''' The With clause to initialize the new object. ''' </param> Public Shared Function AnonymousObjectCreationExpression(newKeyword As SyntaxToken, attributeLists As SyntaxList(of AttributeListSyntax), initializer As ObjectMemberInitializerSyntax) As AnonymousObjectCreationExpressionSyntax Select Case newKeyword.Kind() Case SyntaxKind.NewKeyword Case Else Throw new ArgumentException("newKeyword") End Select if initializer Is Nothing Then Throw New ArgumentNullException(NameOf(initializer)) End If Select Case initializer.Kind() Case SyntaxKind.ObjectMemberInitializer Case Else Throw new ArgumentException("initializer") End Select Return New AnonymousObjectCreationExpressionSyntax(SyntaxKind.AnonymousObjectCreationExpression, Nothing, Nothing, DirectCast(newKeyword.Node, InternalSyntax.KeywordSyntax), attributeLists.Node, initializer) End Function ''' <summary> ''' Represents a New expression that create an object of anonymous type. ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on the type. If no attributes were specified, an ''' empty list is returned. ''' </param> ''' <param name="initializer"> ''' The With clause to initialize the new object. ''' </param> Public Shared Function AnonymousObjectCreationExpression(attributeLists As SyntaxList(of AttributeListSyntax), initializer As ObjectMemberInitializerSyntax) As AnonymousObjectCreationExpressionSyntax Return SyntaxFactory.AnonymousObjectCreationExpression(SyntaxFactory.Token(SyntaxKind.NewKeyword), attributeLists, initializer) End Function ''' <summary> ''' Represents a New expression that create an object of anonymous type. ''' </summary> ''' <param name="initializer"> ''' The With clause to initialize the new object. ''' </param> Public Shared Function AnonymousObjectCreationExpression(initializer As ObjectMemberInitializerSyntax) As AnonymousObjectCreationExpressionSyntax Return SyntaxFactory.AnonymousObjectCreationExpression(SyntaxFactory.Token(SyntaxKind.NewKeyword), Nothing, initializer) End Function ''' <summary> ''' Represents an expression that creates a new array. ''' </summary> ''' <param name="newKeyword"> ''' The "New" keyword. ''' </param> ''' <param name="attributeLists"> ''' A list of all attribute lists on the type. If no attributes were specified, an ''' empty list is returned. ''' </param> ''' <param name="type"> ''' The element type of the array being created. ''' </param> ''' <param name="arrayBounds"> ''' The optional array bounds, such as "(4)" or "(0 to 5, 0 To 6)". ''' </param> ''' <param name="rankSpecifiers"> ''' A list of array modifiers such as "()" or "(,)". If no array modifiers were ''' present, an empty list is returned. ''' </param> ''' <param name="initializer"> ''' The initializer including the braces. ''' </param> Public Shared Function ArrayCreationExpression(newKeyword As SyntaxToken, attributeLists As SyntaxList(of AttributeListSyntax), type As TypeSyntax, arrayBounds As ArgumentListSyntax, rankSpecifiers As SyntaxList(of ArrayRankSpecifierSyntax), initializer As CollectionInitializerSyntax) As ArrayCreationExpressionSyntax Select Case newKeyword.Kind() Case SyntaxKind.NewKeyword Case Else Throw new ArgumentException("newKeyword") End Select if type Is Nothing Then Throw New ArgumentNullException(NameOf(type)) End If Select Case type.Kind() Case SyntaxKind.PredefinedType, SyntaxKind.NullableType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.TupleType Case Else Throw new ArgumentException("type") End Select if initializer Is Nothing Then Throw New ArgumentNullException(NameOf(initializer)) End If Select Case initializer.Kind() Case SyntaxKind.CollectionInitializer Case Else Throw new ArgumentException("initializer") End Select Return New ArrayCreationExpressionSyntax(SyntaxKind.ArrayCreationExpression, Nothing, Nothing, DirectCast(newKeyword.Node, InternalSyntax.KeywordSyntax), attributeLists.Node, type, arrayBounds, rankSpecifiers.Node, initializer) End Function ''' <summary> ''' Represents an expression that creates a new array. ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on the type. If no attributes were specified, an ''' empty list is returned. ''' </param> ''' <param name="type"> ''' The element type of the array being created. ''' </param> ''' <param name="arrayBounds"> ''' The optional array bounds, such as "(4)" or "(0 to 5, 0 To 6)". ''' </param> ''' <param name="initializer"> ''' The initializer including the braces. ''' </param> Public Shared Function ArrayCreationExpression(attributeLists As SyntaxList(of AttributeListSyntax), type As TypeSyntax, arrayBounds As ArgumentListSyntax, initializer As CollectionInitializerSyntax) As ArrayCreationExpressionSyntax Return SyntaxFactory.ArrayCreationExpression(SyntaxFactory.Token(SyntaxKind.NewKeyword), attributeLists, type, arrayBounds, Nothing, initializer) End Function ''' <summary> ''' Represents an expression that creates a new array. ''' </summary> ''' <param name="type"> ''' The element type of the array being created. ''' </param> ''' <param name="initializer"> ''' The initializer including the braces. ''' </param> Public Shared Function ArrayCreationExpression(type As TypeSyntax, initializer As CollectionInitializerSyntax) As ArrayCreationExpressionSyntax Return SyntaxFactory.ArrayCreationExpression(SyntaxFactory.Token(SyntaxKind.NewKeyword), Nothing, type, Nothing, Nothing, initializer) End Function ''' <summary> ''' Represents an expression that creates a new array without naming the element ''' type. ''' </summary> ''' <param name="openBraceToken"> ''' The "{" token. ''' </param> ''' <param name="initializers"> ''' The list of initializers between the braces. ''' </param> ''' <param name="closeBraceToken"> ''' The "}" token. ''' </param> Public Shared Function CollectionInitializer(openBraceToken As SyntaxToken, initializers As SeparatedSyntaxList(Of ExpressionSyntax), closeBraceToken As SyntaxToken) As CollectionInitializerSyntax Select Case openBraceToken.Kind() Case SyntaxKind.OpenBraceToken Case Else Throw new ArgumentException("openBraceToken") End Select Select Case closeBraceToken.Kind() Case SyntaxKind.CloseBraceToken Case Else Throw new ArgumentException("closeBraceToken") End Select Return New CollectionInitializerSyntax(SyntaxKind.CollectionInitializer, Nothing, Nothing, DirectCast(openBraceToken.Node, InternalSyntax.PunctuationSyntax), initializers.Node, DirectCast(closeBraceToken.Node, InternalSyntax.PunctuationSyntax)) End Function ''' <summary> ''' Represents an expression that creates a new array without naming the element ''' type. ''' </summary> ''' <param name="initializers"> ''' The list of initializers between the braces. ''' </param> Public Shared Function CollectionInitializer(initializers As SeparatedSyntaxList(Of ExpressionSyntax)) As CollectionInitializerSyntax Return SyntaxFactory.CollectionInitializer(SyntaxFactory.Token(SyntaxKind.OpenBraceToken), initializers, SyntaxFactory.Token(SyntaxKind.CloseBraceToken)) End Function ''' <summary> ''' Represents an expression that creates a new array without naming the element ''' type. ''' </summary> Public Shared Function CollectionInitializer() As CollectionInitializerSyntax Return SyntaxFactory.CollectionInitializer(SyntaxFactory.Token(SyntaxKind.OpenBraceToken), Nothing, SyntaxFactory.Token(SyntaxKind.CloseBraceToken)) End Function ''' <param name="keyword"> ''' The "CType", "DirectCast" or "TryCast" keyword. ''' </param> ''' <param name="openParenToken"> ''' The "(" token. ''' </param> ''' <param name="expression"> ''' The expression being cast. ''' </param> ''' <param name="commaToken"> ''' The "," token. ''' </param> ''' <param name="type"> ''' The type the expression is being cast to. ''' </param> ''' <param name="closeParenToken"> ''' The ")" token. ''' </param> Public Shared Function CTypeExpression(keyword As SyntaxToken, openParenToken As SyntaxToken, expression As ExpressionSyntax, commaToken As SyntaxToken, type As TypeSyntax, closeParenToken As SyntaxToken) As CTypeExpressionSyntax Select Case keyword.Kind() Case SyntaxKind.CTypeKeyword : Case SyntaxKind.DirectCastKeyword : Case SyntaxKind.TryCastKeyword Case Else Throw new ArgumentException("keyword") End Select Select Case openParenToken.Kind() Case SyntaxKind.OpenParenToken Case Else Throw new ArgumentException("openParenToken") End Select if expression Is Nothing Then Throw New ArgumentNullException(NameOf(expression)) End If Select Case expression.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("expression") End Select Select Case commaToken.Kind() Case SyntaxKind.CommaToken Case Else Throw new ArgumentException("commaToken") End Select if type Is Nothing Then Throw New ArgumentNullException(NameOf(type)) End If Select Case type.Kind() Case SyntaxKind.TupleType, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference Case Else Throw new ArgumentException("type") End Select Select Case closeParenToken.Kind() Case SyntaxKind.CloseParenToken Case Else Throw new ArgumentException("closeParenToken") End Select Return New CTypeExpressionSyntax(SyntaxKind.CTypeExpression, Nothing, Nothing, DirectCast(keyword.Node, InternalSyntax.KeywordSyntax), DirectCast(openParenToken.Node, InternalSyntax.PunctuationSyntax), expression, DirectCast(commaToken.Node, InternalSyntax.PunctuationSyntax), type, DirectCast(closeParenToken.Node, InternalSyntax.PunctuationSyntax)) End Function ''' <param name="expression"> ''' The expression being cast. ''' </param> ''' <param name="type"> ''' The type the expression is being cast to. ''' </param> Public Shared Function CTypeExpression(expression As ExpressionSyntax, type As TypeSyntax) As CTypeExpressionSyntax Return SyntaxFactory.CTypeExpression(SyntaxFactory.Token(SyntaxKind.CTypeKeyword), SyntaxFactory.Token(SyntaxKind.OpenParenToken), expression, SyntaxFactory.Token(SyntaxKind.CommaToken), type, SyntaxFactory.Token(SyntaxKind.CloseParenToken)) End Function ''' <param name="keyword"> ''' The "CType", "DirectCast" or "TryCast" keyword. ''' </param> ''' <param name="openParenToken"> ''' The "(" token. ''' </param> ''' <param name="expression"> ''' The expression being cast. ''' </param> ''' <param name="commaToken"> ''' The "," token. ''' </param> ''' <param name="type"> ''' The type the expression is being cast to. ''' </param> ''' <param name="closeParenToken"> ''' The ")" token. ''' </param> Public Shared Function DirectCastExpression(keyword As SyntaxToken, openParenToken As SyntaxToken, expression As ExpressionSyntax, commaToken As SyntaxToken, type As TypeSyntax, closeParenToken As SyntaxToken) As DirectCastExpressionSyntax Select Case keyword.Kind() Case SyntaxKind.DirectCastKeyword Case Else Throw new ArgumentException("keyword") End Select Select Case openParenToken.Kind() Case SyntaxKind.OpenParenToken Case Else Throw new ArgumentException("openParenToken") End Select if expression Is Nothing Then Throw New ArgumentNullException(NameOf(expression)) End If Select Case expression.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("expression") End Select Select Case commaToken.Kind() Case SyntaxKind.CommaToken Case Else Throw new ArgumentException("commaToken") End Select if type Is Nothing Then Throw New ArgumentNullException(NameOf(type)) End If Select Case type.Kind() Case SyntaxKind.TupleType, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference Case Else Throw new ArgumentException("type") End Select Select Case closeParenToken.Kind() Case SyntaxKind.CloseParenToken Case Else Throw new ArgumentException("closeParenToken") End Select Return New DirectCastExpressionSyntax(SyntaxKind.DirectCastExpression, Nothing, Nothing, DirectCast(keyword.Node, InternalSyntax.KeywordSyntax), DirectCast(openParenToken.Node, InternalSyntax.PunctuationSyntax), expression, DirectCast(commaToken.Node, InternalSyntax.PunctuationSyntax), type, DirectCast(closeParenToken.Node, InternalSyntax.PunctuationSyntax)) End Function ''' <param name="expression"> ''' The expression being cast. ''' </param> ''' <param name="type"> ''' The type the expression is being cast to. ''' </param> Public Shared Function DirectCastExpression(expression As ExpressionSyntax, type As TypeSyntax) As DirectCastExpressionSyntax Return SyntaxFactory.DirectCastExpression(SyntaxFactory.Token(SyntaxKind.DirectCastKeyword), SyntaxFactory.Token(SyntaxKind.OpenParenToken), expression, SyntaxFactory.Token(SyntaxKind.CommaToken), type, SyntaxFactory.Token(SyntaxKind.CloseParenToken)) End Function ''' <param name="keyword"> ''' The "CType", "DirectCast" or "TryCast" keyword. ''' </param> ''' <param name="openParenToken"> ''' The "(" token. ''' </param> ''' <param name="expression"> ''' The expression being cast. ''' </param> ''' <param name="commaToken"> ''' The "," token. ''' </param> ''' <param name="type"> ''' The type the expression is being cast to. ''' </param> ''' <param name="closeParenToken"> ''' The ")" token. ''' </param> Public Shared Function TryCastExpression(keyword As SyntaxToken, openParenToken As SyntaxToken, expression As ExpressionSyntax, commaToken As SyntaxToken, type As TypeSyntax, closeParenToken As SyntaxToken) As TryCastExpressionSyntax Select Case keyword.Kind() Case SyntaxKind.TryCastKeyword Case Else Throw new ArgumentException("keyword") End Select Select Case openParenToken.Kind() Case SyntaxKind.OpenParenToken Case Else Throw new ArgumentException("openParenToken") End Select if expression Is Nothing Then Throw New ArgumentNullException(NameOf(expression)) End If Select Case expression.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("expression") End Select Select Case commaToken.Kind() Case SyntaxKind.CommaToken Case Else Throw new ArgumentException("commaToken") End Select if type Is Nothing Then Throw New ArgumentNullException(NameOf(type)) End If Select Case type.Kind() Case SyntaxKind.TupleType, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference Case Else Throw new ArgumentException("type") End Select Select Case closeParenToken.Kind() Case SyntaxKind.CloseParenToken Case Else Throw new ArgumentException("closeParenToken") End Select Return New TryCastExpressionSyntax(SyntaxKind.TryCastExpression, Nothing, Nothing, DirectCast(keyword.Node, InternalSyntax.KeywordSyntax), DirectCast(openParenToken.Node, InternalSyntax.PunctuationSyntax), expression, DirectCast(commaToken.Node, InternalSyntax.PunctuationSyntax), type, DirectCast(closeParenToken.Node, InternalSyntax.PunctuationSyntax)) End Function ''' <param name="expression"> ''' The expression being cast. ''' </param> ''' <param name="type"> ''' The type the expression is being cast to. ''' </param> Public Shared Function TryCastExpression(expression As ExpressionSyntax, type As TypeSyntax) As TryCastExpressionSyntax Return SyntaxFactory.TryCastExpression(SyntaxFactory.Token(SyntaxKind.TryCastKeyword), SyntaxFactory.Token(SyntaxKind.OpenParenToken), expression, SyntaxFactory.Token(SyntaxKind.CommaToken), type, SyntaxFactory.Token(SyntaxKind.CloseParenToken)) End Function ''' <summary> ''' Represents a cast to a pre-defined type using a pre-defined cast expression, ''' such as CInt or CLng. ''' </summary> ''' <param name="keyword"> ''' The keyword that was used in the cast operation. ''' </param> ''' <param name="openParenToken"> ''' The "(" token. ''' </param> ''' <param name="expression"> ''' The expression being cast. ''' </param> ''' <param name="closeParenToken"> ''' The ")" token. ''' </param> Public Shared Function PredefinedCastExpression(keyword As SyntaxToken, openParenToken As SyntaxToken, expression As ExpressionSyntax, closeParenToken As SyntaxToken) As PredefinedCastExpressionSyntax Select Case keyword.Kind() Case SyntaxKind.CObjKeyword : Case SyntaxKind.CBoolKeyword : Case SyntaxKind.CDateKeyword : Case SyntaxKind.CCharKeyword : Case SyntaxKind.CStrKeyword : Case SyntaxKind.CDecKeyword : Case SyntaxKind.CByteKeyword : Case SyntaxKind.CSByteKeyword : Case SyntaxKind.CUShortKeyword : Case SyntaxKind.CShortKeyword : Case SyntaxKind.CUIntKeyword : Case SyntaxKind.CIntKeyword : Case SyntaxKind.CULngKeyword : Case SyntaxKind.CLngKeyword : Case SyntaxKind.CSngKeyword : Case SyntaxKind.CDblKeyword Case Else Throw new ArgumentException("keyword") End Select Select Case openParenToken.Kind() Case SyntaxKind.OpenParenToken Case Else Throw new ArgumentException("openParenToken") End Select if expression Is Nothing Then Throw New ArgumentNullException(NameOf(expression)) End If Select Case expression.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("expression") End Select Select Case closeParenToken.Kind() Case SyntaxKind.CloseParenToken Case Else Throw new ArgumentException("closeParenToken") End Select Return New PredefinedCastExpressionSyntax(SyntaxKind.PredefinedCastExpression, Nothing, Nothing, DirectCast(keyword.Node, InternalSyntax.KeywordSyntax), DirectCast(openParenToken.Node, InternalSyntax.PunctuationSyntax), expression, DirectCast(closeParenToken.Node, InternalSyntax.PunctuationSyntax)) End Function ''' <summary> ''' Represents a cast to a pre-defined type using a pre-defined cast expression, ''' such as CInt or CLng. ''' </summary> ''' <param name="keyword"> ''' The keyword that was used in the cast operation. ''' </param> ''' <param name="expression"> ''' The expression being cast. ''' </param> Public Shared Function PredefinedCastExpression(keyword As SyntaxToken, expression As ExpressionSyntax) As PredefinedCastExpressionSyntax Return SyntaxFactory.PredefinedCastExpression(keyword, SyntaxFactory.Token(SyntaxKind.OpenParenToken), expression, SyntaxFactory.Token(SyntaxKind.CloseParenToken)) End Function ''' <summary> ''' Represents a binary operator. The Kind property classifies the operators into ''' similar kind of operators (arithmetic, relational, logical or string); the ''' exact operation being performed is determined by the Operator property. ''' </summary> ''' <param name="left"> ''' The left operand. ''' </param> ''' <param name="right"> ''' The right operand. ''' </param> Public Shared Function AddExpression(left As ExpressionSyntax, operatorToken As SyntaxToken, right As ExpressionSyntax) As BinaryExpressionSyntax if left Is Nothing Then Throw New ArgumentNullException(NameOf(left)) End If Select Case left.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("left") End Select Select Case operatorToken.Kind() Case SyntaxKind.PlusToken : Case SyntaxKind.MinusToken : Case SyntaxKind.AsteriskToken : Case SyntaxKind.SlashToken : Case SyntaxKind.BackslashToken : Case SyntaxKind.CaretToken : Case SyntaxKind.ModKeyword : Case SyntaxKind.LessThanLessThanToken : Case SyntaxKind.GreaterThanGreaterThanToken : Case SyntaxKind.EqualsToken : Case SyntaxKind.LessThanGreaterThanToken : Case SyntaxKind.LessThanToken : Case SyntaxKind.LessThanEqualsToken : Case SyntaxKind.GreaterThanToken : Case SyntaxKind.GreaterThanEqualsToken : Case SyntaxKind.IsKeyword : Case SyntaxKind.IsNotKeyword : Case SyntaxKind.LikeKeyword : Case SyntaxKind.AmpersandToken : Case SyntaxKind.OrKeyword : Case SyntaxKind.XorKeyword : Case SyntaxKind.AndKeyword : Case SyntaxKind.OrElseKeyword : Case SyntaxKind.AndAlsoKeyword Case Else Throw new ArgumentException("operatorToken") End Select if right Is Nothing Then Throw New ArgumentNullException(NameOf(right)) End If Select Case right.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("right") End Select Return New BinaryExpressionSyntax(SyntaxKind.AddExpression, Nothing, Nothing, left, DirectCast(operatorToken.Node, InternalSyntax.SyntaxToken), right) End Function ''' <summary> ''' Represents a binary operator. The Kind property classifies the operators into ''' similar kind of operators (arithmetic, relational, logical or string); the ''' exact operation being performed is determined by the Operator property. ''' </summary> ''' <param name="left"> ''' The left operand. ''' </param> ''' <param name="right"> ''' The right operand. ''' </param> Public Shared Function AddExpression(left As ExpressionSyntax, right As ExpressionSyntax) As BinaryExpressionSyntax Return SyntaxFactory.AddExpression(left, SyntaxFactory.Token(SyntaxKind.PlusToken), right) End Function ''' <summary> ''' Represents a binary operator. The Kind property classifies the operators into ''' similar kind of operators (arithmetic, relational, logical or string); the ''' exact operation being performed is determined by the Operator property. ''' </summary> ''' <param name="left"> ''' The left operand. ''' </param> ''' <param name="right"> ''' The right operand. ''' </param> Public Shared Function SubtractExpression(left As ExpressionSyntax, operatorToken As SyntaxToken, right As ExpressionSyntax) As BinaryExpressionSyntax if left Is Nothing Then Throw New ArgumentNullException(NameOf(left)) End If Select Case left.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("left") End Select Select Case operatorToken.Kind() Case SyntaxKind.MinusToken Case Else Throw new ArgumentException("operatorToken") End Select if right Is Nothing Then Throw New ArgumentNullException(NameOf(right)) End If Select Case right.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("right") End Select Return New BinaryExpressionSyntax(SyntaxKind.SubtractExpression, Nothing, Nothing, left, DirectCast(operatorToken.Node, InternalSyntax.SyntaxToken), right) End Function ''' <summary> ''' Represents a binary operator. The Kind property classifies the operators into ''' similar kind of operators (arithmetic, relational, logical or string); the ''' exact operation being performed is determined by the Operator property. ''' </summary> ''' <param name="left"> ''' The left operand. ''' </param> ''' <param name="right"> ''' The right operand. ''' </param> Public Shared Function SubtractExpression(left As ExpressionSyntax, right As ExpressionSyntax) As BinaryExpressionSyntax Return SyntaxFactory.SubtractExpression(left, SyntaxFactory.Token(SyntaxKind.MinusToken), right) End Function ''' <summary> ''' Represents a binary operator. The Kind property classifies the operators into ''' similar kind of operators (arithmetic, relational, logical or string); the ''' exact operation being performed is determined by the Operator property. ''' </summary> ''' <param name="left"> ''' The left operand. ''' </param> ''' <param name="right"> ''' The right operand. ''' </param> Public Shared Function MultiplyExpression(left As ExpressionSyntax, operatorToken As SyntaxToken, right As ExpressionSyntax) As BinaryExpressionSyntax if left Is Nothing Then Throw New ArgumentNullException(NameOf(left)) End If Select Case left.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("left") End Select Select Case operatorToken.Kind() Case SyntaxKind.AsteriskToken Case Else Throw new ArgumentException("operatorToken") End Select if right Is Nothing Then Throw New ArgumentNullException(NameOf(right)) End If Select Case right.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("right") End Select Return New BinaryExpressionSyntax(SyntaxKind.MultiplyExpression, Nothing, Nothing, left, DirectCast(operatorToken.Node, InternalSyntax.SyntaxToken), right) End Function ''' <summary> ''' Represents a binary operator. The Kind property classifies the operators into ''' similar kind of operators (arithmetic, relational, logical or string); the ''' exact operation being performed is determined by the Operator property. ''' </summary> ''' <param name="left"> ''' The left operand. ''' </param> ''' <param name="right"> ''' The right operand. ''' </param> Public Shared Function MultiplyExpression(left As ExpressionSyntax, right As ExpressionSyntax) As BinaryExpressionSyntax Return SyntaxFactory.MultiplyExpression(left, SyntaxFactory.Token(SyntaxKind.AsteriskToken), right) End Function ''' <summary> ''' Represents a binary operator. The Kind property classifies the operators into ''' similar kind of operators (arithmetic, relational, logical or string); the ''' exact operation being performed is determined by the Operator property. ''' </summary> ''' <param name="left"> ''' The left operand. ''' </param> ''' <param name="right"> ''' The right operand. ''' </param> Public Shared Function DivideExpression(left As ExpressionSyntax, operatorToken As SyntaxToken, right As ExpressionSyntax) As BinaryExpressionSyntax if left Is Nothing Then Throw New ArgumentNullException(NameOf(left)) End If Select Case left.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("left") End Select Select Case operatorToken.Kind() Case SyntaxKind.SlashToken Case Else Throw new ArgumentException("operatorToken") End Select if right Is Nothing Then Throw New ArgumentNullException(NameOf(right)) End If Select Case right.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("right") End Select Return New BinaryExpressionSyntax(SyntaxKind.DivideExpression, Nothing, Nothing, left, DirectCast(operatorToken.Node, InternalSyntax.SyntaxToken), right) End Function ''' <summary> ''' Represents a binary operator. The Kind property classifies the operators into ''' similar kind of operators (arithmetic, relational, logical or string); the ''' exact operation being performed is determined by the Operator property. ''' </summary> ''' <param name="left"> ''' The left operand. ''' </param> ''' <param name="right"> ''' The right operand. ''' </param> Public Shared Function DivideExpression(left As ExpressionSyntax, right As ExpressionSyntax) As BinaryExpressionSyntax Return SyntaxFactory.DivideExpression(left, SyntaxFactory.Token(SyntaxKind.SlashToken), right) End Function ''' <summary> ''' Represents a binary operator. The Kind property classifies the operators into ''' similar kind of operators (arithmetic, relational, logical or string); the ''' exact operation being performed is determined by the Operator property. ''' </summary> ''' <param name="left"> ''' The left operand. ''' </param> ''' <param name="right"> ''' The right operand. ''' </param> Public Shared Function IntegerDivideExpression(left As ExpressionSyntax, operatorToken As SyntaxToken, right As ExpressionSyntax) As BinaryExpressionSyntax if left Is Nothing Then Throw New ArgumentNullException(NameOf(left)) End If Select Case left.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("left") End Select Select Case operatorToken.Kind() Case SyntaxKind.BackslashToken Case Else Throw new ArgumentException("operatorToken") End Select if right Is Nothing Then Throw New ArgumentNullException(NameOf(right)) End If Select Case right.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("right") End Select Return New BinaryExpressionSyntax(SyntaxKind.IntegerDivideExpression, Nothing, Nothing, left, DirectCast(operatorToken.Node, InternalSyntax.SyntaxToken), right) End Function ''' <summary> ''' Represents a binary operator. The Kind property classifies the operators into ''' similar kind of operators (arithmetic, relational, logical or string); the ''' exact operation being performed is determined by the Operator property. ''' </summary> ''' <param name="left"> ''' The left operand. ''' </param> ''' <param name="right"> ''' The right operand. ''' </param> Public Shared Function IntegerDivideExpression(left As ExpressionSyntax, right As ExpressionSyntax) As BinaryExpressionSyntax Return SyntaxFactory.IntegerDivideExpression(left, SyntaxFactory.Token(SyntaxKind.BackslashToken), right) End Function ''' <summary> ''' Represents a binary operator. The Kind property classifies the operators into ''' similar kind of operators (arithmetic, relational, logical or string); the ''' exact operation being performed is determined by the Operator property. ''' </summary> ''' <param name="left"> ''' The left operand. ''' </param> ''' <param name="right"> ''' The right operand. ''' </param> Public Shared Function ExponentiateExpression(left As ExpressionSyntax, operatorToken As SyntaxToken, right As ExpressionSyntax) As BinaryExpressionSyntax if left Is Nothing Then Throw New ArgumentNullException(NameOf(left)) End If Select Case left.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("left") End Select Select Case operatorToken.Kind() Case SyntaxKind.CaretToken Case Else Throw new ArgumentException("operatorToken") End Select if right Is Nothing Then Throw New ArgumentNullException(NameOf(right)) End If Select Case right.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("right") End Select Return New BinaryExpressionSyntax(SyntaxKind.ExponentiateExpression, Nothing, Nothing, left, DirectCast(operatorToken.Node, InternalSyntax.SyntaxToken), right) End Function ''' <summary> ''' Represents a binary operator. The Kind property classifies the operators into ''' similar kind of operators (arithmetic, relational, logical or string); the ''' exact operation being performed is determined by the Operator property. ''' </summary> ''' <param name="left"> ''' The left operand. ''' </param> ''' <param name="right"> ''' The right operand. ''' </param> Public Shared Function ExponentiateExpression(left As ExpressionSyntax, right As ExpressionSyntax) As BinaryExpressionSyntax Return SyntaxFactory.ExponentiateExpression(left, SyntaxFactory.Token(SyntaxKind.CaretToken), right) End Function ''' <summary> ''' Represents a binary operator. The Kind property classifies the operators into ''' similar kind of operators (arithmetic, relational, logical or string); the ''' exact operation being performed is determined by the Operator property. ''' </summary> ''' <param name="left"> ''' The left operand. ''' </param> ''' <param name="right"> ''' The right operand. ''' </param> Public Shared Function LeftShiftExpression(left As ExpressionSyntax, operatorToken As SyntaxToken, right As ExpressionSyntax) As BinaryExpressionSyntax if left Is Nothing Then Throw New ArgumentNullException(NameOf(left)) End If Select Case left.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("left") End Select Select Case operatorToken.Kind() Case SyntaxKind.LessThanLessThanToken Case Else Throw new ArgumentException("operatorToken") End Select if right Is Nothing Then Throw New ArgumentNullException(NameOf(right)) End If Select Case right.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("right") End Select Return New BinaryExpressionSyntax(SyntaxKind.LeftShiftExpression, Nothing, Nothing, left, DirectCast(operatorToken.Node, InternalSyntax.SyntaxToken), right) End Function ''' <summary> ''' Represents a binary operator. The Kind property classifies the operators into ''' similar kind of operators (arithmetic, relational, logical or string); the ''' exact operation being performed is determined by the Operator property. ''' </summary> ''' <param name="left"> ''' The left operand. ''' </param> ''' <param name="right"> ''' The right operand. ''' </param> Public Shared Function LeftShiftExpression(left As ExpressionSyntax, right As ExpressionSyntax) As BinaryExpressionSyntax Return SyntaxFactory.LeftShiftExpression(left, SyntaxFactory.Token(SyntaxKind.LessThanLessThanToken), right) End Function ''' <summary> ''' Represents a binary operator. The Kind property classifies the operators into ''' similar kind of operators (arithmetic, relational, logical or string); the ''' exact operation being performed is determined by the Operator property. ''' </summary> ''' <param name="left"> ''' The left operand. ''' </param> ''' <param name="right"> ''' The right operand. ''' </param> Public Shared Function RightShiftExpression(left As ExpressionSyntax, operatorToken As SyntaxToken, right As ExpressionSyntax) As BinaryExpressionSyntax if left Is Nothing Then Throw New ArgumentNullException(NameOf(left)) End If Select Case left.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("left") End Select Select Case operatorToken.Kind() Case SyntaxKind.GreaterThanGreaterThanToken Case Else Throw new ArgumentException("operatorToken") End Select if right Is Nothing Then Throw New ArgumentNullException(NameOf(right)) End If Select Case right.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("right") End Select Return New BinaryExpressionSyntax(SyntaxKind.RightShiftExpression, Nothing, Nothing, left, DirectCast(operatorToken.Node, InternalSyntax.SyntaxToken), right) End Function ''' <summary> ''' Represents a binary operator. The Kind property classifies the operators into ''' similar kind of operators (arithmetic, relational, logical or string); the ''' exact operation being performed is determined by the Operator property. ''' </summary> ''' <param name="left"> ''' The left operand. ''' </param> ''' <param name="right"> ''' The right operand. ''' </param> Public Shared Function RightShiftExpression(left As ExpressionSyntax, right As ExpressionSyntax) As BinaryExpressionSyntax Return SyntaxFactory.RightShiftExpression(left, SyntaxFactory.Token(SyntaxKind.GreaterThanGreaterThanToken), right) End Function ''' <summary> ''' Represents a binary operator. The Kind property classifies the operators into ''' similar kind of operators (arithmetic, relational, logical or string); the ''' exact operation being performed is determined by the Operator property. ''' </summary> ''' <param name="left"> ''' The left operand. ''' </param> ''' <param name="right"> ''' The right operand. ''' </param> Public Shared Function ConcatenateExpression(left As ExpressionSyntax, operatorToken As SyntaxToken, right As ExpressionSyntax) As BinaryExpressionSyntax if left Is Nothing Then Throw New ArgumentNullException(NameOf(left)) End If Select Case left.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("left") End Select Select Case operatorToken.Kind() Case SyntaxKind.AmpersandToken Case Else Throw new ArgumentException("operatorToken") End Select if right Is Nothing Then Throw New ArgumentNullException(NameOf(right)) End If Select Case right.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("right") End Select Return New BinaryExpressionSyntax(SyntaxKind.ConcatenateExpression, Nothing, Nothing, left, DirectCast(operatorToken.Node, InternalSyntax.SyntaxToken), right) End Function ''' <summary> ''' Represents a binary operator. The Kind property classifies the operators into ''' similar kind of operators (arithmetic, relational, logical or string); the ''' exact operation being performed is determined by the Operator property. ''' </summary> ''' <param name="left"> ''' The left operand. ''' </param> ''' <param name="right"> ''' The right operand. ''' </param> Public Shared Function ConcatenateExpression(left As ExpressionSyntax, right As ExpressionSyntax) As BinaryExpressionSyntax Return SyntaxFactory.ConcatenateExpression(left, SyntaxFactory.Token(SyntaxKind.AmpersandToken), right) End Function ''' <summary> ''' Represents a binary operator. The Kind property classifies the operators into ''' similar kind of operators (arithmetic, relational, logical or string); the ''' exact operation being performed is determined by the Operator property. ''' </summary> ''' <param name="left"> ''' The left operand. ''' </param> ''' <param name="right"> ''' The right operand. ''' </param> Public Shared Function ModuloExpression(left As ExpressionSyntax, operatorToken As SyntaxToken, right As ExpressionSyntax) As BinaryExpressionSyntax if left Is Nothing Then Throw New ArgumentNullException(NameOf(left)) End If Select Case left.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("left") End Select Select Case operatorToken.Kind() Case SyntaxKind.ModKeyword Case Else Throw new ArgumentException("operatorToken") End Select if right Is Nothing Then Throw New ArgumentNullException(NameOf(right)) End If Select Case right.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("right") End Select Return New BinaryExpressionSyntax(SyntaxKind.ModuloExpression, Nothing, Nothing, left, DirectCast(operatorToken.Node, InternalSyntax.SyntaxToken), right) End Function ''' <summary> ''' Represents a binary operator. The Kind property classifies the operators into ''' similar kind of operators (arithmetic, relational, logical or string); the ''' exact operation being performed is determined by the Operator property. ''' </summary> ''' <param name="left"> ''' The left operand. ''' </param> ''' <param name="right"> ''' The right operand. ''' </param> Public Shared Function ModuloExpression(left As ExpressionSyntax, right As ExpressionSyntax) As BinaryExpressionSyntax Return SyntaxFactory.ModuloExpression(left, SyntaxFactory.Token(SyntaxKind.ModKeyword), right) End Function ''' <summary> ''' Represents a binary operator. The Kind property classifies the operators into ''' similar kind of operators (arithmetic, relational, logical or string); the ''' exact operation being performed is determined by the Operator property. ''' </summary> ''' <param name="left"> ''' The left operand. ''' </param> ''' <param name="right"> ''' The right operand. ''' </param> Public Shared Function EqualsExpression(left As ExpressionSyntax, operatorToken As SyntaxToken, right As ExpressionSyntax) As BinaryExpressionSyntax if left Is Nothing Then Throw New ArgumentNullException(NameOf(left)) End If Select Case left.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("left") End Select Select Case operatorToken.Kind() Case SyntaxKind.EqualsToken Case Else Throw new ArgumentException("operatorToken") End Select if right Is Nothing Then Throw New ArgumentNullException(NameOf(right)) End If Select Case right.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("right") End Select Return New BinaryExpressionSyntax(SyntaxKind.EqualsExpression, Nothing, Nothing, left, DirectCast(operatorToken.Node, InternalSyntax.SyntaxToken), right) End Function ''' <summary> ''' Represents a binary operator. The Kind property classifies the operators into ''' similar kind of operators (arithmetic, relational, logical or string); the ''' exact operation being performed is determined by the Operator property. ''' </summary> ''' <param name="left"> ''' The left operand. ''' </param> ''' <param name="right"> ''' The right operand. ''' </param> Public Shared Function EqualsExpression(left As ExpressionSyntax, right As ExpressionSyntax) As BinaryExpressionSyntax Return SyntaxFactory.EqualsExpression(left, SyntaxFactory.Token(SyntaxKind.EqualsToken), right) End Function ''' <summary> ''' Represents a binary operator. The Kind property classifies the operators into ''' similar kind of operators (arithmetic, relational, logical or string); the ''' exact operation being performed is determined by the Operator property. ''' </summary> ''' <param name="left"> ''' The left operand. ''' </param> ''' <param name="right"> ''' The right operand. ''' </param> Public Shared Function NotEqualsExpression(left As ExpressionSyntax, operatorToken As SyntaxToken, right As ExpressionSyntax) As BinaryExpressionSyntax if left Is Nothing Then Throw New ArgumentNullException(NameOf(left)) End If Select Case left.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("left") End Select Select Case operatorToken.Kind() Case SyntaxKind.LessThanGreaterThanToken Case Else Throw new ArgumentException("operatorToken") End Select if right Is Nothing Then Throw New ArgumentNullException(NameOf(right)) End If Select Case right.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("right") End Select Return New BinaryExpressionSyntax(SyntaxKind.NotEqualsExpression, Nothing, Nothing, left, DirectCast(operatorToken.Node, InternalSyntax.SyntaxToken), right) End Function ''' <summary> ''' Represents a binary operator. The Kind property classifies the operators into ''' similar kind of operators (arithmetic, relational, logical or string); the ''' exact operation being performed is determined by the Operator property. ''' </summary> ''' <param name="left"> ''' The left operand. ''' </param> ''' <param name="right"> ''' The right operand. ''' </param> Public Shared Function NotEqualsExpression(left As ExpressionSyntax, right As ExpressionSyntax) As BinaryExpressionSyntax Return SyntaxFactory.NotEqualsExpression(left, SyntaxFactory.Token(SyntaxKind.LessThanGreaterThanToken), right) End Function ''' <summary> ''' Represents a binary operator. The Kind property classifies the operators into ''' similar kind of operators (arithmetic, relational, logical or string); the ''' exact operation being performed is determined by the Operator property. ''' </summary> ''' <param name="left"> ''' The left operand. ''' </param> ''' <param name="right"> ''' The right operand. ''' </param> Public Shared Function LessThanExpression(left As ExpressionSyntax, operatorToken As SyntaxToken, right As ExpressionSyntax) As BinaryExpressionSyntax if left Is Nothing Then Throw New ArgumentNullException(NameOf(left)) End If Select Case left.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("left") End Select Select Case operatorToken.Kind() Case SyntaxKind.LessThanToken Case Else Throw new ArgumentException("operatorToken") End Select if right Is Nothing Then Throw New ArgumentNullException(NameOf(right)) End If Select Case right.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("right") End Select Return New BinaryExpressionSyntax(SyntaxKind.LessThanExpression, Nothing, Nothing, left, DirectCast(operatorToken.Node, InternalSyntax.SyntaxToken), right) End Function ''' <summary> ''' Represents a binary operator. The Kind property classifies the operators into ''' similar kind of operators (arithmetic, relational, logical or string); the ''' exact operation being performed is determined by the Operator property. ''' </summary> ''' <param name="left"> ''' The left operand. ''' </param> ''' <param name="right"> ''' The right operand. ''' </param> Public Shared Function LessThanExpression(left As ExpressionSyntax, right As ExpressionSyntax) As BinaryExpressionSyntax Return SyntaxFactory.LessThanExpression(left, SyntaxFactory.Token(SyntaxKind.LessThanToken), right) End Function ''' <summary> ''' Represents a binary operator. The Kind property classifies the operators into ''' similar kind of operators (arithmetic, relational, logical or string); the ''' exact operation being performed is determined by the Operator property. ''' </summary> ''' <param name="left"> ''' The left operand. ''' </param> ''' <param name="right"> ''' The right operand. ''' </param> Public Shared Function LessThanOrEqualExpression(left As ExpressionSyntax, operatorToken As SyntaxToken, right As ExpressionSyntax) As BinaryExpressionSyntax if left Is Nothing Then Throw New ArgumentNullException(NameOf(left)) End If Select Case left.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("left") End Select Select Case operatorToken.Kind() Case SyntaxKind.LessThanEqualsToken Case Else Throw new ArgumentException("operatorToken") End Select if right Is Nothing Then Throw New ArgumentNullException(NameOf(right)) End If Select Case right.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("right") End Select Return New BinaryExpressionSyntax(SyntaxKind.LessThanOrEqualExpression, Nothing, Nothing, left, DirectCast(operatorToken.Node, InternalSyntax.SyntaxToken), right) End Function ''' <summary> ''' Represents a binary operator. The Kind property classifies the operators into ''' similar kind of operators (arithmetic, relational, logical or string); the ''' exact operation being performed is determined by the Operator property. ''' </summary> ''' <param name="left"> ''' The left operand. ''' </param> ''' <param name="right"> ''' The right operand. ''' </param> Public Shared Function LessThanOrEqualExpression(left As ExpressionSyntax, right As ExpressionSyntax) As BinaryExpressionSyntax Return SyntaxFactory.LessThanOrEqualExpression(left, SyntaxFactory.Token(SyntaxKind.LessThanEqualsToken), right) End Function ''' <summary> ''' Represents a binary operator. The Kind property classifies the operators into ''' similar kind of operators (arithmetic, relational, logical or string); the ''' exact operation being performed is determined by the Operator property. ''' </summary> ''' <param name="left"> ''' The left operand. ''' </param> ''' <param name="right"> ''' The right operand. ''' </param> Public Shared Function GreaterThanOrEqualExpression(left As ExpressionSyntax, operatorToken As SyntaxToken, right As ExpressionSyntax) As BinaryExpressionSyntax if left Is Nothing Then Throw New ArgumentNullException(NameOf(left)) End If Select Case left.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("left") End Select Select Case operatorToken.Kind() Case SyntaxKind.GreaterThanEqualsToken Case Else Throw new ArgumentException("operatorToken") End Select if right Is Nothing Then Throw New ArgumentNullException(NameOf(right)) End If Select Case right.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("right") End Select Return New BinaryExpressionSyntax(SyntaxKind.GreaterThanOrEqualExpression, Nothing, Nothing, left, DirectCast(operatorToken.Node, InternalSyntax.SyntaxToken), right) End Function ''' <summary> ''' Represents a binary operator. The Kind property classifies the operators into ''' similar kind of operators (arithmetic, relational, logical or string); the ''' exact operation being performed is determined by the Operator property. ''' </summary> ''' <param name="left"> ''' The left operand. ''' </param> ''' <param name="right"> ''' The right operand. ''' </param> Public Shared Function GreaterThanOrEqualExpression(left As ExpressionSyntax, right As ExpressionSyntax) As BinaryExpressionSyntax Return SyntaxFactory.GreaterThanOrEqualExpression(left, SyntaxFactory.Token(SyntaxKind.GreaterThanEqualsToken), right) End Function ''' <summary> ''' Represents a binary operator. The Kind property classifies the operators into ''' similar kind of operators (arithmetic, relational, logical or string); the ''' exact operation being performed is determined by the Operator property. ''' </summary> ''' <param name="left"> ''' The left operand. ''' </param> ''' <param name="right"> ''' The right operand. ''' </param> Public Shared Function GreaterThanExpression(left As ExpressionSyntax, operatorToken As SyntaxToken, right As ExpressionSyntax) As BinaryExpressionSyntax if left Is Nothing Then Throw New ArgumentNullException(NameOf(left)) End If Select Case left.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("left") End Select Select Case operatorToken.Kind() Case SyntaxKind.GreaterThanToken Case Else Throw new ArgumentException("operatorToken") End Select if right Is Nothing Then Throw New ArgumentNullException(NameOf(right)) End If Select Case right.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("right") End Select Return New BinaryExpressionSyntax(SyntaxKind.GreaterThanExpression, Nothing, Nothing, left, DirectCast(operatorToken.Node, InternalSyntax.SyntaxToken), right) End Function ''' <summary> ''' Represents a binary operator. The Kind property classifies the operators into ''' similar kind of operators (arithmetic, relational, logical or string); the ''' exact operation being performed is determined by the Operator property. ''' </summary> ''' <param name="left"> ''' The left operand. ''' </param> ''' <param name="right"> ''' The right operand. ''' </param> Public Shared Function GreaterThanExpression(left As ExpressionSyntax, right As ExpressionSyntax) As BinaryExpressionSyntax Return SyntaxFactory.GreaterThanExpression(left, SyntaxFactory.Token(SyntaxKind.GreaterThanToken), right) End Function ''' <summary> ''' Represents a binary operator. The Kind property classifies the operators into ''' similar kind of operators (arithmetic, relational, logical or string); the ''' exact operation being performed is determined by the Operator property. ''' </summary> ''' <param name="left"> ''' The left operand. ''' </param> ''' <param name="right"> ''' The right operand. ''' </param> Public Shared Function IsExpression(left As ExpressionSyntax, operatorToken As SyntaxToken, right As ExpressionSyntax) As BinaryExpressionSyntax if left Is Nothing Then Throw New ArgumentNullException(NameOf(left)) End If Select Case left.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("left") End Select Select Case operatorToken.Kind() Case SyntaxKind.IsKeyword Case Else Throw new ArgumentException("operatorToken") End Select if right Is Nothing Then Throw New ArgumentNullException(NameOf(right)) End If Select Case right.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("right") End Select Return New BinaryExpressionSyntax(SyntaxKind.IsExpression, Nothing, Nothing, left, DirectCast(operatorToken.Node, InternalSyntax.SyntaxToken), right) End Function ''' <summary> ''' Represents a binary operator. The Kind property classifies the operators into ''' similar kind of operators (arithmetic, relational, logical or string); the ''' exact operation being performed is determined by the Operator property. ''' </summary> ''' <param name="left"> ''' The left operand. ''' </param> ''' <param name="right"> ''' The right operand. ''' </param> Public Shared Function IsExpression(left As ExpressionSyntax, right As ExpressionSyntax) As BinaryExpressionSyntax Return SyntaxFactory.IsExpression(left, SyntaxFactory.Token(SyntaxKind.IsKeyword), right) End Function ''' <summary> ''' Represents a binary operator. The Kind property classifies the operators into ''' similar kind of operators (arithmetic, relational, logical or string); the ''' exact operation being performed is determined by the Operator property. ''' </summary> ''' <param name="left"> ''' The left operand. ''' </param> ''' <param name="right"> ''' The right operand. ''' </param> Public Shared Function IsNotExpression(left As ExpressionSyntax, operatorToken As SyntaxToken, right As ExpressionSyntax) As BinaryExpressionSyntax if left Is Nothing Then Throw New ArgumentNullException(NameOf(left)) End If Select Case left.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("left") End Select Select Case operatorToken.Kind() Case SyntaxKind.IsNotKeyword Case Else Throw new ArgumentException("operatorToken") End Select if right Is Nothing Then Throw New ArgumentNullException(NameOf(right)) End If Select Case right.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("right") End Select Return New BinaryExpressionSyntax(SyntaxKind.IsNotExpression, Nothing, Nothing, left, DirectCast(operatorToken.Node, InternalSyntax.SyntaxToken), right) End Function ''' <summary> ''' Represents a binary operator. The Kind property classifies the operators into ''' similar kind of operators (arithmetic, relational, logical or string); the ''' exact operation being performed is determined by the Operator property. ''' </summary> ''' <param name="left"> ''' The left operand. ''' </param> ''' <param name="right"> ''' The right operand. ''' </param> Public Shared Function IsNotExpression(left As ExpressionSyntax, right As ExpressionSyntax) As BinaryExpressionSyntax Return SyntaxFactory.IsNotExpression(left, SyntaxFactory.Token(SyntaxKind.IsNotKeyword), right) End Function ''' <summary> ''' Represents a binary operator. The Kind property classifies the operators into ''' similar kind of operators (arithmetic, relational, logical or string); the ''' exact operation being performed is determined by the Operator property. ''' </summary> ''' <param name="left"> ''' The left operand. ''' </param> ''' <param name="right"> ''' The right operand. ''' </param> Public Shared Function LikeExpression(left As ExpressionSyntax, operatorToken As SyntaxToken, right As ExpressionSyntax) As BinaryExpressionSyntax if left Is Nothing Then Throw New ArgumentNullException(NameOf(left)) End If Select Case left.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("left") End Select Select Case operatorToken.Kind() Case SyntaxKind.LikeKeyword Case Else Throw new ArgumentException("operatorToken") End Select if right Is Nothing Then Throw New ArgumentNullException(NameOf(right)) End If Select Case right.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("right") End Select Return New BinaryExpressionSyntax(SyntaxKind.LikeExpression, Nothing, Nothing, left, DirectCast(operatorToken.Node, InternalSyntax.SyntaxToken), right) End Function ''' <summary> ''' Represents a binary operator. The Kind property classifies the operators into ''' similar kind of operators (arithmetic, relational, logical or string); the ''' exact operation being performed is determined by the Operator property. ''' </summary> ''' <param name="left"> ''' The left operand. ''' </param> ''' <param name="right"> ''' The right operand. ''' </param> Public Shared Function LikeExpression(left As ExpressionSyntax, right As ExpressionSyntax) As BinaryExpressionSyntax Return SyntaxFactory.LikeExpression(left, SyntaxFactory.Token(SyntaxKind.LikeKeyword), right) End Function ''' <summary> ''' Represents a binary operator. The Kind property classifies the operators into ''' similar kind of operators (arithmetic, relational, logical or string); the ''' exact operation being performed is determined by the Operator property. ''' </summary> ''' <param name="left"> ''' The left operand. ''' </param> ''' <param name="right"> ''' The right operand. ''' </param> Public Shared Function OrExpression(left As ExpressionSyntax, operatorToken As SyntaxToken, right As ExpressionSyntax) As BinaryExpressionSyntax if left Is Nothing Then Throw New ArgumentNullException(NameOf(left)) End If Select Case left.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("left") End Select Select Case operatorToken.Kind() Case SyntaxKind.OrKeyword Case Else Throw new ArgumentException("operatorToken") End Select if right Is Nothing Then Throw New ArgumentNullException(NameOf(right)) End If Select Case right.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("right") End Select Return New BinaryExpressionSyntax(SyntaxKind.OrExpression, Nothing, Nothing, left, DirectCast(operatorToken.Node, InternalSyntax.SyntaxToken), right) End Function ''' <summary> ''' Represents a binary operator. The Kind property classifies the operators into ''' similar kind of operators (arithmetic, relational, logical or string); the ''' exact operation being performed is determined by the Operator property. ''' </summary> ''' <param name="left"> ''' The left operand. ''' </param> ''' <param name="right"> ''' The right operand. ''' </param> Public Shared Function OrExpression(left As ExpressionSyntax, right As ExpressionSyntax) As BinaryExpressionSyntax Return SyntaxFactory.OrExpression(left, SyntaxFactory.Token(SyntaxKind.OrKeyword), right) End Function ''' <summary> ''' Represents a binary operator. The Kind property classifies the operators into ''' similar kind of operators (arithmetic, relational, logical or string); the ''' exact operation being performed is determined by the Operator property. ''' </summary> ''' <param name="left"> ''' The left operand. ''' </param> ''' <param name="right"> ''' The right operand. ''' </param> Public Shared Function ExclusiveOrExpression(left As ExpressionSyntax, operatorToken As SyntaxToken, right As ExpressionSyntax) As BinaryExpressionSyntax if left Is Nothing Then Throw New ArgumentNullException(NameOf(left)) End If Select Case left.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("left") End Select Select Case operatorToken.Kind() Case SyntaxKind.XorKeyword Case Else Throw new ArgumentException("operatorToken") End Select if right Is Nothing Then Throw New ArgumentNullException(NameOf(right)) End If Select Case right.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("right") End Select Return New BinaryExpressionSyntax(SyntaxKind.ExclusiveOrExpression, Nothing, Nothing, left, DirectCast(operatorToken.Node, InternalSyntax.SyntaxToken), right) End Function ''' <summary> ''' Represents a binary operator. The Kind property classifies the operators into ''' similar kind of operators (arithmetic, relational, logical or string); the ''' exact operation being performed is determined by the Operator property. ''' </summary> ''' <param name="left"> ''' The left operand. ''' </param> ''' <param name="right"> ''' The right operand. ''' </param> Public Shared Function ExclusiveOrExpression(left As ExpressionSyntax, right As ExpressionSyntax) As BinaryExpressionSyntax Return SyntaxFactory.ExclusiveOrExpression(left, SyntaxFactory.Token(SyntaxKind.XorKeyword), right) End Function ''' <summary> ''' Represents a binary operator. The Kind property classifies the operators into ''' similar kind of operators (arithmetic, relational, logical or string); the ''' exact operation being performed is determined by the Operator property. ''' </summary> ''' <param name="left"> ''' The left operand. ''' </param> ''' <param name="right"> ''' The right operand. ''' </param> Public Shared Function AndExpression(left As ExpressionSyntax, operatorToken As SyntaxToken, right As ExpressionSyntax) As BinaryExpressionSyntax if left Is Nothing Then Throw New ArgumentNullException(NameOf(left)) End If Select Case left.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("left") End Select Select Case operatorToken.Kind() Case SyntaxKind.AndKeyword Case Else Throw new ArgumentException("operatorToken") End Select if right Is Nothing Then Throw New ArgumentNullException(NameOf(right)) End If Select Case right.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("right") End Select Return New BinaryExpressionSyntax(SyntaxKind.AndExpression, Nothing, Nothing, left, DirectCast(operatorToken.Node, InternalSyntax.SyntaxToken), right) End Function ''' <summary> ''' Represents a binary operator. The Kind property classifies the operators into ''' similar kind of operators (arithmetic, relational, logical or string); the ''' exact operation being performed is determined by the Operator property. ''' </summary> ''' <param name="left"> ''' The left operand. ''' </param> ''' <param name="right"> ''' The right operand. ''' </param> Public Shared Function AndExpression(left As ExpressionSyntax, right As ExpressionSyntax) As BinaryExpressionSyntax Return SyntaxFactory.AndExpression(left, SyntaxFactory.Token(SyntaxKind.AndKeyword), right) End Function ''' <summary> ''' Represents a binary operator. The Kind property classifies the operators into ''' similar kind of operators (arithmetic, relational, logical or string); the ''' exact operation being performed is determined by the Operator property. ''' </summary> ''' <param name="left"> ''' The left operand. ''' </param> ''' <param name="right"> ''' The right operand. ''' </param> Public Shared Function OrElseExpression(left As ExpressionSyntax, operatorToken As SyntaxToken, right As ExpressionSyntax) As BinaryExpressionSyntax if left Is Nothing Then Throw New ArgumentNullException(NameOf(left)) End If Select Case left.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("left") End Select Select Case operatorToken.Kind() Case SyntaxKind.OrElseKeyword Case Else Throw new ArgumentException("operatorToken") End Select if right Is Nothing Then Throw New ArgumentNullException(NameOf(right)) End If Select Case right.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("right") End Select Return New BinaryExpressionSyntax(SyntaxKind.OrElseExpression, Nothing, Nothing, left, DirectCast(operatorToken.Node, InternalSyntax.SyntaxToken), right) End Function ''' <summary> ''' Represents a binary operator. The Kind property classifies the operators into ''' similar kind of operators (arithmetic, relational, logical or string); the ''' exact operation being performed is determined by the Operator property. ''' </summary> ''' <param name="left"> ''' The left operand. ''' </param> ''' <param name="right"> ''' The right operand. ''' </param> Public Shared Function OrElseExpression(left As ExpressionSyntax, right As ExpressionSyntax) As BinaryExpressionSyntax Return SyntaxFactory.OrElseExpression(left, SyntaxFactory.Token(SyntaxKind.OrElseKeyword), right) End Function ''' <summary> ''' Represents a binary operator. The Kind property classifies the operators into ''' similar kind of operators (arithmetic, relational, logical or string); the ''' exact operation being performed is determined by the Operator property. ''' </summary> ''' <param name="left"> ''' The left operand. ''' </param> ''' <param name="right"> ''' The right operand. ''' </param> Public Shared Function AndAlsoExpression(left As ExpressionSyntax, operatorToken As SyntaxToken, right As ExpressionSyntax) As BinaryExpressionSyntax if left Is Nothing Then Throw New ArgumentNullException(NameOf(left)) End If Select Case left.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("left") End Select Select Case operatorToken.Kind() Case SyntaxKind.AndAlsoKeyword Case Else Throw new ArgumentException("operatorToken") End Select if right Is Nothing Then Throw New ArgumentNullException(NameOf(right)) End If Select Case right.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("right") End Select Return New BinaryExpressionSyntax(SyntaxKind.AndAlsoExpression, Nothing, Nothing, left, DirectCast(operatorToken.Node, InternalSyntax.SyntaxToken), right) End Function ''' <summary> ''' Represents a binary operator. The Kind property classifies the operators into ''' similar kind of operators (arithmetic, relational, logical or string); the ''' exact operation being performed is determined by the Operator property. ''' </summary> ''' <param name="left"> ''' The left operand. ''' </param> ''' <param name="right"> ''' The right operand. ''' </param> Public Shared Function AndAlsoExpression(left As ExpressionSyntax, right As ExpressionSyntax) As BinaryExpressionSyntax Return SyntaxFactory.AndAlsoExpression(left, SyntaxFactory.Token(SyntaxKind.AndAlsoKeyword), right) End Function ''' <summary> ''' Represents a binary operator. The Kind property classifies the operators into ''' similar kind of operators (arithmetic, relational, logical or string); the ''' exact operation being performed is determined by the Operator property. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' BinaryExpressionSyntax. One of AddExpression, SubtractExpression, ''' MultiplyExpression, DivideExpression, IntegerDivideExpression, ''' ExponentiateExpression, LeftShiftExpression, RightShiftExpression, ''' ConcatenateExpression, ModuloExpression, EqualsExpression, NotEqualsExpression, ''' LessThanExpression, LessThanOrEqualExpression, GreaterThanOrEqualExpression, ''' GreaterThanExpression, IsExpression, IsNotExpression, LikeExpression, ''' OrExpression, ExclusiveOrExpression, AndExpression, OrElseExpression, ''' AndAlsoExpression. ''' </param> ''' <param name="left"> ''' The left operand. ''' </param> ''' <param name="right"> ''' The right operand. ''' </param> Public Shared Function BinaryExpression(ByVal kind As SyntaxKind, left As ExpressionSyntax, operatorToken As SyntaxToken, right As ExpressionSyntax) As BinaryExpressionSyntax If Not SyntaxFacts.IsBinaryExpression(kind) Then Throw New ArgumentException("kind") End If if left Is Nothing Then Throw New ArgumentNullException(NameOf(left)) End If Select Case left.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("left") End Select If (Not operatorToken.IsKind(GetBinaryExpressionOperatorTokenKind(kind))) Then Throw new ArgumentException("operatorToken") End If if right Is Nothing Then Throw New ArgumentNullException(NameOf(right)) End If Select Case right.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("right") End Select Return New BinaryExpressionSyntax(kind, Nothing, Nothing, left, DirectCast(operatorToken.Node, InternalSyntax.SyntaxToken), right) End Function Private Shared Function GetBinaryExpressionOperatorTokenKind(kind As SyntaxKind) As SyntaxKind Select Case kind Case SyntaxKind.AddExpression Return SyntaxKind.PlusToken Case SyntaxKind.SubtractExpression Return SyntaxKind.MinusToken Case SyntaxKind.MultiplyExpression Return SyntaxKind.AsteriskToken Case SyntaxKind.DivideExpression Return SyntaxKind.SlashToken Case SyntaxKind.IntegerDivideExpression Return SyntaxKind.BackslashToken Case SyntaxKind.ExponentiateExpression Return SyntaxKind.CaretToken Case SyntaxKind.LeftShiftExpression Return SyntaxKind.LessThanLessThanToken Case SyntaxKind.RightShiftExpression Return SyntaxKind.GreaterThanGreaterThanToken Case SyntaxKind.ConcatenateExpression Return SyntaxKind.AmpersandToken Case SyntaxKind.ModuloExpression Return SyntaxKind.ModKeyword Case SyntaxKind.EqualsExpression Return SyntaxKind.EqualsToken Case SyntaxKind.NotEqualsExpression Return SyntaxKind.LessThanGreaterThanToken Case SyntaxKind.LessThanExpression Return SyntaxKind.LessThanToken Case SyntaxKind.LessThanOrEqualExpression Return SyntaxKind.LessThanEqualsToken Case SyntaxKind.GreaterThanOrEqualExpression Return SyntaxKind.GreaterThanEqualsToken Case SyntaxKind.GreaterThanExpression Return SyntaxKind.GreaterThanToken Case SyntaxKind.IsExpression Return SyntaxKind.IsKeyword Case SyntaxKind.IsNotExpression Return SyntaxKind.IsNotKeyword Case SyntaxKind.LikeExpression Return SyntaxKind.LikeKeyword Case SyntaxKind.OrExpression Return SyntaxKind.OrKeyword Case SyntaxKind.ExclusiveOrExpression Return SyntaxKind.XorKeyword Case SyntaxKind.AndExpression Return SyntaxKind.AndKeyword Case SyntaxKind.OrElseExpression Return SyntaxKind.OrElseKeyword Case SyntaxKind.AndAlsoExpression Return SyntaxKind.AndAlsoKeyword Case Else Throw New ArgumentException("OperatorToken") End Select End Function ''' <summary> ''' Describes a unary operator: Plus, Negate, Not or AddressOf. ''' </summary> ''' <param name="operatorToken"> ''' The token that is the operator. ''' </param> ''' <param name="operand"> ''' The expression being operated on. ''' </param> Public Shared Function UnaryPlusExpression(operatorToken As SyntaxToken, operand As ExpressionSyntax) As UnaryExpressionSyntax Select Case operatorToken.Kind() Case SyntaxKind.PlusToken : Case SyntaxKind.MinusToken : Case SyntaxKind.NotKeyword : Case SyntaxKind.AddressOfKeyword Case Else Throw new ArgumentException("operatorToken") End Select if operand Is Nothing Then Throw New ArgumentNullException(NameOf(operand)) End If Select Case operand.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("operand") End Select Return New UnaryExpressionSyntax(SyntaxKind.UnaryPlusExpression, Nothing, Nothing, DirectCast(operatorToken.Node, InternalSyntax.SyntaxToken), operand) End Function ''' <summary> ''' Describes a unary operator: Plus, Negate, Not or AddressOf. ''' </summary> ''' <param name="operand"> ''' The expression being operated on. ''' </param> Public Shared Function UnaryPlusExpression(operand As ExpressionSyntax) As UnaryExpressionSyntax Return SyntaxFactory.UnaryPlusExpression(SyntaxFactory.Token(SyntaxKind.PlusToken), operand) End Function ''' <summary> ''' Describes a unary operator: Plus, Negate, Not or AddressOf. ''' </summary> ''' <param name="operatorToken"> ''' The token that is the operator. ''' </param> ''' <param name="operand"> ''' The expression being operated on. ''' </param> Public Shared Function UnaryMinusExpression(operatorToken As SyntaxToken, operand As ExpressionSyntax) As UnaryExpressionSyntax Select Case operatorToken.Kind() Case SyntaxKind.MinusToken Case Else Throw new ArgumentException("operatorToken") End Select if operand Is Nothing Then Throw New ArgumentNullException(NameOf(operand)) End If Select Case operand.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("operand") End Select Return New UnaryExpressionSyntax(SyntaxKind.UnaryMinusExpression, Nothing, Nothing, DirectCast(operatorToken.Node, InternalSyntax.SyntaxToken), operand) End Function ''' <summary> ''' Describes a unary operator: Plus, Negate, Not or AddressOf. ''' </summary> ''' <param name="operand"> ''' The expression being operated on. ''' </param> Public Shared Function UnaryMinusExpression(operand As ExpressionSyntax) As UnaryExpressionSyntax Return SyntaxFactory.UnaryMinusExpression(SyntaxFactory.Token(SyntaxKind.MinusToken), operand) End Function ''' <summary> ''' Describes a unary operator: Plus, Negate, Not or AddressOf. ''' </summary> ''' <param name="operatorToken"> ''' The token that is the operator. ''' </param> ''' <param name="operand"> ''' The expression being operated on. ''' </param> Public Shared Function NotExpression(operatorToken As SyntaxToken, operand As ExpressionSyntax) As UnaryExpressionSyntax Select Case operatorToken.Kind() Case SyntaxKind.NotKeyword Case Else Throw new ArgumentException("operatorToken") End Select if operand Is Nothing Then Throw New ArgumentNullException(NameOf(operand)) End If Select Case operand.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("operand") End Select Return New UnaryExpressionSyntax(SyntaxKind.NotExpression, Nothing, Nothing, DirectCast(operatorToken.Node, InternalSyntax.SyntaxToken), operand) End Function ''' <summary> ''' Describes a unary operator: Plus, Negate, Not or AddressOf. ''' </summary> ''' <param name="operand"> ''' The expression being operated on. ''' </param> Public Shared Function NotExpression(operand As ExpressionSyntax) As UnaryExpressionSyntax Return SyntaxFactory.NotExpression(SyntaxFactory.Token(SyntaxKind.NotKeyword), operand) End Function ''' <summary> ''' Describes a unary operator: Plus, Negate, Not or AddressOf. ''' </summary> ''' <param name="operatorToken"> ''' The token that is the operator. ''' </param> ''' <param name="operand"> ''' The expression being operated on. ''' </param> Public Shared Function AddressOfExpression(operatorToken As SyntaxToken, operand As ExpressionSyntax) As UnaryExpressionSyntax Select Case operatorToken.Kind() Case SyntaxKind.AddressOfKeyword Case Else Throw new ArgumentException("operatorToken") End Select if operand Is Nothing Then Throw New ArgumentNullException(NameOf(operand)) End If Select Case operand.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("operand") End Select Return New UnaryExpressionSyntax(SyntaxKind.AddressOfExpression, Nothing, Nothing, DirectCast(operatorToken.Node, InternalSyntax.SyntaxToken), operand) End Function ''' <summary> ''' Describes a unary operator: Plus, Negate, Not or AddressOf. ''' </summary> ''' <param name="operand"> ''' The expression being operated on. ''' </param> Public Shared Function AddressOfExpression(operand As ExpressionSyntax) As UnaryExpressionSyntax Return SyntaxFactory.AddressOfExpression(SyntaxFactory.Token(SyntaxKind.AddressOfKeyword), operand) End Function ''' <summary> ''' Describes a unary operator: Plus, Negate, Not or AddressOf. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' UnaryExpressionSyntax. One of UnaryPlusExpression, UnaryMinusExpression, ''' NotExpression, AddressOfExpression. ''' </param> ''' <param name="operatorToken"> ''' The token that is the operator. ''' </param> ''' <param name="operand"> ''' The expression being operated on. ''' </param> Public Shared Function UnaryExpression(ByVal kind As SyntaxKind, operatorToken As SyntaxToken, operand As ExpressionSyntax) As UnaryExpressionSyntax If Not SyntaxFacts.IsUnaryExpression(kind) Then Throw New ArgumentException("kind") End If If (Not operatorToken.IsKind(GetUnaryExpressionOperatorTokenKind(kind))) Then Throw new ArgumentException("operatorToken") End If if operand Is Nothing Then Throw New ArgumentNullException(NameOf(operand)) End If Select Case operand.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("operand") End Select Return New UnaryExpressionSyntax(kind, Nothing, Nothing, DirectCast(operatorToken.Node, InternalSyntax.SyntaxToken), operand) End Function Private Shared Function GetUnaryExpressionOperatorTokenKind(kind As SyntaxKind) As SyntaxKind Select Case kind Case SyntaxKind.UnaryPlusExpression Return SyntaxKind.PlusToken Case SyntaxKind.UnaryMinusExpression Return SyntaxKind.MinusToken Case SyntaxKind.NotExpression Return SyntaxKind.NotKeyword Case SyntaxKind.AddressOfExpression Return SyntaxKind.AddressOfKeyword Case Else Throw New ArgumentException("OperatorToken") End Select End Function ''' <summary> ''' Represents a conditional expression, If(condition, true-expr, false-expr) or ''' If(expr, nothing-expr). ''' </summary> ''' <param name="ifKeyword"> ''' The "If" keyword ''' </param> ''' <param name="openParenToken"> ''' The "(" token ''' </param> ''' <param name="firstExpression"> ''' The first expression inside the parentheses. ''' </param> ''' <param name="commaToken"> ''' The "," token. ''' </param> ''' <param name="secondExpression"> ''' The second expression inside the parentheses. ''' </param> ''' <param name="closeParenToken"> ''' The ")" token ''' </param> Public Shared Function BinaryConditionalExpression(ifKeyword As SyntaxToken, openParenToken As SyntaxToken, firstExpression As ExpressionSyntax, commaToken As SyntaxToken, secondExpression As ExpressionSyntax, closeParenToken As SyntaxToken) As BinaryConditionalExpressionSyntax Select Case ifKeyword.Kind() Case SyntaxKind.IfKeyword Case Else Throw new ArgumentException("ifKeyword") End Select Select Case openParenToken.Kind() Case SyntaxKind.OpenParenToken Case Else Throw new ArgumentException("openParenToken") End Select if firstExpression Is Nothing Then Throw New ArgumentNullException(NameOf(firstExpression)) End If Select Case firstExpression.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("firstExpression") End Select Select Case commaToken.Kind() Case SyntaxKind.CommaToken Case Else Throw new ArgumentException("commaToken") End Select if secondExpression Is Nothing Then Throw New ArgumentNullException(NameOf(secondExpression)) End If Select Case secondExpression.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("secondExpression") End Select Select Case closeParenToken.Kind() Case SyntaxKind.CloseParenToken Case Else Throw new ArgumentException("closeParenToken") End Select Return New BinaryConditionalExpressionSyntax(SyntaxKind.BinaryConditionalExpression, Nothing, Nothing, DirectCast(ifKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(openParenToken.Node, InternalSyntax.PunctuationSyntax), firstExpression, DirectCast(commaToken.Node, InternalSyntax.PunctuationSyntax), secondExpression, DirectCast(closeParenToken.Node, InternalSyntax.PunctuationSyntax)) End Function ''' <summary> ''' Represents a conditional expression, If(condition, true-expr, false-expr) or ''' If(expr, nothing-expr). ''' </summary> ''' <param name="firstExpression"> ''' The first expression inside the parentheses. ''' </param> ''' <param name="secondExpression"> ''' The second expression inside the parentheses. ''' </param> Public Shared Function BinaryConditionalExpression(firstExpression As ExpressionSyntax, secondExpression As ExpressionSyntax) As BinaryConditionalExpressionSyntax Return SyntaxFactory.BinaryConditionalExpression(SyntaxFactory.Token(SyntaxKind.IfKeyword), SyntaxFactory.Token(SyntaxKind.OpenParenToken), firstExpression, SyntaxFactory.Token(SyntaxKind.CommaToken), secondExpression, SyntaxFactory.Token(SyntaxKind.CloseParenToken)) End Function ''' <summary> ''' Represents a conditional expression, If(condition, true-expr, false-expr) or ''' If(expr, nothing-expr). ''' </summary> ''' <param name="ifKeyword"> ''' The "If" keyword ''' </param> ''' <param name="openParenToken"> ''' The "(" token ''' </param> ''' <param name="condition"> ''' The first expression inside the parentheses. ''' </param> ''' <param name="firstCommaToken"> ''' The "," token. ''' </param> ''' <param name="whenTrue"> ''' The second expression inside the parentheses. ''' </param> ''' <param name="secondCommaToken"> ''' The "," token. ''' </param> ''' <param name="whenFalse"> ''' The second expression inside the parentheses. ''' </param> ''' <param name="closeParenToken"> ''' The ")" token ''' </param> Public Shared Function TernaryConditionalExpression(ifKeyword As SyntaxToken, openParenToken As SyntaxToken, condition As ExpressionSyntax, firstCommaToken As SyntaxToken, whenTrue As ExpressionSyntax, secondCommaToken As SyntaxToken, whenFalse As ExpressionSyntax, closeParenToken As SyntaxToken) As TernaryConditionalExpressionSyntax Select Case ifKeyword.Kind() Case SyntaxKind.IfKeyword Case Else Throw new ArgumentException("ifKeyword") End Select Select Case openParenToken.Kind() Case SyntaxKind.OpenParenToken Case Else Throw new ArgumentException("openParenToken") End Select if condition Is Nothing Then Throw New ArgumentNullException(NameOf(condition)) End If Select Case condition.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("condition") End Select Select Case firstCommaToken.Kind() Case SyntaxKind.CommaToken Case Else Throw new ArgumentException("firstCommaToken") End Select if whenTrue Is Nothing Then Throw New ArgumentNullException(NameOf(whenTrue)) End If Select Case whenTrue.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("whenTrue") End Select Select Case secondCommaToken.Kind() Case SyntaxKind.CommaToken Case Else Throw new ArgumentException("secondCommaToken") End Select if whenFalse Is Nothing Then Throw New ArgumentNullException(NameOf(whenFalse)) End If Select Case whenFalse.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("whenFalse") End Select Select Case closeParenToken.Kind() Case SyntaxKind.CloseParenToken Case Else Throw new ArgumentException("closeParenToken") End Select Return New TernaryConditionalExpressionSyntax(SyntaxKind.TernaryConditionalExpression, Nothing, Nothing, DirectCast(ifKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(openParenToken.Node, InternalSyntax.PunctuationSyntax), condition, DirectCast(firstCommaToken.Node, InternalSyntax.PunctuationSyntax), whenTrue, DirectCast(secondCommaToken.Node, InternalSyntax.PunctuationSyntax), whenFalse, DirectCast(closeParenToken.Node, InternalSyntax.PunctuationSyntax)) End Function ''' <summary> ''' Represents a conditional expression, If(condition, true-expr, false-expr) or ''' If(expr, nothing-expr). ''' </summary> ''' <param name="condition"> ''' The first expression inside the parentheses. ''' </param> ''' <param name="whenTrue"> ''' The second expression inside the parentheses. ''' </param> ''' <param name="whenFalse"> ''' The second expression inside the parentheses. ''' </param> Public Shared Function TernaryConditionalExpression(condition As ExpressionSyntax, whenTrue As ExpressionSyntax, whenFalse As ExpressionSyntax) As TernaryConditionalExpressionSyntax Return SyntaxFactory.TernaryConditionalExpression(SyntaxFactory.Token(SyntaxKind.IfKeyword), SyntaxFactory.Token(SyntaxKind.OpenParenToken), condition, SyntaxFactory.Token(SyntaxKind.CommaToken), whenTrue, SyntaxFactory.Token(SyntaxKind.CommaToken), whenFalse, SyntaxFactory.Token(SyntaxKind.CloseParenToken)) End Function ''' <summary> ''' Represents a single line lambda expression. ''' </summary> ''' <param name="subOrFunctionHeader"> ''' The header part of the lambda that includes the "Sub" or "Function" keyword, ''' the argument list and return type. ''' </param> ''' <param name="body"> ''' The body of the lambda. Depending on the kind of lambda, this is either a ''' Statement (single-line Sub lambda) or Expression (single-line Function). ''' </param> Public Shared Function SingleLineFunctionLambdaExpression(subOrFunctionHeader As LambdaHeaderSyntax, body As VisualBasicSyntaxNode) As SingleLineLambdaExpressionSyntax if subOrFunctionHeader Is Nothing Then Throw New ArgumentNullException(NameOf(subOrFunctionHeader)) End If Select Case subOrFunctionHeader.Kind() Case SyntaxKind.SubLambdaHeader, SyntaxKind.FunctionLambdaHeader Case Else Throw new ArgumentException("subOrFunctionHeader") End Select if body Is Nothing Then Throw New ArgumentNullException(NameOf(body)) End If Select Case body.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression, SyntaxKind.EmptyStatement, SyntaxKind.EndIfStatement, SyntaxKind.EndUsingStatement, SyntaxKind.EndWithStatement, SyntaxKind.EndSelectStatement, SyntaxKind.EndStructureStatement, SyntaxKind.EndEnumStatement, SyntaxKind.EndInterfaceStatement, SyntaxKind.EndClassStatement, SyntaxKind.EndModuleStatement, SyntaxKind.EndNamespaceStatement, SyntaxKind.EndSubStatement, SyntaxKind.EndFunctionStatement, SyntaxKind.EndGetStatement, SyntaxKind.EndSetStatement, SyntaxKind.EndPropertyStatement, SyntaxKind.EndOperatorStatement, SyntaxKind.EndEventStatement, SyntaxKind.EndAddHandlerStatement, SyntaxKind.EndRemoveHandlerStatement, SyntaxKind.EndRaiseEventStatement, SyntaxKind.EndWhileStatement, SyntaxKind.EndTryStatement, SyntaxKind.EndSyncLockStatement, SyntaxKind.OptionStatement, SyntaxKind.ImportsStatement, SyntaxKind.NamespaceBlock, SyntaxKind.NamespaceStatement, SyntaxKind.ModuleBlock, SyntaxKind.StructureBlock, SyntaxKind.InterfaceBlock, SyntaxKind.ClassBlock, SyntaxKind.EnumBlock, SyntaxKind.InheritsStatement, SyntaxKind.ImplementsStatement, SyntaxKind.ModuleStatement, SyntaxKind.StructureStatement, SyntaxKind.InterfaceStatement, SyntaxKind.ClassStatement, SyntaxKind.EnumStatement, SyntaxKind.EnumMemberDeclaration, SyntaxKind.SubBlock, SyntaxKind.FunctionBlock, SyntaxKind.ConstructorBlock, SyntaxKind.OperatorBlock, SyntaxKind.GetAccessorBlock, SyntaxKind.SetAccessorBlock, SyntaxKind.AddHandlerAccessorBlock, SyntaxKind.RemoveHandlerAccessorBlock, SyntaxKind.RaiseEventAccessorBlock, SyntaxKind.PropertyBlock, SyntaxKind.EventBlock, SyntaxKind.SubStatement, SyntaxKind.FunctionStatement, SyntaxKind.SubNewStatement, SyntaxKind.DeclareSubStatement, SyntaxKind.DeclareFunctionStatement, SyntaxKind.DelegateSubStatement, SyntaxKind.DelegateFunctionStatement, SyntaxKind.EventStatement, SyntaxKind.OperatorStatement, SyntaxKind.PropertyStatement, SyntaxKind.GetAccessorStatement, SyntaxKind.SetAccessorStatement, SyntaxKind.AddHandlerAccessorStatement, SyntaxKind.RemoveHandlerAccessorStatement, SyntaxKind.RaiseEventAccessorStatement, SyntaxKind.IncompleteMember, SyntaxKind.FieldDeclaration, SyntaxKind.AttributesStatement, SyntaxKind.ExpressionStatement, SyntaxKind.PrintStatement, SyntaxKind.WhileBlock, SyntaxKind.UsingBlock, SyntaxKind.SyncLockBlock, SyntaxKind.WithBlock, SyntaxKind.LocalDeclarationStatement, SyntaxKind.LabelStatement, SyntaxKind.GoToStatement, SyntaxKind.StopStatement, SyntaxKind.EndStatement, SyntaxKind.ExitDoStatement, SyntaxKind.ExitForStatement, SyntaxKind.ExitSubStatement, SyntaxKind.ExitFunctionStatement, SyntaxKind.ExitOperatorStatement, SyntaxKind.ExitPropertyStatement, SyntaxKind.ExitTryStatement, SyntaxKind.ExitSelectStatement, SyntaxKind.ExitWhileStatement, SyntaxKind.ContinueWhileStatement, SyntaxKind.ContinueDoStatement, SyntaxKind.ContinueForStatement, SyntaxKind.ReturnStatement, SyntaxKind.SingleLineIfStatement, SyntaxKind.MultiLineIfBlock, SyntaxKind.IfStatement, SyntaxKind.ElseIfStatement, SyntaxKind.ElseStatement, SyntaxKind.TryBlock, SyntaxKind.TryStatement, SyntaxKind.CatchStatement, SyntaxKind.FinallyStatement, SyntaxKind.ErrorStatement, SyntaxKind.OnErrorGoToZeroStatement, SyntaxKind.OnErrorGoToMinusOneStatement, SyntaxKind.OnErrorGoToLabelStatement, SyntaxKind.OnErrorResumeNextStatement, SyntaxKind.ResumeStatement, SyntaxKind.ResumeLabelStatement, SyntaxKind.ResumeNextStatement, SyntaxKind.SelectBlock, SyntaxKind.SelectStatement, SyntaxKind.CaseStatement, SyntaxKind.CaseElseStatement, SyntaxKind.SyncLockStatement, SyntaxKind.SimpleDoLoopBlock, SyntaxKind.DoWhileLoopBlock, SyntaxKind.DoUntilLoopBlock, SyntaxKind.DoLoopWhileBlock, SyntaxKind.DoLoopUntilBlock, SyntaxKind.SimpleDoStatement, SyntaxKind.DoWhileStatement, SyntaxKind.DoUntilStatement, SyntaxKind.SimpleLoopStatement, SyntaxKind.LoopWhileStatement, SyntaxKind.LoopUntilStatement, SyntaxKind.WhileStatement, SyntaxKind.ForBlock, SyntaxKind.ForEachBlock, SyntaxKind.ForStatement, SyntaxKind.ForEachStatement, SyntaxKind.NextStatement, SyntaxKind.UsingStatement, SyntaxKind.ThrowStatement, SyntaxKind.SimpleAssignmentStatement, SyntaxKind.MidAssignmentStatement, SyntaxKind.AddAssignmentStatement, SyntaxKind.SubtractAssignmentStatement, SyntaxKind.MultiplyAssignmentStatement, SyntaxKind.DivideAssignmentStatement, SyntaxKind.IntegerDivideAssignmentStatement, SyntaxKind.ExponentiateAssignmentStatement, SyntaxKind.LeftShiftAssignmentStatement, SyntaxKind.RightShiftAssignmentStatement, SyntaxKind.ConcatenateAssignmentStatement, SyntaxKind.CallStatement, SyntaxKind.AddHandlerStatement, SyntaxKind.RemoveHandlerStatement, SyntaxKind.RaiseEventStatement, SyntaxKind.WithStatement, SyntaxKind.ReDimStatement, SyntaxKind.ReDimPreserveStatement, SyntaxKind.EraseStatement, SyntaxKind.SubLambdaHeader, SyntaxKind.FunctionLambdaHeader, SyntaxKind.YieldStatement Case Else Throw new ArgumentException("body") End Select Return New SingleLineLambdaExpressionSyntax(SyntaxKind.SingleLineFunctionLambdaExpression, Nothing, Nothing, subOrFunctionHeader, body) End Function ''' <summary> ''' Represents a single line lambda expression. ''' </summary> ''' <param name="subOrFunctionHeader"> ''' The header part of the lambda that includes the "Sub" or "Function" keyword, ''' the argument list and return type. ''' </param> ''' <param name="body"> ''' The body of the lambda. Depending on the kind of lambda, this is either a ''' Statement (single-line Sub lambda) or Expression (single-line Function). ''' </param> Public Shared Function SingleLineSubLambdaExpression(subOrFunctionHeader As LambdaHeaderSyntax, body As VisualBasicSyntaxNode) As SingleLineLambdaExpressionSyntax if subOrFunctionHeader Is Nothing Then Throw New ArgumentNullException(NameOf(subOrFunctionHeader)) End If Select Case subOrFunctionHeader.Kind() Case SyntaxKind.SubLambdaHeader, SyntaxKind.FunctionLambdaHeader Case Else Throw new ArgumentException("subOrFunctionHeader") End Select if body Is Nothing Then Throw New ArgumentNullException(NameOf(body)) End If Select Case body.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression, SyntaxKind.EmptyStatement, SyntaxKind.EndIfStatement, SyntaxKind.EndUsingStatement, SyntaxKind.EndWithStatement, SyntaxKind.EndSelectStatement, SyntaxKind.EndStructureStatement, SyntaxKind.EndEnumStatement, SyntaxKind.EndInterfaceStatement, SyntaxKind.EndClassStatement, SyntaxKind.EndModuleStatement, SyntaxKind.EndNamespaceStatement, SyntaxKind.EndSubStatement, SyntaxKind.EndFunctionStatement, SyntaxKind.EndGetStatement, SyntaxKind.EndSetStatement, SyntaxKind.EndPropertyStatement, SyntaxKind.EndOperatorStatement, SyntaxKind.EndEventStatement, SyntaxKind.EndAddHandlerStatement, SyntaxKind.EndRemoveHandlerStatement, SyntaxKind.EndRaiseEventStatement, SyntaxKind.EndWhileStatement, SyntaxKind.EndTryStatement, SyntaxKind.EndSyncLockStatement, SyntaxKind.OptionStatement, SyntaxKind.ImportsStatement, SyntaxKind.NamespaceBlock, SyntaxKind.NamespaceStatement, SyntaxKind.ModuleBlock, SyntaxKind.StructureBlock, SyntaxKind.InterfaceBlock, SyntaxKind.ClassBlock, SyntaxKind.EnumBlock, SyntaxKind.InheritsStatement, SyntaxKind.ImplementsStatement, SyntaxKind.ModuleStatement, SyntaxKind.StructureStatement, SyntaxKind.InterfaceStatement, SyntaxKind.ClassStatement, SyntaxKind.EnumStatement, SyntaxKind.EnumMemberDeclaration, SyntaxKind.SubBlock, SyntaxKind.FunctionBlock, SyntaxKind.ConstructorBlock, SyntaxKind.OperatorBlock, SyntaxKind.GetAccessorBlock, SyntaxKind.SetAccessorBlock, SyntaxKind.AddHandlerAccessorBlock, SyntaxKind.RemoveHandlerAccessorBlock, SyntaxKind.RaiseEventAccessorBlock, SyntaxKind.PropertyBlock, SyntaxKind.EventBlock, SyntaxKind.SubStatement, SyntaxKind.FunctionStatement, SyntaxKind.SubNewStatement, SyntaxKind.DeclareSubStatement, SyntaxKind.DeclareFunctionStatement, SyntaxKind.DelegateSubStatement, SyntaxKind.DelegateFunctionStatement, SyntaxKind.EventStatement, SyntaxKind.OperatorStatement, SyntaxKind.PropertyStatement, SyntaxKind.GetAccessorStatement, SyntaxKind.SetAccessorStatement, SyntaxKind.AddHandlerAccessorStatement, SyntaxKind.RemoveHandlerAccessorStatement, SyntaxKind.RaiseEventAccessorStatement, SyntaxKind.IncompleteMember, SyntaxKind.FieldDeclaration, SyntaxKind.AttributesStatement, SyntaxKind.ExpressionStatement, SyntaxKind.PrintStatement, SyntaxKind.WhileBlock, SyntaxKind.UsingBlock, SyntaxKind.SyncLockBlock, SyntaxKind.WithBlock, SyntaxKind.LocalDeclarationStatement, SyntaxKind.LabelStatement, SyntaxKind.GoToStatement, SyntaxKind.StopStatement, SyntaxKind.EndStatement, SyntaxKind.ExitDoStatement, SyntaxKind.ExitForStatement, SyntaxKind.ExitSubStatement, SyntaxKind.ExitFunctionStatement, SyntaxKind.ExitOperatorStatement, SyntaxKind.ExitPropertyStatement, SyntaxKind.ExitTryStatement, SyntaxKind.ExitSelectStatement, SyntaxKind.ExitWhileStatement, SyntaxKind.ContinueWhileStatement, SyntaxKind.ContinueDoStatement, SyntaxKind.ContinueForStatement, SyntaxKind.ReturnStatement, SyntaxKind.SingleLineIfStatement, SyntaxKind.MultiLineIfBlock, SyntaxKind.IfStatement, SyntaxKind.ElseIfStatement, SyntaxKind.ElseStatement, SyntaxKind.TryBlock, SyntaxKind.TryStatement, SyntaxKind.CatchStatement, SyntaxKind.FinallyStatement, SyntaxKind.ErrorStatement, SyntaxKind.OnErrorGoToZeroStatement, SyntaxKind.OnErrorGoToMinusOneStatement, SyntaxKind.OnErrorGoToLabelStatement, SyntaxKind.OnErrorResumeNextStatement, SyntaxKind.ResumeStatement, SyntaxKind.ResumeLabelStatement, SyntaxKind.ResumeNextStatement, SyntaxKind.SelectBlock, SyntaxKind.SelectStatement, SyntaxKind.CaseStatement, SyntaxKind.CaseElseStatement, SyntaxKind.SyncLockStatement, SyntaxKind.SimpleDoLoopBlock, SyntaxKind.DoWhileLoopBlock, SyntaxKind.DoUntilLoopBlock, SyntaxKind.DoLoopWhileBlock, SyntaxKind.DoLoopUntilBlock, SyntaxKind.SimpleDoStatement, SyntaxKind.DoWhileStatement, SyntaxKind.DoUntilStatement, SyntaxKind.SimpleLoopStatement, SyntaxKind.LoopWhileStatement, SyntaxKind.LoopUntilStatement, SyntaxKind.WhileStatement, SyntaxKind.ForBlock, SyntaxKind.ForEachBlock, SyntaxKind.ForStatement, SyntaxKind.ForEachStatement, SyntaxKind.NextStatement, SyntaxKind.UsingStatement, SyntaxKind.ThrowStatement, SyntaxKind.SimpleAssignmentStatement, SyntaxKind.MidAssignmentStatement, SyntaxKind.AddAssignmentStatement, SyntaxKind.SubtractAssignmentStatement, SyntaxKind.MultiplyAssignmentStatement, SyntaxKind.DivideAssignmentStatement, SyntaxKind.IntegerDivideAssignmentStatement, SyntaxKind.ExponentiateAssignmentStatement, SyntaxKind.LeftShiftAssignmentStatement, SyntaxKind.RightShiftAssignmentStatement, SyntaxKind.ConcatenateAssignmentStatement, SyntaxKind.CallStatement, SyntaxKind.AddHandlerStatement, SyntaxKind.RemoveHandlerStatement, SyntaxKind.RaiseEventStatement, SyntaxKind.WithStatement, SyntaxKind.ReDimStatement, SyntaxKind.ReDimPreserveStatement, SyntaxKind.EraseStatement, SyntaxKind.SubLambdaHeader, SyntaxKind.FunctionLambdaHeader, SyntaxKind.YieldStatement Case Else Throw new ArgumentException("body") End Select Return New SingleLineLambdaExpressionSyntax(SyntaxKind.SingleLineSubLambdaExpression, Nothing, Nothing, subOrFunctionHeader, body) End Function ''' <summary> ''' Represents a single line lambda expression. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' SingleLineLambdaExpressionSyntax. One of SingleLineFunctionLambdaExpression, ''' SingleLineSubLambdaExpression. ''' </param> ''' <param name="subOrFunctionHeader"> ''' The header part of the lambda that includes the "Sub" or "Function" keyword, ''' the argument list and return type. ''' </param> ''' <param name="body"> ''' The body of the lambda. Depending on the kind of lambda, this is either a ''' Statement (single-line Sub lambda) or Expression (single-line Function). ''' </param> Public Shared Function SingleLineLambdaExpression(ByVal kind As SyntaxKind, subOrFunctionHeader As LambdaHeaderSyntax, body As VisualBasicSyntaxNode) As SingleLineLambdaExpressionSyntax If Not SyntaxFacts.IsSingleLineLambdaExpression(kind) Then Throw New ArgumentException("kind") End If if subOrFunctionHeader Is Nothing Then Throw New ArgumentNullException(NameOf(subOrFunctionHeader)) End If Select Case subOrFunctionHeader.Kind() Case SyntaxKind.SubLambdaHeader, SyntaxKind.FunctionLambdaHeader Case Else Throw new ArgumentException("subOrFunctionHeader") End Select if body Is Nothing Then Throw New ArgumentNullException(NameOf(body)) End If Select Case body.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression, SyntaxKind.EmptyStatement, SyntaxKind.EndIfStatement, SyntaxKind.EndUsingStatement, SyntaxKind.EndWithStatement, SyntaxKind.EndSelectStatement, SyntaxKind.EndStructureStatement, SyntaxKind.EndEnumStatement, SyntaxKind.EndInterfaceStatement, SyntaxKind.EndClassStatement, SyntaxKind.EndModuleStatement, SyntaxKind.EndNamespaceStatement, SyntaxKind.EndSubStatement, SyntaxKind.EndFunctionStatement, SyntaxKind.EndGetStatement, SyntaxKind.EndSetStatement, SyntaxKind.EndPropertyStatement, SyntaxKind.EndOperatorStatement, SyntaxKind.EndEventStatement, SyntaxKind.EndAddHandlerStatement, SyntaxKind.EndRemoveHandlerStatement, SyntaxKind.EndRaiseEventStatement, SyntaxKind.EndWhileStatement, SyntaxKind.EndTryStatement, SyntaxKind.EndSyncLockStatement, SyntaxKind.OptionStatement, SyntaxKind.ImportsStatement, SyntaxKind.NamespaceBlock, SyntaxKind.NamespaceStatement, SyntaxKind.ModuleBlock, SyntaxKind.StructureBlock, SyntaxKind.InterfaceBlock, SyntaxKind.ClassBlock, SyntaxKind.EnumBlock, SyntaxKind.InheritsStatement, SyntaxKind.ImplementsStatement, SyntaxKind.ModuleStatement, SyntaxKind.StructureStatement, SyntaxKind.InterfaceStatement, SyntaxKind.ClassStatement, SyntaxKind.EnumStatement, SyntaxKind.EnumMemberDeclaration, SyntaxKind.SubBlock, SyntaxKind.FunctionBlock, SyntaxKind.ConstructorBlock, SyntaxKind.OperatorBlock, SyntaxKind.GetAccessorBlock, SyntaxKind.SetAccessorBlock, SyntaxKind.AddHandlerAccessorBlock, SyntaxKind.RemoveHandlerAccessorBlock, SyntaxKind.RaiseEventAccessorBlock, SyntaxKind.PropertyBlock, SyntaxKind.EventBlock, SyntaxKind.SubStatement, SyntaxKind.FunctionStatement, SyntaxKind.SubNewStatement, SyntaxKind.DeclareSubStatement, SyntaxKind.DeclareFunctionStatement, SyntaxKind.DelegateSubStatement, SyntaxKind.DelegateFunctionStatement, SyntaxKind.EventStatement, SyntaxKind.OperatorStatement, SyntaxKind.PropertyStatement, SyntaxKind.GetAccessorStatement, SyntaxKind.SetAccessorStatement, SyntaxKind.AddHandlerAccessorStatement, SyntaxKind.RemoveHandlerAccessorStatement, SyntaxKind.RaiseEventAccessorStatement, SyntaxKind.IncompleteMember, SyntaxKind.FieldDeclaration, SyntaxKind.AttributesStatement, SyntaxKind.ExpressionStatement, SyntaxKind.PrintStatement, SyntaxKind.WhileBlock, SyntaxKind.UsingBlock, SyntaxKind.SyncLockBlock, SyntaxKind.WithBlock, SyntaxKind.LocalDeclarationStatement, SyntaxKind.LabelStatement, SyntaxKind.GoToStatement, SyntaxKind.StopStatement, SyntaxKind.EndStatement, SyntaxKind.ExitDoStatement, SyntaxKind.ExitForStatement, SyntaxKind.ExitSubStatement, SyntaxKind.ExitFunctionStatement, SyntaxKind.ExitOperatorStatement, SyntaxKind.ExitPropertyStatement, SyntaxKind.ExitTryStatement, SyntaxKind.ExitSelectStatement, SyntaxKind.ExitWhileStatement, SyntaxKind.ContinueWhileStatement, SyntaxKind.ContinueDoStatement, SyntaxKind.ContinueForStatement, SyntaxKind.ReturnStatement, SyntaxKind.SingleLineIfStatement, SyntaxKind.MultiLineIfBlock, SyntaxKind.IfStatement, SyntaxKind.ElseIfStatement, SyntaxKind.ElseStatement, SyntaxKind.TryBlock, SyntaxKind.TryStatement, SyntaxKind.CatchStatement, SyntaxKind.FinallyStatement, SyntaxKind.ErrorStatement, SyntaxKind.OnErrorGoToZeroStatement, SyntaxKind.OnErrorGoToMinusOneStatement, SyntaxKind.OnErrorGoToLabelStatement, SyntaxKind.OnErrorResumeNextStatement, SyntaxKind.ResumeStatement, SyntaxKind.ResumeLabelStatement, SyntaxKind.ResumeNextStatement, SyntaxKind.SelectBlock, SyntaxKind.SelectStatement, SyntaxKind.CaseStatement, SyntaxKind.CaseElseStatement, SyntaxKind.SyncLockStatement, SyntaxKind.SimpleDoLoopBlock, SyntaxKind.DoWhileLoopBlock, SyntaxKind.DoUntilLoopBlock, SyntaxKind.DoLoopWhileBlock, SyntaxKind.DoLoopUntilBlock, SyntaxKind.SimpleDoStatement, SyntaxKind.DoWhileStatement, SyntaxKind.DoUntilStatement, SyntaxKind.SimpleLoopStatement, SyntaxKind.LoopWhileStatement, SyntaxKind.LoopUntilStatement, SyntaxKind.WhileStatement, SyntaxKind.ForBlock, SyntaxKind.ForEachBlock, SyntaxKind.ForStatement, SyntaxKind.ForEachStatement, SyntaxKind.NextStatement, SyntaxKind.UsingStatement, SyntaxKind.ThrowStatement, SyntaxKind.SimpleAssignmentStatement, SyntaxKind.MidAssignmentStatement, SyntaxKind.AddAssignmentStatement, SyntaxKind.SubtractAssignmentStatement, SyntaxKind.MultiplyAssignmentStatement, SyntaxKind.DivideAssignmentStatement, SyntaxKind.IntegerDivideAssignmentStatement, SyntaxKind.ExponentiateAssignmentStatement, SyntaxKind.LeftShiftAssignmentStatement, SyntaxKind.RightShiftAssignmentStatement, SyntaxKind.ConcatenateAssignmentStatement, SyntaxKind.CallStatement, SyntaxKind.AddHandlerStatement, SyntaxKind.RemoveHandlerStatement, SyntaxKind.RaiseEventStatement, SyntaxKind.WithStatement, SyntaxKind.ReDimStatement, SyntaxKind.ReDimPreserveStatement, SyntaxKind.EraseStatement, SyntaxKind.SubLambdaHeader, SyntaxKind.FunctionLambdaHeader, SyntaxKind.YieldStatement Case Else Throw new ArgumentException("body") End Select Return New SingleLineLambdaExpressionSyntax(kind, Nothing, Nothing, subOrFunctionHeader, body) End Function ''' <summary> ''' Represents a multi-line lambda expression. ''' </summary> ''' <param name="subOrFunctionHeader"> ''' The header part of the lambda that includes the "Sub" or "Function" keyword, ''' the argument list and return type. ''' </param> ''' <param name="statements"> ''' The body of the lambda. Depending on the kind of lambda, this is either a ''' StatementBody (multi-line lambda), Statement (single-line Sub lambda) or ''' Expression (single-line Function). This might be an empty list. ''' </param> ''' <param name="endSubOrFunctionStatement"> ''' Returns the "End Sub" or "End Function" statement if this is a multi-line ''' lambda. ''' </param> Public Shared Function MultiLineFunctionLambdaExpression(subOrFunctionHeader As LambdaHeaderSyntax, statements As SyntaxList(of StatementSyntax), endSubOrFunctionStatement As EndBlockStatementSyntax) As MultiLineLambdaExpressionSyntax if subOrFunctionHeader Is Nothing Then Throw New ArgumentNullException(NameOf(subOrFunctionHeader)) End If Select Case subOrFunctionHeader.Kind() Case SyntaxKind.SubLambdaHeader, SyntaxKind.FunctionLambdaHeader Case Else Throw new ArgumentException("subOrFunctionHeader") End Select if endSubOrFunctionStatement Is Nothing Then Throw New ArgumentNullException(NameOf(endSubOrFunctionStatement)) End If Select Case endSubOrFunctionStatement.Kind() Case SyntaxKind.EndFunctionStatement, SyntaxKind.EndSubStatement Case Else Throw new ArgumentException("endSubOrFunctionStatement") End Select Return New MultiLineLambdaExpressionSyntax(SyntaxKind.MultiLineFunctionLambdaExpression, Nothing, Nothing, subOrFunctionHeader, statements.Node, endSubOrFunctionStatement) End Function ''' <summary> ''' Represents a multi-line lambda expression. ''' </summary> ''' <param name="subOrFunctionHeader"> ''' The header part of the lambda that includes the "Sub" or "Function" keyword, ''' the argument list and return type. ''' </param> ''' <param name="endSubOrFunctionStatement"> ''' Returns the "End Sub" or "End Function" statement if this is a multi-line ''' lambda. ''' </param> Public Shared Function MultiLineFunctionLambdaExpression(subOrFunctionHeader As LambdaHeaderSyntax, endSubOrFunctionStatement As EndBlockStatementSyntax) As MultiLineLambdaExpressionSyntax Return SyntaxFactory.MultiLineFunctionLambdaExpression(subOrFunctionHeader, Nothing, endSubOrFunctionStatement) End Function ''' <summary> ''' Represents a multi-line lambda expression. ''' </summary> ''' <param name="subOrFunctionHeader"> ''' The header part of the lambda that includes the "Sub" or "Function" keyword, ''' the argument list and return type. ''' </param> ''' <param name="statements"> ''' The body of the lambda. Depending on the kind of lambda, this is either a ''' StatementBody (multi-line lambda), Statement (single-line Sub lambda) or ''' Expression (single-line Function). This might be an empty list. ''' </param> ''' <param name="endSubOrFunctionStatement"> ''' Returns the "End Sub" or "End Function" statement if this is a multi-line ''' lambda. ''' </param> Public Shared Function MultiLineSubLambdaExpression(subOrFunctionHeader As LambdaHeaderSyntax, statements As SyntaxList(of StatementSyntax), endSubOrFunctionStatement As EndBlockStatementSyntax) As MultiLineLambdaExpressionSyntax if subOrFunctionHeader Is Nothing Then Throw New ArgumentNullException(NameOf(subOrFunctionHeader)) End If Select Case subOrFunctionHeader.Kind() Case SyntaxKind.SubLambdaHeader, SyntaxKind.FunctionLambdaHeader Case Else Throw new ArgumentException("subOrFunctionHeader") End Select if endSubOrFunctionStatement Is Nothing Then Throw New ArgumentNullException(NameOf(endSubOrFunctionStatement)) End If Select Case endSubOrFunctionStatement.Kind() Case SyntaxKind.EndFunctionStatement, SyntaxKind.EndSubStatement Case Else Throw new ArgumentException("endSubOrFunctionStatement") End Select Return New MultiLineLambdaExpressionSyntax(SyntaxKind.MultiLineSubLambdaExpression, Nothing, Nothing, subOrFunctionHeader, statements.Node, endSubOrFunctionStatement) End Function ''' <summary> ''' Represents a multi-line lambda expression. ''' </summary> ''' <param name="subOrFunctionHeader"> ''' The header part of the lambda that includes the "Sub" or "Function" keyword, ''' the argument list and return type. ''' </param> ''' <param name="endSubOrFunctionStatement"> ''' Returns the "End Sub" or "End Function" statement if this is a multi-line ''' lambda. ''' </param> Public Shared Function MultiLineSubLambdaExpression(subOrFunctionHeader As LambdaHeaderSyntax, endSubOrFunctionStatement As EndBlockStatementSyntax) As MultiLineLambdaExpressionSyntax Return SyntaxFactory.MultiLineSubLambdaExpression(subOrFunctionHeader, Nothing, endSubOrFunctionStatement) End Function ''' <summary> ''' Represents a multi-line lambda expression. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' MultiLineLambdaExpressionSyntax. One of MultiLineFunctionLambdaExpression, ''' MultiLineSubLambdaExpression. ''' </param> ''' <param name="subOrFunctionHeader"> ''' The header part of the lambda that includes the "Sub" or "Function" keyword, ''' the argument list and return type. ''' </param> ''' <param name="statements"> ''' The body of the lambda. Depending on the kind of lambda, this is either a ''' StatementBody (multi-line lambda), Statement (single-line Sub lambda) or ''' Expression (single-line Function). This might be an empty list. ''' </param> ''' <param name="endSubOrFunctionStatement"> ''' Returns the "End Sub" or "End Function" statement if this is a multi-line ''' lambda. ''' </param> Public Shared Function MultiLineLambdaExpression(ByVal kind As SyntaxKind, subOrFunctionHeader As LambdaHeaderSyntax, statements As SyntaxList(of StatementSyntax), endSubOrFunctionStatement As EndBlockStatementSyntax) As MultiLineLambdaExpressionSyntax If Not SyntaxFacts.IsMultiLineLambdaExpression(kind) Then Throw New ArgumentException("kind") End If if subOrFunctionHeader Is Nothing Then Throw New ArgumentNullException(NameOf(subOrFunctionHeader)) End If Select Case subOrFunctionHeader.Kind() Case SyntaxKind.SubLambdaHeader, SyntaxKind.FunctionLambdaHeader Case Else Throw new ArgumentException("subOrFunctionHeader") End Select if endSubOrFunctionStatement Is Nothing Then Throw New ArgumentNullException(NameOf(endSubOrFunctionStatement)) End If Select Case endSubOrFunctionStatement.Kind() Case SyntaxKind.EndFunctionStatement, SyntaxKind.EndSubStatement Case Else Throw new ArgumentException("endSubOrFunctionStatement") End Select Return New MultiLineLambdaExpressionSyntax(kind, Nothing, Nothing, subOrFunctionHeader, statements.Node, endSubOrFunctionStatement) End Function ''' <summary> ''' Represents a multi-line lambda expression. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' MultiLineLambdaExpressionSyntax. One of MultiLineFunctionLambdaExpression, ''' MultiLineSubLambdaExpression. ''' </param> ''' <param name="subOrFunctionHeader"> ''' The header part of the lambda that includes the "Sub" or "Function" keyword, ''' the argument list and return type. ''' </param> ''' <param name="endSubOrFunctionStatement"> ''' Returns the "End Sub" or "End Function" statement if this is a multi-line ''' lambda. ''' </param> Public Shared Function MultiLineLambdaExpression(ByVal kind As SyntaxKind, subOrFunctionHeader As LambdaHeaderSyntax, endSubOrFunctionStatement As EndBlockStatementSyntax) As MultiLineLambdaExpressionSyntax Return SyntaxFactory.MultiLineLambdaExpression(kind, subOrFunctionHeader, Nothing, endSubOrFunctionStatement) End Function ''' <summary> ''' Represents the header part of a lambda expression ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, Nothing is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. A bitfield version of all ''' the modifiers ORed together, which is in many cases easier to use, can be ''' obtained with the Modifiers property. ''' </param> ''' <param name="subOrFunctionKeyword"> ''' The "Sub" or "Function" keyword that introduces this lambda expression. ''' </param> ''' <param name="parameterList"> ''' The method's parameter list including the parentheses. If no parameter list was ''' present, Nothing is returned. ''' </param> ''' <param name="asClause"> ''' The "As" clause that describes the return type. If no As clause was present, ''' Nothing is returned. ''' </param> Public Shared Function SubLambdaHeader(attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, subOrFunctionKeyword As SyntaxToken, parameterList As ParameterListSyntax, asClause As SimpleAsClauseSyntax) As LambdaHeaderSyntax Select Case subOrFunctionKeyword.Kind() Case SyntaxKind.SubKeyword : Case SyntaxKind.FunctionKeyword Case Else Throw new ArgumentException("subOrFunctionKeyword") End Select Return New LambdaHeaderSyntax(SyntaxKind.SubLambdaHeader, Nothing, Nothing, attributeLists.Node, modifiers.Node, DirectCast(subOrFunctionKeyword.Node, InternalSyntax.KeywordSyntax), parameterList, asClause) End Function ''' <summary> ''' Represents the header part of a lambda expression ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, Nothing is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. A bitfield version of all ''' the modifiers ORed together, which is in many cases easier to use, can be ''' obtained with the Modifiers property. ''' </param> ''' <param name="parameterList"> ''' The method's parameter list including the parentheses. If no parameter list was ''' present, Nothing is returned. ''' </param> ''' <param name="asClause"> ''' The "As" clause that describes the return type. If no As clause was present, ''' Nothing is returned. ''' </param> Public Shared Function SubLambdaHeader(attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, parameterList As ParameterListSyntax, asClause As SimpleAsClauseSyntax) As LambdaHeaderSyntax Return SyntaxFactory.SubLambdaHeader(attributeLists, modifiers, SyntaxFactory.Token(SyntaxKind.SubKeyword), parameterList, asClause) End Function ''' <summary> ''' Represents the header part of a lambda expression ''' </summary> Public Shared Function SubLambdaHeader() As LambdaHeaderSyntax Return SyntaxFactory.SubLambdaHeader(Nothing, Nothing, SyntaxFactory.Token(SyntaxKind.SubKeyword), Nothing, Nothing) End Function ''' <summary> ''' Represents the header part of a lambda expression ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, Nothing is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. A bitfield version of all ''' the modifiers ORed together, which is in many cases easier to use, can be ''' obtained with the Modifiers property. ''' </param> ''' <param name="subOrFunctionKeyword"> ''' The "Sub" or "Function" keyword that introduces this lambda expression. ''' </param> ''' <param name="parameterList"> ''' The method's parameter list including the parentheses. If no parameter list was ''' present, Nothing is returned. ''' </param> ''' <param name="asClause"> ''' The "As" clause that describes the return type. If no As clause was present, ''' Nothing is returned. ''' </param> Public Shared Function FunctionLambdaHeader(attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, subOrFunctionKeyword As SyntaxToken, parameterList As ParameterListSyntax, asClause As SimpleAsClauseSyntax) As LambdaHeaderSyntax Select Case subOrFunctionKeyword.Kind() Case SyntaxKind.FunctionKeyword Case Else Throw new ArgumentException("subOrFunctionKeyword") End Select Return New LambdaHeaderSyntax(SyntaxKind.FunctionLambdaHeader, Nothing, Nothing, attributeLists.Node, modifiers.Node, DirectCast(subOrFunctionKeyword.Node, InternalSyntax.KeywordSyntax), parameterList, asClause) End Function ''' <summary> ''' Represents the header part of a lambda expression ''' </summary> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, Nothing is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. A bitfield version of all ''' the modifiers ORed together, which is in many cases easier to use, can be ''' obtained with the Modifiers property. ''' </param> ''' <param name="parameterList"> ''' The method's parameter list including the parentheses. If no parameter list was ''' present, Nothing is returned. ''' </param> ''' <param name="asClause"> ''' The "As" clause that describes the return type. If no As clause was present, ''' Nothing is returned. ''' </param> Public Shared Function FunctionLambdaHeader(attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, parameterList As ParameterListSyntax, asClause As SimpleAsClauseSyntax) As LambdaHeaderSyntax Return SyntaxFactory.FunctionLambdaHeader(attributeLists, modifiers, SyntaxFactory.Token(SyntaxKind.FunctionKeyword), parameterList, asClause) End Function ''' <summary> ''' Represents the header part of a lambda expression ''' </summary> Public Shared Function FunctionLambdaHeader() As LambdaHeaderSyntax Return SyntaxFactory.FunctionLambdaHeader(Nothing, Nothing, SyntaxFactory.Token(SyntaxKind.FunctionKeyword), Nothing, Nothing) End Function ''' <summary> ''' Represents the header part of a lambda expression ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' LambdaHeaderSyntax. One of SubLambdaHeader, FunctionLambdaHeader. ''' </param> ''' <param name="attributeLists"> ''' A list of all attribute lists on this declaration. If no attributes were ''' specified, Nothing is returned. ''' </param> ''' <param name="modifiers"> ''' A list of all the modifier tokens that were present on this declaration. If no ''' modifiers were specified, an empty list is returned. A bitfield version of all ''' the modifiers ORed together, which is in many cases easier to use, can be ''' obtained with the Modifiers property. ''' </param> ''' <param name="subOrFunctionKeyword"> ''' The "Sub" or "Function" keyword that introduces this lambda expression. ''' </param> ''' <param name="parameterList"> ''' The method's parameter list including the parentheses. If no parameter list was ''' present, Nothing is returned. ''' </param> ''' <param name="asClause"> ''' The "As" clause that describes the return type. If no As clause was present, ''' Nothing is returned. ''' </param> Public Shared Function LambdaHeader(ByVal kind As SyntaxKind, attributeLists As SyntaxList(of AttributeListSyntax), modifiers As SyntaxTokenList, subOrFunctionKeyword As SyntaxToken, parameterList As ParameterListSyntax, asClause As SimpleAsClauseSyntax) As LambdaHeaderSyntax If Not SyntaxFacts.IsLambdaHeader(kind) Then Throw New ArgumentException("kind") End If If (Not subOrFunctionKeyword.IsKind(GetLambdaHeaderSubOrFunctionKeywordKind(kind))) Then Throw new ArgumentException("subOrFunctionKeyword") End If Return New LambdaHeaderSyntax(kind, Nothing, Nothing, attributeLists.Node, modifiers.Node, DirectCast(subOrFunctionKeyword.Node, InternalSyntax.KeywordSyntax), parameterList, asClause) End Function Private Shared Function GetLambdaHeaderSubOrFunctionKeywordKind(kind As SyntaxKind) As SyntaxKind Select Case kind Case SyntaxKind.SubLambdaHeader Return SyntaxKind.SubKeyword Case SyntaxKind.FunctionLambdaHeader Return SyntaxKind.FunctionKeyword Case Else Throw New ArgumentException("SubOrFunctionKeyword") End Select End Function ''' <summary> ''' Represents the header part of a lambda expression ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' LambdaHeaderSyntax. One of SubLambdaHeader, FunctionLambdaHeader. ''' </param> ''' <param name="subOrFunctionKeyword"> ''' The "Sub" or "Function" keyword that introduces this lambda expression. ''' </param> Public Shared Function LambdaHeader(ByVal kind As SyntaxKind, subOrFunctionKeyword As SyntaxToken) As LambdaHeaderSyntax Return SyntaxFactory.LambdaHeader(kind, Nothing, Nothing, subOrFunctionKeyword, Nothing, Nothing) End Function ''' <summary> ''' Represents a parenthesized argument list. ''' </summary> ''' <param name="openParenToken"> ''' The "(" token. ''' </param> ''' <param name="arguments"> ''' The list of arguments. This may be empty. Omitted argument are represented by ''' an OmittedArgumentSyntax node. ''' </param> ''' <param name="closeParenToken"> ''' The ")" token. ''' </param> Public Shared Function ArgumentList(openParenToken As SyntaxToken, arguments As SeparatedSyntaxList(Of ArgumentSyntax), closeParenToken As SyntaxToken) As ArgumentListSyntax Select Case openParenToken.Kind() Case SyntaxKind.OpenParenToken Case Else Throw new ArgumentException("openParenToken") End Select Select Case closeParenToken.Kind() Case SyntaxKind.CloseParenToken Case Else Throw new ArgumentException("closeParenToken") End Select Return New ArgumentListSyntax(SyntaxKind.ArgumentList, Nothing, Nothing, DirectCast(openParenToken.Node, InternalSyntax.PunctuationSyntax), arguments.Node, DirectCast(closeParenToken.Node, InternalSyntax.PunctuationSyntax)) End Function ''' <summary> ''' Represents a parenthesized argument list. ''' </summary> ''' <param name="arguments"> ''' The list of arguments. This may be empty. Omitted argument are represented by ''' an OmittedArgumentSyntax node. ''' </param> Public Shared Function ArgumentList(arguments As SeparatedSyntaxList(Of ArgumentSyntax)) As ArgumentListSyntax Return SyntaxFactory.ArgumentList(SyntaxFactory.Token(SyntaxKind.OpenParenToken), arguments, SyntaxFactory.Token(SyntaxKind.CloseParenToken)) End Function ''' <summary> ''' Represents a parenthesized argument list. ''' </summary> Public Shared Function ArgumentList() As ArgumentListSyntax Return SyntaxFactory.ArgumentList(SyntaxFactory.Token(SyntaxKind.OpenParenToken), Nothing, SyntaxFactory.Token(SyntaxKind.CloseParenToken)) End Function ''' <summary> ''' Represents an omitted argument in an argument list. An omitted argument is not ''' considered a syntax error but a valid case when no argument is required. ''' </summary> ''' <param name="empty"> ''' An empty token because all non terminals must have a token. ''' </param> Public Shared Function OmittedArgument(empty As SyntaxToken) As OmittedArgumentSyntax Select Case empty.Kind() Case SyntaxKind.EmptyToken Case Else Throw new ArgumentException("empty") End Select Return New OmittedArgumentSyntax(SyntaxKind.OmittedArgument, Nothing, Nothing, DirectCast(empty.Node, InternalSyntax.PunctuationSyntax)) End Function ''' <summary> ''' Represents an omitted argument in an argument list. An omitted argument is not ''' considered a syntax error but a valid case when no argument is required. ''' </summary> Public Shared Function OmittedArgument() As OmittedArgumentSyntax Return SyntaxFactory.OmittedArgument(SyntaxFactory.Token(SyntaxKind.EmptyToken)) End Function ''' <summary> ''' Represents an argument that is just an optional argument name and an ''' expression. ''' </summary> ''' <param name="nameColonEquals"> ''' The optional name and ":=" prefix of a named argument. ''' </param> ''' <param name="expression"> ''' The expression that is the argument. ''' </param> Public Shared Function SimpleArgument(nameColonEquals As NameColonEqualsSyntax, expression As ExpressionSyntax) As SimpleArgumentSyntax if expression Is Nothing Then Throw New ArgumentNullException(NameOf(expression)) End If Select Case expression.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("expression") End Select Return New SimpleArgumentSyntax(SyntaxKind.SimpleArgument, Nothing, Nothing, nameColonEquals, expression) End Function ''' <summary> ''' Represents an argument that is just an optional argument name and an ''' expression. ''' </summary> ''' <param name="expression"> ''' The expression that is the argument. ''' </param> Public Shared Function SimpleArgument(expression As ExpressionSyntax) As SimpleArgumentSyntax Return SyntaxFactory.SimpleArgument(Nothing, expression) End Function ''' <summary> ''' Represents an identifier name followed by a ":=" token in a named argument. ''' </summary> ''' <param name="name"> ''' The name used to identify the named argument. ''' </param> ''' <param name="colonEqualsToken"> ''' The ":=" token. ''' </param> Public Shared Function NameColonEquals(name As IdentifierNameSyntax, colonEqualsToken As SyntaxToken) As NameColonEqualsSyntax if name Is Nothing Then Throw New ArgumentNullException(NameOf(name)) End If Select Case name.Kind() Case SyntaxKind.IdentifierName Case Else Throw new ArgumentException("name") End Select Select Case colonEqualsToken.Kind() Case SyntaxKind.ColonEqualsToken Case Else Throw new ArgumentException("colonEqualsToken") End Select Return New NameColonEqualsSyntax(SyntaxKind.NameColonEquals, Nothing, Nothing, name, DirectCast(colonEqualsToken.Node, InternalSyntax.PunctuationSyntax)) End Function ''' <summary> ''' Represents an identifier name followed by a ":=" token in a named argument. ''' </summary> ''' <param name="name"> ''' The name used to identify the named argument. ''' </param> Public Shared Function NameColonEquals(name As IdentifierNameSyntax) As NameColonEqualsSyntax Return SyntaxFactory.NameColonEquals(name, SyntaxFactory.Token(SyntaxKind.ColonEqualsToken)) End Function ''' <summary> ''' Represents a range argument, such as "0 to 5", used in array bounds. The ''' "Value" property represents the upper bound of the range. ''' </summary> ''' <param name="lowerBound"> ''' The lower bound of the range. This is typically the integer constant zero. ''' </param> ''' <param name="toKeyword"> ''' The "To" keyword. ''' </param> ''' <param name="upperBound"> ''' The upper bound of the range. ''' </param> Public Shared Function RangeArgument(lowerBound As ExpressionSyntax, toKeyword As SyntaxToken, upperBound As ExpressionSyntax) As RangeArgumentSyntax if lowerBound Is Nothing Then Throw New ArgumentNullException(NameOf(lowerBound)) End If Select Case lowerBound.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("lowerBound") End Select Select Case toKeyword.Kind() Case SyntaxKind.ToKeyword Case Else Throw new ArgumentException("toKeyword") End Select if upperBound Is Nothing Then Throw New ArgumentNullException(NameOf(upperBound)) End If Select Case upperBound.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("upperBound") End Select Return New RangeArgumentSyntax(SyntaxKind.RangeArgument, Nothing, Nothing, lowerBound, DirectCast(toKeyword.Node, InternalSyntax.KeywordSyntax), upperBound) End Function ''' <summary> ''' Represents a range argument, such as "0 to 5", used in array bounds. The ''' "Value" property represents the upper bound of the range. ''' </summary> ''' <param name="lowerBound"> ''' The lower bound of the range. This is typically the integer constant zero. ''' </param> ''' <param name="upperBound"> ''' The upper bound of the range. ''' </param> Public Shared Function RangeArgument(lowerBound As ExpressionSyntax, upperBound As ExpressionSyntax) As RangeArgumentSyntax Return SyntaxFactory.RangeArgument(lowerBound, SyntaxFactory.Token(SyntaxKind.ToKeyword), upperBound) End Function ''' <summary> ''' This class represents a query expression. A query expression is composed of one ''' or more query operators in a row. The first query operator must be a From or ''' Aggregate. ''' </summary> ''' <param name="clauses"> ''' A list of all the query operators in this query expression. This list always ''' contains at least one operator. ''' </param> Public Shared Function QueryExpression(clauses As SyntaxList(of QueryClauseSyntax)) As QueryExpressionSyntax Return New QueryExpressionSyntax(SyntaxKind.QueryExpression, Nothing, Nothing, clauses.Node) End Function ''' <summary> ''' This class represents a query expression. A query expression is composed of one ''' or more query operators in a row. The first query operator must be a From or ''' Aggregate. ''' </summary> ''' <param name="clauses"> ''' A list of all the query operators in this query expression. This list always ''' contains at least one operator. ''' </param> Public Shared Function QueryExpression(ParamArray clauses As QueryClauseSyntax()) As QueryExpressionSyntax Return SyntaxFactory.QueryExpression(SyntaxFactory.List(clauses)) End Function ''' <summary> ''' Describes a single variable of the form "x [As Type] In expression" for use in ''' query expressions. ''' </summary> ''' <param name="identifier"> ''' The name of the range variable being defined. ''' </param> ''' <param name="asClause"> ''' Describes the type of the variable being defined. ''' </param> ''' <param name="inKeyword"> ''' The "In" keyword. ''' </param> ''' <param name="expression"> ''' The expression that serves as the source of items for the range variable. ''' </param> Public Shared Function CollectionRangeVariable(identifier As ModifiedIdentifierSyntax, asClause As SimpleAsClauseSyntax, inKeyword As SyntaxToken, expression As ExpressionSyntax) As CollectionRangeVariableSyntax if identifier Is Nothing Then Throw New ArgumentNullException(NameOf(identifier)) End If Select Case identifier.Kind() Case SyntaxKind.ModifiedIdentifier Case Else Throw new ArgumentException("identifier") End Select Select Case inKeyword.Kind() Case SyntaxKind.InKeyword Case Else Throw new ArgumentException("inKeyword") End Select if expression Is Nothing Then Throw New ArgumentNullException(NameOf(expression)) End If Select Case expression.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("expression") End Select Return New CollectionRangeVariableSyntax(SyntaxKind.CollectionRangeVariable, Nothing, Nothing, identifier, asClause, DirectCast(inKeyword.Node, InternalSyntax.KeywordSyntax), expression) End Function ''' <summary> ''' Describes a single variable of the form "x [As Type] In expression" for use in ''' query expressions. ''' </summary> ''' <param name="identifier"> ''' The name of the range variable being defined. ''' </param> ''' <param name="asClause"> ''' Describes the type of the variable being defined. ''' </param> ''' <param name="expression"> ''' The expression that serves as the source of items for the range variable. ''' </param> Public Shared Function CollectionRangeVariable(identifier As ModifiedIdentifierSyntax, asClause As SimpleAsClauseSyntax, expression As ExpressionSyntax) As CollectionRangeVariableSyntax Return SyntaxFactory.CollectionRangeVariable(identifier, asClause, SyntaxFactory.Token(SyntaxKind.InKeyword), expression) End Function ''' <summary> ''' Describes a single variable of the form "x [As Type] In expression" for use in ''' query expressions. ''' </summary> ''' <param name="identifier"> ''' The name of the range variable being defined. ''' </param> ''' <param name="expression"> ''' The expression that serves as the source of items for the range variable. ''' </param> Public Shared Function CollectionRangeVariable(identifier As ModifiedIdentifierSyntax, expression As ExpressionSyntax) As CollectionRangeVariableSyntax Return SyntaxFactory.CollectionRangeVariable(identifier, Nothing, SyntaxFactory.Token(SyntaxKind.InKeyword), expression) End Function ''' <summary> ''' Describes a single variable of the form "[x [As Type] =] expression" for use in ''' query expressions. ''' </summary> ''' <param name="nameEquals"> ''' The optional name and type of the expression range variable. If omitted, the ''' name of the expression range variable is inferred from the expression. ''' </param> ''' <param name="expression"> ''' The expression used to initialize the expression variable. ''' </param> Public Shared Function ExpressionRangeVariable(nameEquals As VariableNameEqualsSyntax, expression As ExpressionSyntax) As ExpressionRangeVariableSyntax if expression Is Nothing Then Throw New ArgumentNullException(NameOf(expression)) End If Select Case expression.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("expression") End Select Return New ExpressionRangeVariableSyntax(SyntaxKind.ExpressionRangeVariable, Nothing, Nothing, nameEquals, expression) End Function ''' <summary> ''' Describes a single variable of the form "[x [As Type] =] expression" for use in ''' query expressions. ''' </summary> ''' <param name="expression"> ''' The expression used to initialize the expression variable. ''' </param> Public Shared Function ExpressionRangeVariable(expression As ExpressionSyntax) As ExpressionRangeVariableSyntax Return SyntaxFactory.ExpressionRangeVariable(Nothing, expression) End Function ''' <summary> ''' Describes a single variable of the form "[x [As Type] =] aggregation-function" ''' for use in the Into clause of Aggregate or Group By or Group Join query ''' operators. ''' </summary> ''' <param name="nameEquals"> ''' The optional name and type of the expression range variable. If omitted, the ''' name of the expression range variable is inferred from the aggregation ''' expression. ''' </param> ''' <param name="aggregation"> ''' The name of the aggregation function. The "Group" aggregation function is ''' represented by the identifier "Group". ''' </param> Public Shared Function AggregationRangeVariable(nameEquals As VariableNameEqualsSyntax, aggregation As AggregationSyntax) As AggregationRangeVariableSyntax if aggregation Is Nothing Then Throw New ArgumentNullException(NameOf(aggregation)) End If Select Case aggregation.Kind() Case SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation Case Else Throw new ArgumentException("aggregation") End Select Return New AggregationRangeVariableSyntax(SyntaxKind.AggregationRangeVariable, Nothing, Nothing, nameEquals, aggregation) End Function ''' <summary> ''' Describes a single variable of the form "[x [As Type] =] aggregation-function" ''' for use in the Into clause of Aggregate or Group By or Group Join query ''' operators. ''' </summary> ''' <param name="aggregation"> ''' The name of the aggregation function. The "Group" aggregation function is ''' represented by the identifier "Group". ''' </param> Public Shared Function AggregationRangeVariable(aggregation As AggregationSyntax) As AggregationRangeVariableSyntax Return SyntaxFactory.AggregationRangeVariable(Nothing, aggregation) End Function ''' <summary> ''' Represents the name and optional type of an expression range variable. ''' </summary> ''' <param name="identifier"> ''' The name of the variable being defined. ''' </param> ''' <param name="asClause"> ''' Describes the type of the variable being defined. ''' </param> ''' <param name="equalsToken"> ''' The "=" token. ''' </param> Public Shared Function VariableNameEquals(identifier As ModifiedIdentifierSyntax, asClause As SimpleAsClauseSyntax, equalsToken As SyntaxToken) As VariableNameEqualsSyntax if identifier Is Nothing Then Throw New ArgumentNullException(NameOf(identifier)) End If Select Case identifier.Kind() Case SyntaxKind.ModifiedIdentifier Case Else Throw new ArgumentException("identifier") End Select Select Case equalsToken.Kind() Case SyntaxKind.EqualsToken Case Else Throw new ArgumentException("equalsToken") End Select Return New VariableNameEqualsSyntax(SyntaxKind.VariableNameEquals, Nothing, Nothing, identifier, asClause, DirectCast(equalsToken.Node, InternalSyntax.PunctuationSyntax)) End Function ''' <summary> ''' Represents the name and optional type of an expression range variable. ''' </summary> ''' <param name="identifier"> ''' The name of the variable being defined. ''' </param> ''' <param name="asClause"> ''' Describes the type of the variable being defined. ''' </param> Public Shared Function VariableNameEquals(identifier As ModifiedIdentifierSyntax, asClause As SimpleAsClauseSyntax) As VariableNameEqualsSyntax Return SyntaxFactory.VariableNameEquals(identifier, asClause, SyntaxFactory.Token(SyntaxKind.EqualsToken)) End Function ''' <summary> ''' Represents the name and optional type of an expression range variable. ''' </summary> ''' <param name="identifier"> ''' The name of the variable being defined. ''' </param> Public Shared Function VariableNameEquals(identifier As ModifiedIdentifierSyntax) As VariableNameEqualsSyntax Return SyntaxFactory.VariableNameEquals(identifier, Nothing, SyntaxFactory.Token(SyntaxKind.EqualsToken)) End Function ''' <summary> ''' Represents an invocation of an Aggregation function in the aggregation range ''' variable declaration of a Group By, Group Join or Aggregate query operator. ''' </summary> ''' <param name="functionName"> ''' The name of the aggregation function. ''' </param> ''' <param name="openParenToken"> ''' The "(" token if present. ''' </param> ''' <param name="argument"> ''' The argument to the aggregation function. ''' </param> ''' <param name="closeParenToken"> ''' The ")" token, if present. ''' </param> Public Shared Function FunctionAggregation(functionName As SyntaxToken, openParenToken As SyntaxToken, argument As ExpressionSyntax, closeParenToken As SyntaxToken) As FunctionAggregationSyntax Select Case functionName.Kind() Case SyntaxKind.IdentifierToken Case Else Throw new ArgumentException("functionName") End Select Return New FunctionAggregationSyntax(SyntaxKind.FunctionAggregation, Nothing, Nothing, DirectCast(functionName.Node, InternalSyntax.IdentifierTokenSyntax), DirectCast(openParenToken.Node, InternalSyntax.PunctuationSyntax), argument, DirectCast(closeParenToken.Node, InternalSyntax.PunctuationSyntax)) End Function ''' <summary> ''' Represents an invocation of an Aggregation function in the aggregation range ''' variable declaration of a Group By, Group Join or Aggregate query operator. ''' </summary> ''' <param name="functionName"> ''' The name of the aggregation function. ''' </param> ''' <param name="argument"> ''' The argument to the aggregation function. ''' </param> Public Shared Function FunctionAggregation(functionName As SyntaxToken, argument As ExpressionSyntax) As FunctionAggregationSyntax Return SyntaxFactory.FunctionAggregation(functionName, Nothing, argument, Nothing) End Function ''' <summary> ''' Represents an invocation of an Aggregation function in the aggregation range ''' variable declaration of a Group By, Group Join or Aggregate query operator. ''' </summary> ''' <param name="functionName"> ''' The name of the aggregation function. ''' </param> Public Shared Function FunctionAggregation(functionName As SyntaxToken) As FunctionAggregationSyntax Return SyntaxFactory.FunctionAggregation(functionName, Nothing, Nothing, Nothing) End Function ''' <summary> ''' Represents an invocation of an Aggregation function in the aggregation range ''' variable declaration of a Group By, Group Join or Aggregate query operator. ''' </summary> ''' <param name="functionName"> ''' The name of the aggregation function. ''' </param> Public Shared Function FunctionAggregation(functionName As String) As FunctionAggregationSyntax Return SyntaxFactory.FunctionAggregation(SyntaxFactory.Identifier(functionName), Nothing, Nothing, Nothing) End Function ''' <summary> ''' Represents the use of "Group" as the aggregation function in the in the ''' aggregation range variable declaration of a Group By or Group Join query ''' operator. ''' </summary> ''' <param name="groupKeyword"> ''' The "Group" keyword. ''' </param> Public Shared Function GroupAggregation(groupKeyword As SyntaxToken) As GroupAggregationSyntax Select Case groupKeyword.Kind() Case SyntaxKind.GroupKeyword Case Else Throw new ArgumentException("groupKeyword") End Select Return New GroupAggregationSyntax(SyntaxKind.GroupAggregation, Nothing, Nothing, DirectCast(groupKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' Represents the use of "Group" as the aggregation function in the in the ''' aggregation range variable declaration of a Group By or Group Join query ''' operator. ''' </summary> Public Shared Function GroupAggregation() As GroupAggregationSyntax Return SyntaxFactory.GroupAggregation(SyntaxFactory.Token(SyntaxKind.GroupKeyword)) End Function ''' <summary> ''' Represents a "From" query operator. If this is the beginning of a query, the ''' Source will be Nothing. Otherwise, the Source will be the part of the query to ''' the left of the From. ''' </summary> ''' <param name="fromKeyword"> ''' The "From" keyword. ''' </param> ''' <param name="variables"> ''' The list of collection variables declared by this From operator. ''' </param> Public Shared Function FromClause(fromKeyword As SyntaxToken, variables As SeparatedSyntaxList(Of CollectionRangeVariableSyntax)) As FromClauseSyntax Select Case fromKeyword.Kind() Case SyntaxKind.FromKeyword Case Else Throw new ArgumentException("fromKeyword") End Select Return New FromClauseSyntax(SyntaxKind.FromClause, Nothing, Nothing, DirectCast(fromKeyword.Node, InternalSyntax.KeywordSyntax), variables.Node) End Function ''' <summary> ''' Represents a "From" query operator. If this is the beginning of a query, the ''' Source will be Nothing. Otherwise, the Source will be the part of the query to ''' the left of the From. ''' </summary> ''' <param name="variables"> ''' The list of collection variables declared by this From operator. ''' </param> Public Shared Function FromClause(variables As SeparatedSyntaxList(Of CollectionRangeVariableSyntax)) As FromClauseSyntax Return SyntaxFactory.FromClause(SyntaxFactory.Token(SyntaxKind.FromKeyword), variables) End Function ''' <summary> ''' Represents a "From" query operator. If this is the beginning of a query, the ''' Source will be Nothing. Otherwise, the Source will be the part of the query to ''' the left of the From. ''' </summary> ''' <param name="variables"> ''' The list of collection variables declared by this From operator. ''' </param> Public Shared Function FromClause(ParamArray variables As CollectionRangeVariableSyntax()) As FromClauseSyntax Return SyntaxFactory.FromClause(SyntaxFactory.Token(SyntaxKind.FromKeyword), SyntaxFactory.SeparatedList(Of CollectionRangeVariableSyntax)().AddRange(variables)) End Function ''' <summary> ''' Represents a "Let" query operator. ''' </summary> ''' <param name="letKeyword"> ''' The "Let" keyword. ''' </param> ''' <param name="variables"> ''' The list of expression range variable being defined by the Let operator. ''' </param> Public Shared Function LetClause(letKeyword As SyntaxToken, variables As SeparatedSyntaxList(Of ExpressionRangeVariableSyntax)) As LetClauseSyntax Select Case letKeyword.Kind() Case SyntaxKind.LetKeyword Case Else Throw new ArgumentException("letKeyword") End Select Return New LetClauseSyntax(SyntaxKind.LetClause, Nothing, Nothing, DirectCast(letKeyword.Node, InternalSyntax.KeywordSyntax), variables.Node) End Function ''' <summary> ''' Represents a "Let" query operator. ''' </summary> ''' <param name="variables"> ''' The list of expression range variable being defined by the Let operator. ''' </param> Public Shared Function LetClause(variables As SeparatedSyntaxList(Of ExpressionRangeVariableSyntax)) As LetClauseSyntax Return SyntaxFactory.LetClause(SyntaxFactory.Token(SyntaxKind.LetKeyword), variables) End Function ''' <summary> ''' Represents a "Let" query operator. ''' </summary> ''' <param name="variables"> ''' The list of expression range variable being defined by the Let operator. ''' </param> Public Shared Function LetClause(ParamArray variables As ExpressionRangeVariableSyntax()) As LetClauseSyntax Return SyntaxFactory.LetClause(SyntaxFactory.Token(SyntaxKind.LetKeyword), SyntaxFactory.SeparatedList(Of ExpressionRangeVariableSyntax)().AddRange(variables)) End Function ''' <summary> ''' Represents an Aggregate query operator. ''' </summary> ''' <param name="aggregateKeyword"> ''' The "Aggregate" keyword. ''' </param> ''' <param name="variables"> ''' The list of collection range variables declared by this Aggregate operator. ''' </param> ''' <param name="additionalQueryOperators"> ''' A list of additional query operators. It may be empty. ''' </param> ''' <param name="intoKeyword"> ''' The "Into" keyword. ''' </param> ''' <param name="aggregationVariables"> ''' The list of new variables being defined by the aggregation. ''' </param> Public Shared Function AggregateClause(aggregateKeyword As SyntaxToken, variables As SeparatedSyntaxList(Of CollectionRangeVariableSyntax), additionalQueryOperators As SyntaxList(of QueryClauseSyntax), intoKeyword As SyntaxToken, aggregationVariables As SeparatedSyntaxList(Of AggregationRangeVariableSyntax)) As AggregateClauseSyntax Select Case aggregateKeyword.Kind() Case SyntaxKind.AggregateKeyword Case Else Throw new ArgumentException("aggregateKeyword") End Select Select Case intoKeyword.Kind() Case SyntaxKind.IntoKeyword Case Else Throw new ArgumentException("intoKeyword") End Select Return New AggregateClauseSyntax(SyntaxKind.AggregateClause, Nothing, Nothing, DirectCast(aggregateKeyword.Node, InternalSyntax.KeywordSyntax), variables.Node, additionalQueryOperators.Node, DirectCast(intoKeyword.Node, InternalSyntax.KeywordSyntax), aggregationVariables.Node) End Function ''' <summary> ''' Represents an Aggregate query operator. ''' </summary> ''' <param name="variables"> ''' The list of collection range variables declared by this Aggregate operator. ''' </param> ''' <param name="additionalQueryOperators"> ''' A list of additional query operators. It may be empty. ''' </param> ''' <param name="aggregationVariables"> ''' The list of new variables being defined by the aggregation. ''' </param> Public Shared Function AggregateClause(variables As SeparatedSyntaxList(Of CollectionRangeVariableSyntax), additionalQueryOperators As SyntaxList(of QueryClauseSyntax), aggregationVariables As SeparatedSyntaxList(Of AggregationRangeVariableSyntax)) As AggregateClauseSyntax Return SyntaxFactory.AggregateClause(SyntaxFactory.Token(SyntaxKind.AggregateKeyword), variables, additionalQueryOperators, SyntaxFactory.Token(SyntaxKind.IntoKeyword), aggregationVariables) End Function ''' <summary> ''' Represents an Aggregate query operator. ''' </summary> ''' <param name="variables"> ''' The list of collection range variables declared by this Aggregate operator. ''' </param> ''' <param name="aggregationVariables"> ''' The list of new variables being defined by the aggregation. ''' </param> Public Shared Function AggregateClause(variables As SeparatedSyntaxList(Of CollectionRangeVariableSyntax), aggregationVariables As SeparatedSyntaxList(Of AggregationRangeVariableSyntax)) As AggregateClauseSyntax Return SyntaxFactory.AggregateClause(SyntaxFactory.Token(SyntaxKind.AggregateKeyword), variables, Nothing, SyntaxFactory.Token(SyntaxKind.IntoKeyword), aggregationVariables) End Function ''' <summary> ''' Represents the "Distinct" query operator. ''' </summary> ''' <param name="distinctKeyword"> ''' The "Distinct" keyword. ''' </param> Public Shared Function DistinctClause(distinctKeyword As SyntaxToken) As DistinctClauseSyntax Select Case distinctKeyword.Kind() Case SyntaxKind.DistinctKeyword Case Else Throw new ArgumentException("distinctKeyword") End Select Return New DistinctClauseSyntax(SyntaxKind.DistinctClause, Nothing, Nothing, DirectCast(distinctKeyword.Node, InternalSyntax.KeywordSyntax)) End Function ''' <summary> ''' Represents the "Distinct" query operator. ''' </summary> Public Shared Function DistinctClause() As DistinctClauseSyntax Return SyntaxFactory.DistinctClause(SyntaxFactory.Token(SyntaxKind.DistinctKeyword)) End Function ''' <summary> ''' Represents a "Where" query operator. ''' </summary> ''' <param name="whereKeyword"> ''' The "Where" keyword. ''' </param> ''' <param name="condition"> ''' The boolean expression used for filtering. ''' </param> Public Shared Function WhereClause(whereKeyword As SyntaxToken, condition As ExpressionSyntax) As WhereClauseSyntax Select Case whereKeyword.Kind() Case SyntaxKind.WhereKeyword Case Else Throw new ArgumentException("whereKeyword") End Select if condition Is Nothing Then Throw New ArgumentNullException(NameOf(condition)) End If Select Case condition.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("condition") End Select Return New WhereClauseSyntax(SyntaxKind.WhereClause, Nothing, Nothing, DirectCast(whereKeyword.Node, InternalSyntax.KeywordSyntax), condition) End Function ''' <summary> ''' Represents a "Where" query operator. ''' </summary> ''' <param name="condition"> ''' The boolean expression used for filtering. ''' </param> Public Shared Function WhereClause(condition As ExpressionSyntax) As WhereClauseSyntax Return SyntaxFactory.WhereClause(SyntaxFactory.Token(SyntaxKind.WhereKeyword), condition) End Function ''' <summary> ''' Represents a "Skip While" or "Take While" query operator. The Kind property ''' tells which. ''' </summary> ''' <param name="skipOrTakeKeyword"> ''' The "Skip" or "Take" keyword. ''' </param> ''' <param name="whileKeyword"> ''' The "While" keyword. ''' </param> ''' <param name="condition"> ''' The boolean expression used for partitioning. ''' </param> Public Shared Function SkipWhileClause(skipOrTakeKeyword As SyntaxToken, whileKeyword As SyntaxToken, condition As ExpressionSyntax) As PartitionWhileClauseSyntax Select Case skipOrTakeKeyword.Kind() Case SyntaxKind.SkipKeyword : Case SyntaxKind.TakeKeyword Case Else Throw new ArgumentException("skipOrTakeKeyword") End Select Select Case whileKeyword.Kind() Case SyntaxKind.WhileKeyword Case Else Throw new ArgumentException("whileKeyword") End Select if condition Is Nothing Then Throw New ArgumentNullException(NameOf(condition)) End If Select Case condition.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("condition") End Select Return New PartitionWhileClauseSyntax(SyntaxKind.SkipWhileClause, Nothing, Nothing, DirectCast(skipOrTakeKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(whileKeyword.Node, InternalSyntax.KeywordSyntax), condition) End Function ''' <summary> ''' Represents a "Skip While" or "Take While" query operator. The Kind property ''' tells which. ''' </summary> ''' <param name="condition"> ''' The boolean expression used for partitioning. ''' </param> Public Shared Function SkipWhileClause(condition As ExpressionSyntax) As PartitionWhileClauseSyntax Return SyntaxFactory.SkipWhileClause(SyntaxFactory.Token(SyntaxKind.SkipKeyword), SyntaxFactory.Token(SyntaxKind.WhileKeyword), condition) End Function ''' <summary> ''' Represents a "Skip While" or "Take While" query operator. The Kind property ''' tells which. ''' </summary> ''' <param name="skipOrTakeKeyword"> ''' The "Skip" or "Take" keyword. ''' </param> ''' <param name="whileKeyword"> ''' The "While" keyword. ''' </param> ''' <param name="condition"> ''' The boolean expression used for partitioning. ''' </param> Public Shared Function TakeWhileClause(skipOrTakeKeyword As SyntaxToken, whileKeyword As SyntaxToken, condition As ExpressionSyntax) As PartitionWhileClauseSyntax Select Case skipOrTakeKeyword.Kind() Case SyntaxKind.TakeKeyword Case Else Throw new ArgumentException("skipOrTakeKeyword") End Select Select Case whileKeyword.Kind() Case SyntaxKind.WhileKeyword Case Else Throw new ArgumentException("whileKeyword") End Select if condition Is Nothing Then Throw New ArgumentNullException(NameOf(condition)) End If Select Case condition.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression, SyntaxKind.DirectCastExpression, SyntaxKind.TryCastExpression, SyntaxKind.PredefinedCastExpression, SyntaxKind.AddExpression, SyntaxKind.SubtractExpression, SyntaxKind.MultiplyExpression, SyntaxKind.DivideExpression, SyntaxKind.IntegerDivideExpression, SyntaxKind.ExponentiateExpression, SyntaxKind.LeftShiftExpression, SyntaxKind.RightShiftExpression, SyntaxKind.ConcatenateExpression, SyntaxKind.ModuloExpression, SyntaxKind.EqualsExpression, SyntaxKind.NotEqualsExpression, SyntaxKind.LessThanExpression, SyntaxKind.LessThanOrEqualExpression, SyntaxKind.GreaterThanOrEqualExpression, SyntaxKind.GreaterThanExpression, SyntaxKind.IsExpression, SyntaxKind.IsNotExpression, SyntaxKind.LikeExpression, SyntaxKind.OrExpression, SyntaxKind.ExclusiveOrExpression, SyntaxKind.AndExpression, SyntaxKind.OrElseExpression, SyntaxKind.AndAlsoExpression, SyntaxKind.UnaryPlusExpression, SyntaxKind.UnaryMinusExpression, SyntaxKind.NotExpression, SyntaxKind.AddressOfExpression, SyntaxKind.BinaryConditionalExpression, SyntaxKind.TernaryConditionalExpression, SyntaxKind.SingleLineFunctionLambdaExpression, SyntaxKind.SingleLineSubLambdaExpression, SyntaxKind.MultiLineFunctionLambdaExpression, SyntaxKind.MultiLineSubLambdaExpression, SyntaxKind.QueryExpression, SyntaxKind.FunctionAggregation, SyntaxKind.GroupAggregation, SyntaxKind.XmlDocument, SyntaxKind.XmlElement, SyntaxKind.XmlText, SyntaxKind.XmlElementStartTag, SyntaxKind.XmlElementEndTag, SyntaxKind.XmlEmptyElement, SyntaxKind.XmlAttribute, SyntaxKind.XmlString, SyntaxKind.XmlPrefixName, SyntaxKind.XmlName, SyntaxKind.XmlBracketedName, SyntaxKind.XmlComment, SyntaxKind.XmlProcessingInstruction, SyntaxKind.XmlCDataSection, SyntaxKind.XmlEmbeddedExpression, SyntaxKind.ArrayType, SyntaxKind.NullableType, SyntaxKind.PredefinedType, SyntaxKind.IdentifierName, SyntaxKind.GenericName, SyntaxKind.QualifiedName, SyntaxKind.GlobalName, SyntaxKind.CrefOperatorReference, SyntaxKind.QualifiedCrefOperatorReference, SyntaxKind.AwaitExpression, SyntaxKind.XmlCrefAttribute, SyntaxKind.XmlNameAttribute, SyntaxKind.ConditionalAccessExpression, SyntaxKind.NameOfExpression, SyntaxKind.InterpolatedStringExpression Case Else Throw new ArgumentException("condition") End Select Return New PartitionWhileClauseSyntax(SyntaxKind.TakeWhileClause, Nothing, Nothing, DirectCast(skipOrTakeKeyword.Node, InternalSyntax.KeywordSyntax), DirectCast(whileKeyword.Node, InternalSyntax.KeywordSyntax), condition) End Function ''' <summary> ''' Represents a "Skip While" or "Take While" query operator. The Kind property ''' tells which. ''' </summary> ''' <param name="condition"> ''' The boolean expression used for partitioning. ''' </param> Public Shared Function TakeWhileClause(condition As ExpressionSyntax) As PartitionWhileClauseSyntax Return SyntaxFactory.TakeWhileClause(SyntaxFactory.Token(SyntaxKind.TakeKeyword), SyntaxFactory.Token(SyntaxKind.WhileKeyword), condition) End Function ''' <summary> ''' Represents a "Skip While" or "Take While" query operator. The Kind property ''' tells which. ''' </summary> ''' <param name="kind"> ''' A <see cref="SyntaxKind"/> representing the specific kind of ''' PartitionWhileClauseSyntax. One of SkipWhileClause, TakeWhileClause. ''' </param> ''' <param name="skipOrTakeKeyword"> ''' The "Skip" or "Take" keyword. ''' </param> ''' <param name="whileKeyword"> ''' The "While" keyword. ''' </param> ''' <param name="condition"> ''' The boolean expression used for partitioning. ''' </param> Public Shared Function PartitionWhileClause(ByVal kind As SyntaxKind, skipOrTakeKeyword As SyntaxToken, whileKeyword As SyntaxToken, condition As ExpressionSyntax) As PartitionWhileClauseSyntax If Not SyntaxFacts.IsPartitionWhileClause(kind) Then Throw New ArgumentException("kind") End If If (Not skipOrTakeKeyword.IsKind(GetPartitionWhileClauseSkipOrTakeKeywordKind(kind))) Then Throw new ArgumentException("skipOrTakeKeyword") End If Select Case whileKeyword.Kind() Case SyntaxKind.WhileKeyword Case Else Throw new ArgumentException("whileKeyword") End Select if condition Is Nothing Then Throw New ArgumentNullException(NameOf(condition)) End If Select Case condition.Kind() Case SyntaxKind.KeywordEventContainer, SyntaxKind.WithEventsEventContainer, SyntaxKind.WithEventsPropertyEventContainer, SyntaxKind.IdentifierLabel, SyntaxKind.NumericLabel, SyntaxKind.NextLabel, SyntaxKind.MidExpression, SyntaxKind.CharacterLiteralExpression, SyntaxKind.TrueLiteralExpression, SyntaxKind.FalseLiteralExpression, SyntaxKind.NumericLiteralExpression, SyntaxKind.DateLiteralExpression, SyntaxKind.StringLiteralExpression, SyntaxKind.NothingLiteralExpression, SyntaxKind.ParenthesizedExpression, SyntaxKind.TupleExpression, SyntaxKind.TupleType, SyntaxKind.MeExpression, SyntaxKind.MyBaseExpression, SyntaxKind.MyClassExpression, SyntaxKind.GetTypeExpression, SyntaxKind.TypeOfIsExpression, SyntaxKind.TypeOfIsNotExpression, SyntaxKind.GetXmlNamespaceExpression, SyntaxKind.SimpleMemberAccessExpression, SyntaxKind.DictionaryAccessExpression, SyntaxKind.XmlElementAccessExpression, SyntaxKind.XmlDescendantAccessExpression, SyntaxKind.XmlAttributeAccessExpression, SyntaxKind.InvocationExpression, SyntaxKind.ObjectCreationExpression, SyntaxKind.AnonymousObjectCreationExpression, SyntaxKind.ArrayCreationExpression, SyntaxKind.CollectionInitializer, SyntaxKind.CTypeExpression,