/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Compilers/VisualBasic/Portable/Generated/BoundNodes.xml.Generated.vb
14 597 строк
692 KB
Rikki Gibson
Do not use a constructed method symbol in a BoundMethodDefIndex (#79211)
04 июл 2025, 05:50
Не верифицирован
04 июл 2025, 05:50
be807aa
Код
Авторство
О чём код?
' <auto-generated /> Imports System Imports System.Collections Imports System.Collections.Generic Imports System.Collections.Immutable Imports System.Diagnostics Imports System.Linq Imports System.Runtime.CompilerServices Imports System.Text Imports System.Threading Imports Microsoft.CodeAnalysis.Collections Imports Microsoft.CodeAnalysis.Text Imports Microsoft.CodeAnalysis.VisualBasic.Symbols Imports Microsoft.CodeAnalysis.VisualBasic.Syntax Imports Roslyn.Utilities Namespace Microsoft.CodeAnalysis.VisualBasic Friend Enum BoundKind as Byte TypeArguments OmittedArgument LValueToRValueWrapper WithLValueExpressionPlaceholder WithRValueExpressionPlaceholder RValuePlaceholder LValuePlaceholder Dup BadExpression BadStatement Parenthesized BadVariable ArrayAccess ArrayLength [GetType] FieldInfo MethodInfo TypeExpression TypeOrValueExpression NamespaceExpression MethodDefIndex MaximumMethodDefIndex InstrumentationPayloadRoot ModuleVersionId ModuleVersionIdString SourceDocumentIndex UnaryOperator UserDefinedUnaryOperator NullableIsTrueOperator BinaryOperator UserDefinedBinaryOperator UserDefinedShortCircuitingOperator CompoundAssignmentTargetPlaceholder AssignmentOperator ReferenceAssignment AddressOfOperator TernaryConditionalExpression BinaryConditionalExpression Conversion RelaxationLambda ConvertedTupleElements UserDefinedConversion [DirectCast] [TryCast] [TypeOf] SequencePoint SequencePointExpression SequencePointWithSpan NoOpStatement MethodGroup PropertyGroup ReturnStatement YieldStatement ThrowStatement RedimStatement RedimClause EraseStatement [Call] Attribute LateMemberAccess LateInvocation LateAddressOfOperator TupleLiteral ConvertedTupleLiteral ObjectCreationExpression NoPiaObjectCreationExpression AnonymousTypeCreationExpression AnonymousTypePropertyAccess AnonymousTypeFieldInitializer ObjectInitializerExpression CollectionInitializerExpression NewT DelegateCreationExpression ArrayCreation ArrayLiteral ArrayInitialization FieldAccess PropertyAccess EventAccess Block StateMachineScope LocalDeclaration AsNewLocalDeclarations DimStatement Initializer FieldInitializer PropertyInitializer ParameterEqualsValue GlobalStatementInitializer Sequence ExpressionStatement IfStatement SelectStatement CaseBlock CaseStatement SimpleCaseClause RangeCaseClause RelationalCaseClause DoLoopStatement WhileStatement ForToUserDefinedOperators ForToStatement ForEachStatement ExitStatement ContinueStatement TryStatement CatchBlock Literal MeReference ValueTypeMeReference MyBaseReference MyClassReference PreviousSubmissionReference HostObjectMemberReference Local PseudoVariable Parameter ByRefArgumentPlaceholder ByRefArgumentWithCopyBack LateBoundArgumentSupportingAssignmentWithCapture LabelStatement Label GotoStatement StatementList ConditionalGoto WithStatement UnboundLambda Lambda QueryExpression QuerySource ToQueryableCollectionConversion QueryableSource QueryClause Ordering QueryLambda RangeVariableAssignment GroupTypeInferenceLambda AggregateClause GroupAggregation RangeVariable AddHandlerStatement RemoveHandlerStatement RaiseEventStatement UsingStatement SyncLockStatement XmlName XmlNamespace XmlDocument XmlDeclaration XmlProcessingInstruction XmlComment XmlAttribute XmlElement XmlMemberAccess XmlEmbeddedExpression XmlCData ResumeStatement OnErrorStatement UnstructuredExceptionHandlingStatement UnstructuredExceptionHandlingCatchFilter UnstructuredExceptionOnErrorSwitch UnstructuredExceptionResumeSwitch AwaitOperator SpillSequence StopStatement EndStatement MidResult ConditionalAccess ConditionalAccessReceiverPlaceholder LoweredConditionalAccess ComplexConditionalAccessReceiver NameOfOperator TypeAsValueExpression InterpolatedStringExpression Interpolation End Enum Partial Friend MustInherit Class BoundExpression Inherits BoundNode Protected Sub New(kind As BoundKind, syntax as SyntaxNode, type As TypeSymbol, hasErrors As Boolean) MyBase.New(kind, syntax, hasErrors) Me._Type = type End Sub Protected Sub New(kind As BoundKind, syntax as SyntaxNode, type As TypeSymbol) MyBase.New(kind, syntax) Me._Type = type End Sub Private ReadOnly _Type As TypeSymbol Public ReadOnly Property Type As TypeSymbol Get Return _Type End Get End Property End Class Partial Friend NotInheritable Class BoundTypeArguments Inherits BoundExpression Public Sub New(syntax As SyntaxNode, arguments As ImmutableArray(Of TypeSymbol), hasErrors As Boolean) MyBase.New(BoundKind.TypeArguments, syntax, Nothing, hasErrors) Debug.Assert(Not (arguments.IsDefault), "Field 'arguments' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Arguments = arguments End Sub Public Sub New(syntax As SyntaxNode, arguments As ImmutableArray(Of TypeSymbol)) MyBase.New(BoundKind.TypeArguments, syntax, Nothing) Debug.Assert(Not (arguments.IsDefault), "Field 'arguments' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Arguments = arguments End Sub Private ReadOnly _Arguments As ImmutableArray(Of TypeSymbol) Public ReadOnly Property Arguments As ImmutableArray(Of TypeSymbol) Get Return _Arguments End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitTypeArguments(Me) End Function Public Function Update(arguments As ImmutableArray(Of TypeSymbol)) As BoundTypeArguments If arguments <> Me.Arguments Then Dim result = New BoundTypeArguments(Me.Syntax, arguments, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundOmittedArgument Inherits BoundExpression Public Sub New(syntax As SyntaxNode, type As TypeSymbol, hasErrors As Boolean) MyBase.New(BoundKind.OmittedArgument, syntax, type, hasErrors) End Sub Public Sub New(syntax As SyntaxNode, type As TypeSymbol) MyBase.New(BoundKind.OmittedArgument, syntax, type) End Sub <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitOmittedArgument(Me) End Function Public Function Update(type As TypeSymbol) As BoundOmittedArgument If type IsNot Me.Type Then Dim result = New BoundOmittedArgument(Me.Syntax, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend MustInherit Class BoundValuePlaceholderBase Inherits BoundExpression Protected Sub New(kind As BoundKind, syntax as SyntaxNode, type As TypeSymbol, hasErrors As Boolean) MyBase.New(kind, syntax, type, hasErrors) Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") End Sub Protected Sub New(kind As BoundKind, syntax as SyntaxNode, type As TypeSymbol) MyBase.New(kind, syntax, type) Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") End Sub End Class Partial Friend NotInheritable Class BoundLValueToRValueWrapper Inherits BoundExpression Public Sub New(syntax As SyntaxNode, underlyingLValue As BoundExpression, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.LValueToRValueWrapper, syntax, type, hasErrors OrElse underlyingLValue.NonNullAndHasErrors()) Debug.Assert(underlyingLValue IsNot Nothing, "Field 'underlyingLValue' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._UnderlyingLValue = underlyingLValue Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _UnderlyingLValue As BoundExpression Public ReadOnly Property UnderlyingLValue As BoundExpression Get Return _UnderlyingLValue End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitLValueToRValueWrapper(Me) End Function Public Function Update(underlyingLValue As BoundExpression, type As TypeSymbol) As BoundLValueToRValueWrapper If underlyingLValue IsNot Me.UnderlyingLValue OrElse type IsNot Me.Type Then Dim result = New BoundLValueToRValueWrapper(Me.Syntax, underlyingLValue, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend MustInherit Class BoundLValuePlaceholderBase Inherits BoundValuePlaceholderBase Protected Sub New(kind As BoundKind, syntax as SyntaxNode, type As TypeSymbol, hasErrors As Boolean) MyBase.New(kind, syntax, type, hasErrors) Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") End Sub Protected Sub New(kind As BoundKind, syntax as SyntaxNode, type As TypeSymbol) MyBase.New(kind, syntax, type) Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") End Sub End Class Partial Friend MustInherit Class BoundRValuePlaceholderBase Inherits BoundValuePlaceholderBase Protected Sub New(kind As BoundKind, syntax as SyntaxNode, type As TypeSymbol, hasErrors As Boolean) MyBase.New(kind, syntax, type, hasErrors) Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") End Sub Protected Sub New(kind As BoundKind, syntax as SyntaxNode, type As TypeSymbol) MyBase.New(kind, syntax, type) Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") End Sub End Class Partial Friend NotInheritable Class BoundWithLValueExpressionPlaceholder Inherits BoundLValuePlaceholderBase Public Sub New(syntax As SyntaxNode, type As TypeSymbol, hasErrors As Boolean) MyBase.New(BoundKind.WithLValueExpressionPlaceholder, syntax, type, hasErrors) Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") End Sub Public Sub New(syntax As SyntaxNode, type As TypeSymbol) MyBase.New(BoundKind.WithLValueExpressionPlaceholder, syntax, type) Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") End Sub <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitWithLValueExpressionPlaceholder(Me) End Function Public Function Update(type As TypeSymbol) As BoundWithLValueExpressionPlaceholder If type IsNot Me.Type Then Dim result = New BoundWithLValueExpressionPlaceholder(Me.Syntax, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundWithRValueExpressionPlaceholder Inherits BoundRValuePlaceholderBase Public Sub New(syntax As SyntaxNode, type As TypeSymbol, hasErrors As Boolean) MyBase.New(BoundKind.WithRValueExpressionPlaceholder, syntax, type, hasErrors) Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") End Sub Public Sub New(syntax As SyntaxNode, type As TypeSymbol) MyBase.New(BoundKind.WithRValueExpressionPlaceholder, syntax, type) Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") End Sub <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitWithRValueExpressionPlaceholder(Me) End Function Public Function Update(type As TypeSymbol) As BoundWithRValueExpressionPlaceholder If type IsNot Me.Type Then Dim result = New BoundWithRValueExpressionPlaceholder(Me.Syntax, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundRValuePlaceholder Inherits BoundRValuePlaceholderBase Public Sub New(syntax As SyntaxNode, type As TypeSymbol, hasErrors As Boolean) MyBase.New(BoundKind.RValuePlaceholder, syntax, type, hasErrors) Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Validate() End Sub Private Partial Sub Validate() End Sub Public Sub New(syntax As SyntaxNode, type As TypeSymbol) MyBase.New(BoundKind.RValuePlaceholder, syntax, type) Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Validate() End Sub <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitRValuePlaceholder(Me) End Function Public Function Update(type As TypeSymbol) As BoundRValuePlaceholder If type IsNot Me.Type Then Dim result = New BoundRValuePlaceholder(Me.Syntax, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundLValuePlaceholder Inherits BoundLValuePlaceholderBase Public Sub New(syntax As SyntaxNode, type As TypeSymbol, hasErrors As Boolean) MyBase.New(BoundKind.LValuePlaceholder, syntax, type, hasErrors) Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Validate() End Sub Private Partial Sub Validate() End Sub Public Sub New(syntax As SyntaxNode, type As TypeSymbol) MyBase.New(BoundKind.LValuePlaceholder, syntax, type) Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Validate() End Sub <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitLValuePlaceholder(Me) End Function Public Function Update(type As TypeSymbol) As BoundLValuePlaceholder If type IsNot Me.Type Then Dim result = New BoundLValuePlaceholder(Me.Syntax, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundDup Inherits BoundExpression Public Sub New(syntax As SyntaxNode, isReference As Boolean, type As TypeSymbol, hasErrors As Boolean) MyBase.New(BoundKind.Dup, syntax, type, hasErrors) Me._IsReference = isReference End Sub Public Sub New(syntax As SyntaxNode, isReference As Boolean, type As TypeSymbol) MyBase.New(BoundKind.Dup, syntax, type) Me._IsReference = isReference End Sub Private ReadOnly _IsReference As Boolean Public ReadOnly Property IsReference As Boolean Get Return _IsReference End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitDup(Me) End Function Public Function Update(isReference As Boolean, type As TypeSymbol) As BoundDup If isReference <> Me.IsReference OrElse type IsNot Me.Type Then Dim result = New BoundDup(Me.Syntax, isReference, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundBadExpression Inherits BoundExpression Public Sub New(syntax As SyntaxNode, resultKind As LookupResultKind, symbols As ImmutableArray(Of Symbol), childBoundNodes As ImmutableArray(Of BoundExpression), type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.BadExpression, syntax, type, hasErrors OrElse childBoundNodes.NonNullAndHasErrors()) Debug.Assert(Not (symbols.IsDefault), "Field 'symbols' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(Not (childBoundNodes.IsDefault), "Field 'childBoundNodes' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._ResultKind = resultKind Me._Symbols = symbols Me._ChildBoundNodes = childBoundNodes Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _ResultKind As LookupResultKind Public Overrides ReadOnly Property ResultKind As LookupResultKind Get Return _ResultKind End Get End Property Private ReadOnly _Symbols As ImmutableArray(Of Symbol) Public ReadOnly Property Symbols As ImmutableArray(Of Symbol) Get Return _Symbols End Get End Property Private ReadOnly _ChildBoundNodes As ImmutableArray(Of BoundExpression) Public ReadOnly Property ChildBoundNodes As ImmutableArray(Of BoundExpression) Get Return _ChildBoundNodes End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitBadExpression(Me) End Function Public Function Update(resultKind As LookupResultKind, symbols As ImmutableArray(Of Symbol), childBoundNodes As ImmutableArray(Of BoundExpression), type As TypeSymbol) As BoundBadExpression If resultKind <> Me.ResultKind OrElse symbols <> Me.Symbols OrElse childBoundNodes <> Me.ChildBoundNodes OrElse type IsNot Me.Type Then Dim result = New BoundBadExpression(Me.Syntax, resultKind, symbols, childBoundNodes, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundBadStatement Inherits BoundStatement Public Sub New(syntax As SyntaxNode, childBoundNodes As ImmutableArray(Of BoundNode), Optional hasErrors As Boolean = False) MyBase.New(BoundKind.BadStatement, syntax, hasErrors OrElse childBoundNodes.NonNullAndHasErrors()) Debug.Assert(Not (childBoundNodes.IsDefault), "Field 'childBoundNodes' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._ChildBoundNodes = childBoundNodes End Sub Private ReadOnly _ChildBoundNodes As ImmutableArray(Of BoundNode) Public ReadOnly Property ChildBoundNodes As ImmutableArray(Of BoundNode) Get Return _ChildBoundNodes End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitBadStatement(Me) End Function Public Function Update(childBoundNodes As ImmutableArray(Of BoundNode)) As BoundBadStatement If childBoundNodes <> Me.ChildBoundNodes Then Dim result = New BoundBadStatement(Me.Syntax, childBoundNodes, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundParenthesized Inherits BoundExpression Public Sub New(syntax As SyntaxNode, expression As BoundExpression, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.Parenthesized, syntax, type, hasErrors OrElse expression.NonNullAndHasErrors()) Debug.Assert(expression IsNot Nothing, "Field 'expression' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Expression = expression Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _Expression As BoundExpression Public ReadOnly Property Expression As BoundExpression Get Return _Expression End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitParenthesized(Me) End Function Public Function Update(expression As BoundExpression, type As TypeSymbol) As BoundParenthesized If expression IsNot Me.Expression OrElse type IsNot Me.Type Then Dim result = New BoundParenthesized(Me.Syntax, expression, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundBadVariable Inherits BoundExpression Public Sub New(syntax As SyntaxNode, expression As BoundExpression, isLValue As Boolean, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.BadVariable, syntax, type, hasErrors OrElse expression.NonNullAndHasErrors()) Debug.Assert(expression IsNot Nothing, "Field 'expression' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Expression = expression Me._IsLValue = isLValue End Sub Private ReadOnly _Expression As BoundExpression Public ReadOnly Property Expression As BoundExpression Get Return _Expression End Get End Property Private ReadOnly _IsLValue As Boolean Public Overrides ReadOnly Property IsLValue As Boolean Get Return _IsLValue End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitBadVariable(Me) End Function Public Function Update(expression As BoundExpression, isLValue As Boolean, type As TypeSymbol) As BoundBadVariable If expression IsNot Me.Expression OrElse isLValue <> Me.IsLValue OrElse type IsNot Me.Type Then Dim result = New BoundBadVariable(Me.Syntax, expression, isLValue, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundArrayAccess Inherits BoundExpression Public Sub New(syntax As SyntaxNode, expression As BoundExpression, indices As ImmutableArray(Of BoundExpression), isLValue As Boolean, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.ArrayAccess, syntax, type, hasErrors OrElse expression.NonNullAndHasErrors() OrElse indices.NonNullAndHasErrors()) Debug.Assert(expression IsNot Nothing, "Field 'expression' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(Not (indices.IsDefault), "Field 'indices' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Expression = expression Me._Indices = indices Me._IsLValue = isLValue Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _Expression As BoundExpression Public ReadOnly Property Expression As BoundExpression Get Return _Expression End Get End Property Private ReadOnly _Indices As ImmutableArray(Of BoundExpression) Public ReadOnly Property Indices As ImmutableArray(Of BoundExpression) Get Return _Indices End Get End Property Private ReadOnly _IsLValue As Boolean Public Overrides ReadOnly Property IsLValue As Boolean Get Return _IsLValue End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitArrayAccess(Me) End Function Public Function Update(expression As BoundExpression, indices As ImmutableArray(Of BoundExpression), isLValue As Boolean, type As TypeSymbol) As BoundArrayAccess If expression IsNot Me.Expression OrElse indices <> Me.Indices OrElse isLValue <> Me.IsLValue OrElse type IsNot Me.Type Then Dim result = New BoundArrayAccess(Me.Syntax, expression, indices, isLValue, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundArrayLength Inherits BoundExpression Public Sub New(syntax As SyntaxNode, expression As BoundExpression, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.ArrayLength, syntax, type, hasErrors OrElse expression.NonNullAndHasErrors()) Debug.Assert(expression IsNot Nothing, "Field 'expression' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Expression = expression End Sub Private ReadOnly _Expression As BoundExpression Public ReadOnly Property Expression As BoundExpression Get Return _Expression End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitArrayLength(Me) End Function Public Function Update(expression As BoundExpression, type As TypeSymbol) As BoundArrayLength If expression IsNot Me.Expression OrElse type IsNot Me.Type Then Dim result = New BoundArrayLength(Me.Syntax, expression, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundGetType Inherits BoundExpression Public Sub New(syntax As SyntaxNode, sourceType As BoundTypeExpression, getTypeFromHandle As MethodSymbol, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.GetType, syntax, type, hasErrors OrElse sourceType.NonNullAndHasErrors()) Debug.Assert(sourceType IsNot Nothing, "Field 'sourceType' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._SourceType = sourceType Me._GetTypeFromHandle = getTypeFromHandle End Sub Private ReadOnly _SourceType As BoundTypeExpression Public ReadOnly Property SourceType As BoundTypeExpression Get Return _SourceType End Get End Property Private ReadOnly _GetTypeFromHandle As MethodSymbol Public ReadOnly Property GetTypeFromHandle As MethodSymbol Get Return _GetTypeFromHandle End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitGetType(Me) End Function Public Function Update(sourceType As BoundTypeExpression, getTypeFromHandle As MethodSymbol, type As TypeSymbol) As BoundGetType If sourceType IsNot Me.SourceType OrElse getTypeFromHandle IsNot Me.GetTypeFromHandle OrElse type IsNot Me.Type Then Dim result = New BoundGetType(Me.Syntax, sourceType, getTypeFromHandle, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundFieldInfo Inherits BoundExpression Public Sub New(syntax As SyntaxNode, field As FieldSymbol, type As TypeSymbol, hasErrors As Boolean) MyBase.New(BoundKind.FieldInfo, syntax, type, hasErrors) Debug.Assert(field IsNot Nothing, "Field 'field' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Field = field End Sub Public Sub New(syntax As SyntaxNode, field As FieldSymbol, type As TypeSymbol) MyBase.New(BoundKind.FieldInfo, syntax, type) Debug.Assert(field IsNot Nothing, "Field 'field' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Field = field End Sub Private ReadOnly _Field As FieldSymbol Public ReadOnly Property Field As FieldSymbol Get Return _Field End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitFieldInfo(Me) End Function Public Function Update(field As FieldSymbol, type As TypeSymbol) As BoundFieldInfo If field IsNot Me.Field OrElse type IsNot Me.Type Then Dim result = New BoundFieldInfo(Me.Syntax, field, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundMethodInfo Inherits BoundExpression Public Sub New(syntax As SyntaxNode, method As MethodSymbol, getMethodFromHandle As MethodSymbol, type As TypeSymbol, hasErrors As Boolean) MyBase.New(BoundKind.MethodInfo, syntax, type, hasErrors) Debug.Assert(method IsNot Nothing, "Field 'method' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(getMethodFromHandle IsNot Nothing, "Field 'getMethodFromHandle' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Method = method Me._GetMethodFromHandle = getMethodFromHandle End Sub Public Sub New(syntax As SyntaxNode, method As MethodSymbol, getMethodFromHandle As MethodSymbol, type As TypeSymbol) MyBase.New(BoundKind.MethodInfo, syntax, type) Debug.Assert(method IsNot Nothing, "Field 'method' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(getMethodFromHandle IsNot Nothing, "Field 'getMethodFromHandle' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Method = method Me._GetMethodFromHandle = getMethodFromHandle End Sub Private ReadOnly _Method As MethodSymbol Public ReadOnly Property Method As MethodSymbol Get Return _Method End Get End Property Private ReadOnly _GetMethodFromHandle As MethodSymbol Public ReadOnly Property GetMethodFromHandle As MethodSymbol Get Return _GetMethodFromHandle End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitMethodInfo(Me) End Function Public Function Update(method As MethodSymbol, getMethodFromHandle As MethodSymbol, type As TypeSymbol) As BoundMethodInfo If method IsNot Me.Method OrElse getMethodFromHandle IsNot Me.GetMethodFromHandle OrElse type IsNot Me.Type Then Dim result = New BoundMethodInfo(Me.Syntax, method, getMethodFromHandle, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundTypeExpression Inherits BoundExpression Public Sub New(syntax As SyntaxNode, unevaluatedReceiverOpt As BoundExpression, aliasOpt As AliasSymbol, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.TypeExpression, syntax, type, hasErrors OrElse unevaluatedReceiverOpt.NonNullAndHasErrors()) Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._UnevaluatedReceiverOpt = unevaluatedReceiverOpt Me._AliasOpt = aliasOpt End Sub Private ReadOnly _UnevaluatedReceiverOpt As BoundExpression Public ReadOnly Property UnevaluatedReceiverOpt As BoundExpression Get Return _UnevaluatedReceiverOpt End Get End Property Private ReadOnly _AliasOpt As AliasSymbol Public ReadOnly Property AliasOpt As AliasSymbol Get Return _AliasOpt End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitTypeExpression(Me) End Function Public Function Update(unevaluatedReceiverOpt As BoundExpression, aliasOpt As AliasSymbol, type As TypeSymbol) As BoundTypeExpression If unevaluatedReceiverOpt IsNot Me.UnevaluatedReceiverOpt OrElse aliasOpt IsNot Me.AliasOpt OrElse type IsNot Me.Type Then Dim result = New BoundTypeExpression(Me.Syntax, unevaluatedReceiverOpt, aliasOpt, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundTypeOrValueExpression Inherits BoundExpression Public Sub New(syntax As SyntaxNode, data As BoundTypeOrValueData, type As TypeSymbol, hasErrors As Boolean) MyBase.New(BoundKind.TypeOrValueExpression, syntax, type, hasErrors) Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Data = data End Sub Public Sub New(syntax As SyntaxNode, data As BoundTypeOrValueData, type As TypeSymbol) MyBase.New(BoundKind.TypeOrValueExpression, syntax, type) Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Data = data End Sub Private ReadOnly _Data As BoundTypeOrValueData Public ReadOnly Property Data As BoundTypeOrValueData Get Return _Data End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitTypeOrValueExpression(Me) End Function Public Function Update(data As BoundTypeOrValueData, type As TypeSymbol) As BoundTypeOrValueExpression If data <> Me.Data OrElse type IsNot Me.Type Then Dim result = New BoundTypeOrValueExpression(Me.Syntax, data, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundNamespaceExpression Inherits BoundExpression Public Sub New(syntax As SyntaxNode, unevaluatedReceiverOpt As BoundExpression, aliasOpt As AliasSymbol, namespaceSymbol As NamespaceSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.NamespaceExpression, syntax, Nothing, hasErrors OrElse unevaluatedReceiverOpt.NonNullAndHasErrors()) Debug.Assert(namespaceSymbol IsNot Nothing, "Field 'namespaceSymbol' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._UnevaluatedReceiverOpt = unevaluatedReceiverOpt Me._AliasOpt = aliasOpt Me._NamespaceSymbol = namespaceSymbol Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _UnevaluatedReceiverOpt As BoundExpression Public ReadOnly Property UnevaluatedReceiverOpt As BoundExpression Get Return _UnevaluatedReceiverOpt End Get End Property Private ReadOnly _AliasOpt As AliasSymbol Public ReadOnly Property AliasOpt As AliasSymbol Get Return _AliasOpt End Get End Property Private ReadOnly _NamespaceSymbol As NamespaceSymbol Public ReadOnly Property NamespaceSymbol As NamespaceSymbol Get Return _NamespaceSymbol End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitNamespaceExpression(Me) End Function Public Function Update(unevaluatedReceiverOpt As BoundExpression, aliasOpt As AliasSymbol, namespaceSymbol As NamespaceSymbol) As BoundNamespaceExpression If unevaluatedReceiverOpt IsNot Me.UnevaluatedReceiverOpt OrElse aliasOpt IsNot Me.AliasOpt OrElse namespaceSymbol IsNot Me.NamespaceSymbol Then Dim result = New BoundNamespaceExpression(Me.Syntax, unevaluatedReceiverOpt, aliasOpt, namespaceSymbol, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundMethodDefIndex Inherits BoundExpression Public Sub New(syntax As SyntaxNode, method As MethodSymbol, type As TypeSymbol, hasErrors As Boolean) MyBase.New(BoundKind.MethodDefIndex, syntax, type, hasErrors) Debug.Assert(method IsNot Nothing, "Field 'method' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Method = method Validate() End Sub Private Partial Sub Validate() End Sub Public Sub New(syntax As SyntaxNode, method As MethodSymbol, type As TypeSymbol) MyBase.New(BoundKind.MethodDefIndex, syntax, type) Debug.Assert(method IsNot Nothing, "Field 'method' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Method = method Validate() End Sub Private ReadOnly _Method As MethodSymbol Public ReadOnly Property Method As MethodSymbol Get Return _Method End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitMethodDefIndex(Me) End Function Public Function Update(method As MethodSymbol, type As TypeSymbol) As BoundMethodDefIndex If method IsNot Me.Method OrElse type IsNot Me.Type Then Dim result = New BoundMethodDefIndex(Me.Syntax, method, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundMaximumMethodDefIndex Inherits BoundExpression Public Sub New(syntax As SyntaxNode, type As TypeSymbol, hasErrors As Boolean) MyBase.New(BoundKind.MaximumMethodDefIndex, syntax, type, hasErrors) Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") End Sub Public Sub New(syntax As SyntaxNode, type As TypeSymbol) MyBase.New(BoundKind.MaximumMethodDefIndex, syntax, type) Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") End Sub <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitMaximumMethodDefIndex(Me) End Function Public Function Update(type As TypeSymbol) As BoundMaximumMethodDefIndex If type IsNot Me.Type Then Dim result = New BoundMaximumMethodDefIndex(Me.Syntax, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundInstrumentationPayloadRoot Inherits BoundExpression Public Sub New(syntax As SyntaxNode, analysisKind As Integer, isLValue As Boolean, type As TypeSymbol, hasErrors As Boolean) MyBase.New(BoundKind.InstrumentationPayloadRoot, syntax, type, hasErrors) Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._AnalysisKind = analysisKind Me._IsLValue = isLValue End Sub Public Sub New(syntax As SyntaxNode, analysisKind As Integer, isLValue As Boolean, type As TypeSymbol) MyBase.New(BoundKind.InstrumentationPayloadRoot, syntax, type) Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._AnalysisKind = analysisKind Me._IsLValue = isLValue End Sub Private ReadOnly _AnalysisKind As Integer Public ReadOnly Property AnalysisKind As Integer Get Return _AnalysisKind End Get End Property Private ReadOnly _IsLValue As Boolean Public Overrides ReadOnly Property IsLValue As Boolean Get Return _IsLValue End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitInstrumentationPayloadRoot(Me) End Function Public Function Update(analysisKind As Integer, isLValue As Boolean, type As TypeSymbol) As BoundInstrumentationPayloadRoot If analysisKind <> Me.AnalysisKind OrElse isLValue <> Me.IsLValue OrElse type IsNot Me.Type Then Dim result = New BoundInstrumentationPayloadRoot(Me.Syntax, analysisKind, isLValue, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundModuleVersionId Inherits BoundExpression Public Sub New(syntax As SyntaxNode, isLValue As Boolean, type As TypeSymbol, hasErrors As Boolean) MyBase.New(BoundKind.ModuleVersionId, syntax, type, hasErrors) Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._IsLValue = isLValue End Sub Public Sub New(syntax As SyntaxNode, isLValue As Boolean, type As TypeSymbol) MyBase.New(BoundKind.ModuleVersionId, syntax, type) Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._IsLValue = isLValue End Sub Private ReadOnly _IsLValue As Boolean Public Overrides ReadOnly Property IsLValue As Boolean Get Return _IsLValue End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitModuleVersionId(Me) End Function Public Function Update(isLValue As Boolean, type As TypeSymbol) As BoundModuleVersionId If isLValue <> Me.IsLValue OrElse type IsNot Me.Type Then Dim result = New BoundModuleVersionId(Me.Syntax, isLValue, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundModuleVersionIdString Inherits BoundExpression Public Sub New(syntax As SyntaxNode, type As TypeSymbol, hasErrors As Boolean) MyBase.New(BoundKind.ModuleVersionIdString, syntax, type, hasErrors) Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") End Sub Public Sub New(syntax As SyntaxNode, type As TypeSymbol) MyBase.New(BoundKind.ModuleVersionIdString, syntax, type) Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") End Sub <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitModuleVersionIdString(Me) End Function Public Function Update(type As TypeSymbol) As BoundModuleVersionIdString If type IsNot Me.Type Then Dim result = New BoundModuleVersionIdString(Me.Syntax, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundSourceDocumentIndex Inherits BoundExpression Public Sub New(syntax As SyntaxNode, document As Cci.DebugSourceDocument, type As TypeSymbol, hasErrors As Boolean) MyBase.New(BoundKind.SourceDocumentIndex, syntax, type, hasErrors) Debug.Assert(document IsNot Nothing, "Field 'document' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Document = document End Sub Public Sub New(syntax As SyntaxNode, document As Cci.DebugSourceDocument, type As TypeSymbol) MyBase.New(BoundKind.SourceDocumentIndex, syntax, type) Debug.Assert(document IsNot Nothing, "Field 'document' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Document = document End Sub Private ReadOnly _Document As Cci.DebugSourceDocument Public ReadOnly Property Document As Cci.DebugSourceDocument Get Return _Document End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitSourceDocumentIndex(Me) End Function Public Function Update(document As Cci.DebugSourceDocument, type As TypeSymbol) As BoundSourceDocumentIndex If document IsNot Me.Document OrElse type IsNot Me.Type Then Dim result = New BoundSourceDocumentIndex(Me.Syntax, document, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundUnaryOperator Inherits BoundExpression Public Sub New(syntax As SyntaxNode, operatorKind As UnaryOperatorKind, operand As BoundExpression, checked As Boolean, constantValueOpt As ConstantValue, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.UnaryOperator, syntax, type, hasErrors OrElse operand.NonNullAndHasErrors()) Debug.Assert(operand IsNot Nothing, "Field 'operand' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._OperatorKind = operatorKind Me._Operand = operand Me._Checked = checked Me._ConstantValueOpt = constantValueOpt Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _OperatorKind As UnaryOperatorKind Public ReadOnly Property OperatorKind As UnaryOperatorKind Get Return _OperatorKind End Get End Property Private ReadOnly _Operand As BoundExpression Public ReadOnly Property Operand As BoundExpression Get Return _Operand End Get End Property Private ReadOnly _Checked As Boolean Public ReadOnly Property Checked As Boolean Get Return _Checked End Get End Property Private ReadOnly _ConstantValueOpt As ConstantValue Public Overrides ReadOnly Property ConstantValueOpt As ConstantValue Get Return _ConstantValueOpt End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitUnaryOperator(Me) End Function Public Function Update(operatorKind As UnaryOperatorKind, operand As BoundExpression, checked As Boolean, constantValueOpt As ConstantValue, type As TypeSymbol) As BoundUnaryOperator If operatorKind <> Me.OperatorKind OrElse operand IsNot Me.Operand OrElse checked <> Me.Checked OrElse constantValueOpt IsNot Me.ConstantValueOpt OrElse type IsNot Me.Type Then Dim result = New BoundUnaryOperator(Me.Syntax, operatorKind, operand, checked, constantValueOpt, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundUserDefinedUnaryOperator Inherits BoundExpression Public Sub New(syntax As SyntaxNode, operatorKind As UnaryOperatorKind, underlyingExpression As BoundExpression, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.UserDefinedUnaryOperator, syntax, type, hasErrors OrElse underlyingExpression.NonNullAndHasErrors()) Debug.Assert(underlyingExpression IsNot Nothing, "Field 'underlyingExpression' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._OperatorKind = operatorKind Me._UnderlyingExpression = underlyingExpression Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _OperatorKind As UnaryOperatorKind Public ReadOnly Property OperatorKind As UnaryOperatorKind Get Return _OperatorKind End Get End Property Private ReadOnly _UnderlyingExpression As BoundExpression Public ReadOnly Property UnderlyingExpression As BoundExpression Get Return _UnderlyingExpression End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitUserDefinedUnaryOperator(Me) End Function Public Function Update(operatorKind As UnaryOperatorKind, underlyingExpression As BoundExpression, type As TypeSymbol) As BoundUserDefinedUnaryOperator If operatorKind <> Me.OperatorKind OrElse underlyingExpression IsNot Me.UnderlyingExpression OrElse type IsNot Me.Type Then Dim result = New BoundUserDefinedUnaryOperator(Me.Syntax, operatorKind, underlyingExpression, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundNullableIsTrueOperator Inherits BoundExpression Public Sub New(syntax As SyntaxNode, operand As BoundExpression, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.NullableIsTrueOperator, syntax, type, hasErrors OrElse operand.NonNullAndHasErrors()) Debug.Assert(operand IsNot Nothing, "Field 'operand' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Operand = operand Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _Operand As BoundExpression Public ReadOnly Property Operand As BoundExpression Get Return _Operand End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitNullableIsTrueOperator(Me) End Function Public Function Update(operand As BoundExpression, type As TypeSymbol) As BoundNullableIsTrueOperator If operand IsNot Me.Operand OrElse type IsNot Me.Type Then Dim result = New BoundNullableIsTrueOperator(Me.Syntax, operand, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundBinaryOperator Inherits BoundExpression Public Sub New(syntax As SyntaxNode, operatorKind As BinaryOperatorKind, left As BoundExpression, right As BoundExpression, checked As Boolean, constantValueOpt As ConstantValue, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.BinaryOperator, syntax, type, hasErrors OrElse left.NonNullAndHasErrors() OrElse right.NonNullAndHasErrors()) Debug.Assert(left IsNot Nothing, "Field 'left' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(right IsNot Nothing, "Field 'right' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._OperatorKind = operatorKind Me._Left = left Me._Right = right Me._Checked = checked Me._ConstantValueOpt = constantValueOpt Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _OperatorKind As BinaryOperatorKind Public ReadOnly Property OperatorKind As BinaryOperatorKind Get Return _OperatorKind End Get End Property Private ReadOnly _Left As BoundExpression Public ReadOnly Property Left As BoundExpression Get Return _Left End Get End Property Private ReadOnly _Right As BoundExpression Public ReadOnly Property Right As BoundExpression Get Return _Right End Get End Property Private ReadOnly _Checked As Boolean Public ReadOnly Property Checked As Boolean Get Return _Checked End Get End Property Private ReadOnly _ConstantValueOpt As ConstantValue Public Overrides ReadOnly Property ConstantValueOpt As ConstantValue Get Return _ConstantValueOpt End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitBinaryOperator(Me) End Function Public Function Update(operatorKind As BinaryOperatorKind, left As BoundExpression, right As BoundExpression, checked As Boolean, constantValueOpt As ConstantValue, type As TypeSymbol) As BoundBinaryOperator If operatorKind <> Me.OperatorKind OrElse left IsNot Me.Left OrElse right IsNot Me.Right OrElse checked <> Me.Checked OrElse constantValueOpt IsNot Me.ConstantValueOpt OrElse type IsNot Me.Type Then Dim result = New BoundBinaryOperator(Me.Syntax, operatorKind, left, right, checked, constantValueOpt, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundUserDefinedBinaryOperator Inherits BoundExpression Public Sub New(syntax As SyntaxNode, operatorKind As BinaryOperatorKind, underlyingExpression As BoundExpression, checked As Boolean, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.UserDefinedBinaryOperator, syntax, type, hasErrors OrElse underlyingExpression.NonNullAndHasErrors()) Debug.Assert(underlyingExpression IsNot Nothing, "Field 'underlyingExpression' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._OperatorKind = operatorKind Me._UnderlyingExpression = underlyingExpression Me._Checked = checked Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _OperatorKind As BinaryOperatorKind Public ReadOnly Property OperatorKind As BinaryOperatorKind Get Return _OperatorKind End Get End Property Private ReadOnly _UnderlyingExpression As BoundExpression Public ReadOnly Property UnderlyingExpression As BoundExpression Get Return _UnderlyingExpression End Get End Property Private ReadOnly _Checked As Boolean Public ReadOnly Property Checked As Boolean Get Return _Checked End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitUserDefinedBinaryOperator(Me) End Function Public Function Update(operatorKind As BinaryOperatorKind, underlyingExpression As BoundExpression, checked As Boolean, type As TypeSymbol) As BoundUserDefinedBinaryOperator If operatorKind <> Me.OperatorKind OrElse underlyingExpression IsNot Me.UnderlyingExpression OrElse checked <> Me.Checked OrElse type IsNot Me.Type Then Dim result = New BoundUserDefinedBinaryOperator(Me.Syntax, operatorKind, underlyingExpression, checked, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundUserDefinedShortCircuitingOperator Inherits BoundExpression Public Sub New(syntax As SyntaxNode, leftOperand As BoundExpression, leftOperandPlaceholder As BoundRValuePlaceholder, leftTest As BoundExpression, bitwiseOperator As BoundUserDefinedBinaryOperator, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.UserDefinedShortCircuitingOperator, syntax, type, hasErrors OrElse leftOperand.NonNullAndHasErrors() OrElse leftOperandPlaceholder.NonNullAndHasErrors() OrElse leftTest.NonNullAndHasErrors() OrElse bitwiseOperator.NonNullAndHasErrors()) Debug.Assert(bitwiseOperator IsNot Nothing, "Field 'bitwiseOperator' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._LeftOperand = leftOperand Me._LeftOperandPlaceholder = leftOperandPlaceholder Me._LeftTest = leftTest Me._BitwiseOperator = bitwiseOperator Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _LeftOperand As BoundExpression Public ReadOnly Property LeftOperand As BoundExpression Get Return _LeftOperand End Get End Property Private ReadOnly _LeftOperandPlaceholder As BoundRValuePlaceholder Public ReadOnly Property LeftOperandPlaceholder As BoundRValuePlaceholder Get Return _LeftOperandPlaceholder End Get End Property Private ReadOnly _LeftTest As BoundExpression Public ReadOnly Property LeftTest As BoundExpression Get Return _LeftTest End Get End Property Private ReadOnly _BitwiseOperator As BoundUserDefinedBinaryOperator Public ReadOnly Property BitwiseOperator As BoundUserDefinedBinaryOperator Get Return _BitwiseOperator End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitUserDefinedShortCircuitingOperator(Me) End Function Public Function Update(leftOperand As BoundExpression, leftOperandPlaceholder As BoundRValuePlaceholder, leftTest As BoundExpression, bitwiseOperator As BoundUserDefinedBinaryOperator, type As TypeSymbol) As BoundUserDefinedShortCircuitingOperator If leftOperand IsNot Me.LeftOperand OrElse leftOperandPlaceholder IsNot Me.LeftOperandPlaceholder OrElse leftTest IsNot Me.LeftTest OrElse bitwiseOperator IsNot Me.BitwiseOperator OrElse type IsNot Me.Type Then Dim result = New BoundUserDefinedShortCircuitingOperator(Me.Syntax, leftOperand, leftOperandPlaceholder, leftTest, bitwiseOperator, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundCompoundAssignmentTargetPlaceholder Inherits BoundValuePlaceholderBase Public Sub New(syntax As SyntaxNode, type As TypeSymbol, hasErrors As Boolean) MyBase.New(BoundKind.CompoundAssignmentTargetPlaceholder, syntax, type, hasErrors) Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") End Sub Public Sub New(syntax As SyntaxNode, type As TypeSymbol) MyBase.New(BoundKind.CompoundAssignmentTargetPlaceholder, syntax, type) Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") End Sub <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitCompoundAssignmentTargetPlaceholder(Me) End Function Public Function Update(type As TypeSymbol) As BoundCompoundAssignmentTargetPlaceholder If type IsNot Me.Type Then Dim result = New BoundCompoundAssignmentTargetPlaceholder(Me.Syntax, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundAssignmentOperator Inherits BoundExpression Public Sub New(syntax As SyntaxNode, left As BoundExpression, leftOnTheRightOpt As BoundCompoundAssignmentTargetPlaceholder, right As BoundExpression, suppressObjectClone As Boolean, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.AssignmentOperator, syntax, type, hasErrors OrElse left.NonNullAndHasErrors() OrElse leftOnTheRightOpt.NonNullAndHasErrors() OrElse right.NonNullAndHasErrors()) Debug.Assert(left IsNot Nothing, "Field 'left' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(right IsNot Nothing, "Field 'right' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Left = left Me._LeftOnTheRightOpt = leftOnTheRightOpt Me._Right = right Me._SuppressObjectClone = suppressObjectClone Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _Left As BoundExpression Public ReadOnly Property Left As BoundExpression Get Return _Left End Get End Property Private ReadOnly _LeftOnTheRightOpt As BoundCompoundAssignmentTargetPlaceholder Public ReadOnly Property LeftOnTheRightOpt As BoundCompoundAssignmentTargetPlaceholder Get Return _LeftOnTheRightOpt End Get End Property Private ReadOnly _Right As BoundExpression Public ReadOnly Property Right As BoundExpression Get Return _Right End Get End Property Private ReadOnly _SuppressObjectClone As Boolean Public ReadOnly Property SuppressObjectClone As Boolean Get Return _SuppressObjectClone End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitAssignmentOperator(Me) End Function Public Function Update(left As BoundExpression, leftOnTheRightOpt As BoundCompoundAssignmentTargetPlaceholder, right As BoundExpression, suppressObjectClone As Boolean, type As TypeSymbol) As BoundAssignmentOperator If left IsNot Me.Left OrElse leftOnTheRightOpt IsNot Me.LeftOnTheRightOpt OrElse right IsNot Me.Right OrElse suppressObjectClone <> Me.SuppressObjectClone OrElse type IsNot Me.Type Then Dim result = New BoundAssignmentOperator(Me.Syntax, left, leftOnTheRightOpt, right, suppressObjectClone, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundReferenceAssignment Inherits BoundExpression Public Sub New(syntax As SyntaxNode, byRefLocal As BoundLocal, lValue As BoundExpression, isLValue As Boolean, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.ReferenceAssignment, syntax, type, hasErrors OrElse byRefLocal.NonNullAndHasErrors() OrElse lValue.NonNullAndHasErrors()) Debug.Assert(byRefLocal IsNot Nothing, "Field 'byRefLocal' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._ByRefLocal = byRefLocal Me._LValue = lValue Me._IsLValue = isLValue Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _ByRefLocal As BoundLocal Public ReadOnly Property ByRefLocal As BoundLocal Get Return _ByRefLocal End Get End Property Private ReadOnly _LValue As BoundExpression Public ReadOnly Property LValue As BoundExpression Get Return _LValue End Get End Property Private ReadOnly _IsLValue As Boolean Public Overrides ReadOnly Property IsLValue As Boolean Get Return _IsLValue End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitReferenceAssignment(Me) End Function Public Function Update(byRefLocal As BoundLocal, lValue As BoundExpression, isLValue As Boolean, type As TypeSymbol) As BoundReferenceAssignment If byRefLocal IsNot Me.ByRefLocal OrElse lValue IsNot Me.LValue OrElse isLValue <> Me.IsLValue OrElse type IsNot Me.Type Then Dim result = New BoundReferenceAssignment(Me.Syntax, byRefLocal, lValue, isLValue, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundAddressOfOperator Inherits BoundExpression Public Sub New(syntax As SyntaxNode, binder As Binder, withDependencies As Boolean, methodGroup As BoundMethodGroup, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.AddressOfOperator, syntax, Nothing, hasErrors OrElse methodGroup.NonNullAndHasErrors()) Debug.Assert(binder IsNot Nothing, "Field 'binder' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(methodGroup IsNot Nothing, "Field 'methodGroup' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Binder = binder Me._WithDependencies = withDependencies Me._MethodGroup = methodGroup End Sub Private ReadOnly _Binder As Binder Public ReadOnly Property Binder As Binder Get Return _Binder End Get End Property Private ReadOnly _WithDependencies As Boolean Public ReadOnly Property WithDependencies As Boolean Get Return _WithDependencies End Get End Property Private ReadOnly _MethodGroup As BoundMethodGroup Public ReadOnly Property MethodGroup As BoundMethodGroup Get Return _MethodGroup End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitAddressOfOperator(Me) End Function Public Function Update(binder As Binder, withDependencies As Boolean, methodGroup As BoundMethodGroup) As BoundAddressOfOperator If binder IsNot Me.Binder OrElse withDependencies <> Me.WithDependencies OrElse methodGroup IsNot Me.MethodGroup Then Dim result = New BoundAddressOfOperator(Me.Syntax, binder, withDependencies, methodGroup, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundTernaryConditionalExpression Inherits BoundExpression Public Sub New(syntax As SyntaxNode, condition As BoundExpression, whenTrue As BoundExpression, whenFalse As BoundExpression, constantValueOpt As ConstantValue, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.TernaryConditionalExpression, syntax, type, hasErrors OrElse condition.NonNullAndHasErrors() OrElse whenTrue.NonNullAndHasErrors() OrElse whenFalse.NonNullAndHasErrors()) Debug.Assert(condition IsNot Nothing, "Field 'condition' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(whenTrue IsNot Nothing, "Field 'whenTrue' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(whenFalse IsNot Nothing, "Field 'whenFalse' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Condition = condition Me._WhenTrue = whenTrue Me._WhenFalse = whenFalse Me._ConstantValueOpt = constantValueOpt Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _Condition As BoundExpression Public ReadOnly Property Condition As BoundExpression Get Return _Condition End Get End Property Private ReadOnly _WhenTrue As BoundExpression Public ReadOnly Property WhenTrue As BoundExpression Get Return _WhenTrue End Get End Property Private ReadOnly _WhenFalse As BoundExpression Public ReadOnly Property WhenFalse As BoundExpression Get Return _WhenFalse End Get End Property Private ReadOnly _ConstantValueOpt As ConstantValue Public Overrides ReadOnly Property ConstantValueOpt As ConstantValue Get Return _ConstantValueOpt End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitTernaryConditionalExpression(Me) End Function Public Function Update(condition As BoundExpression, whenTrue As BoundExpression, whenFalse As BoundExpression, constantValueOpt As ConstantValue, type As TypeSymbol) As BoundTernaryConditionalExpression If condition IsNot Me.Condition OrElse whenTrue IsNot Me.WhenTrue OrElse whenFalse IsNot Me.WhenFalse OrElse constantValueOpt IsNot Me.ConstantValueOpt OrElse type IsNot Me.Type Then Dim result = New BoundTernaryConditionalExpression(Me.Syntax, condition, whenTrue, whenFalse, constantValueOpt, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundBinaryConditionalExpression Inherits BoundExpression Public Sub New(syntax As SyntaxNode, testExpression As BoundExpression, convertedTestExpression As BoundExpression, testExpressionPlaceholder As BoundRValuePlaceholder, elseExpression As BoundExpression, constantValueOpt As ConstantValue, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.BinaryConditionalExpression, syntax, type, hasErrors OrElse testExpression.NonNullAndHasErrors() OrElse convertedTestExpression.NonNullAndHasErrors() OrElse testExpressionPlaceholder.NonNullAndHasErrors() OrElse elseExpression.NonNullAndHasErrors()) Debug.Assert(testExpression IsNot Nothing, "Field 'testExpression' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(elseExpression IsNot Nothing, "Field 'elseExpression' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._TestExpression = testExpression Me._ConvertedTestExpression = convertedTestExpression Me._TestExpressionPlaceholder = testExpressionPlaceholder Me._ElseExpression = elseExpression Me._ConstantValueOpt = constantValueOpt Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _TestExpression As BoundExpression Public ReadOnly Property TestExpression As BoundExpression Get Return _TestExpression End Get End Property Private ReadOnly _ConvertedTestExpression As BoundExpression Public ReadOnly Property ConvertedTestExpression As BoundExpression Get Return _ConvertedTestExpression End Get End Property Private ReadOnly _TestExpressionPlaceholder As BoundRValuePlaceholder Public ReadOnly Property TestExpressionPlaceholder As BoundRValuePlaceholder Get Return _TestExpressionPlaceholder End Get End Property Private ReadOnly _ElseExpression As BoundExpression Public ReadOnly Property ElseExpression As BoundExpression Get Return _ElseExpression End Get End Property Private ReadOnly _ConstantValueOpt As ConstantValue Public Overrides ReadOnly Property ConstantValueOpt As ConstantValue Get Return _ConstantValueOpt End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitBinaryConditionalExpression(Me) End Function Public Function Update(testExpression As BoundExpression, convertedTestExpression As BoundExpression, testExpressionPlaceholder As BoundRValuePlaceholder, elseExpression As BoundExpression, constantValueOpt As ConstantValue, type As TypeSymbol) As BoundBinaryConditionalExpression If testExpression IsNot Me.TestExpression OrElse convertedTestExpression IsNot Me.ConvertedTestExpression OrElse testExpressionPlaceholder IsNot Me.TestExpressionPlaceholder OrElse elseExpression IsNot Me.ElseExpression OrElse constantValueOpt IsNot Me.ConstantValueOpt OrElse type IsNot Me.Type Then Dim result = New BoundBinaryConditionalExpression(Me.Syntax, testExpression, convertedTestExpression, testExpressionPlaceholder, elseExpression, constantValueOpt, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend MustInherit Class BoundConversionOrCast Inherits BoundExpression Protected Sub New(kind As BoundKind, syntax as SyntaxNode, type As TypeSymbol, hasErrors As Boolean) MyBase.New(kind, syntax, type, hasErrors) Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") End Sub Protected Sub New(kind As BoundKind, syntax as SyntaxNode, type As TypeSymbol) MyBase.New(kind, syntax, type) Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") End Sub End Class Partial Friend NotInheritable Class BoundConversion Inherits BoundConversionOrCast Public Sub New(syntax As SyntaxNode, operand As BoundExpression, conversionKind As ConversionKind, checked As Boolean, explicitCastInCode As Boolean, constantValueOpt As ConstantValue, extendedInfoOpt As BoundExtendedConversionInfo, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.Conversion, syntax, type, hasErrors OrElse operand.NonNullAndHasErrors() OrElse extendedInfoOpt.NonNullAndHasErrors()) Debug.Assert(operand IsNot Nothing, "Field 'operand' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Operand = operand Me._ConversionKind = conversionKind Me._Checked = checked Me._ExplicitCastInCode = explicitCastInCode Me._ConstantValueOpt = constantValueOpt Me._ExtendedInfoOpt = extendedInfoOpt Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _Operand As BoundExpression Public Overrides ReadOnly Property Operand As BoundExpression Get Return _Operand End Get End Property Private ReadOnly _ConversionKind As ConversionKind Public Overrides ReadOnly Property ConversionKind As ConversionKind Get Return _ConversionKind End Get End Property Private ReadOnly _Checked As Boolean Public ReadOnly Property Checked As Boolean Get Return _Checked End Get End Property Private ReadOnly _ExplicitCastInCode As Boolean Public Overrides ReadOnly Property ExplicitCastInCode As Boolean Get Return _ExplicitCastInCode End Get End Property Private ReadOnly _ConstantValueOpt As ConstantValue Public Overrides ReadOnly Property ConstantValueOpt As ConstantValue Get Return _ConstantValueOpt End Get End Property Private ReadOnly _ExtendedInfoOpt As BoundExtendedConversionInfo Public ReadOnly Property ExtendedInfoOpt As BoundExtendedConversionInfo Get Return _ExtendedInfoOpt End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitConversion(Me) End Function Public Function Update(operand As BoundExpression, conversionKind As ConversionKind, checked As Boolean, explicitCastInCode As Boolean, constantValueOpt As ConstantValue, extendedInfoOpt As BoundExtendedConversionInfo, type As TypeSymbol) As BoundConversion If operand IsNot Me.Operand OrElse conversionKind <> Me.ConversionKind OrElse checked <> Me.Checked OrElse explicitCastInCode <> Me.ExplicitCastInCode OrElse constantValueOpt IsNot Me.ConstantValueOpt OrElse extendedInfoOpt IsNot Me.ExtendedInfoOpt OrElse type IsNot Me.Type Then Dim result = New BoundConversion(Me.Syntax, operand, conversionKind, checked, explicitCastInCode, constantValueOpt, extendedInfoOpt, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend MustInherit Class BoundExtendedConversionInfo Inherits BoundNode Protected Sub New(kind As BoundKind, syntax as SyntaxNode, hasErrors As Boolean) MyBase.New(kind, syntax, hasErrors) End Sub Protected Sub New(kind As BoundKind, syntax as SyntaxNode) MyBase.New(kind, syntax) End Sub End Class Partial Friend NotInheritable Class BoundRelaxationLambda Inherits BoundExtendedConversionInfo Public Sub New(syntax As SyntaxNode, lambda As BoundLambda, receiverPlaceholderOpt As BoundRValuePlaceholder, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.RelaxationLambda, syntax, hasErrors OrElse lambda.NonNullAndHasErrors() OrElse receiverPlaceholderOpt.NonNullAndHasErrors()) Debug.Assert(lambda IsNot Nothing, "Field 'lambda' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Lambda = lambda Me._ReceiverPlaceholderOpt = receiverPlaceholderOpt End Sub Private ReadOnly _Lambda As BoundLambda Public ReadOnly Property Lambda As BoundLambda Get Return _Lambda End Get End Property Private ReadOnly _ReceiverPlaceholderOpt As BoundRValuePlaceholder Public ReadOnly Property ReceiverPlaceholderOpt As BoundRValuePlaceholder Get Return _ReceiverPlaceholderOpt End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitRelaxationLambda(Me) End Function Public Function Update(lambda As BoundLambda, receiverPlaceholderOpt As BoundRValuePlaceholder) As BoundRelaxationLambda If lambda IsNot Me.Lambda OrElse receiverPlaceholderOpt IsNot Me.ReceiverPlaceholderOpt Then Dim result = New BoundRelaxationLambda(Me.Syntax, lambda, receiverPlaceholderOpt, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundConvertedTupleElements Inherits BoundExtendedConversionInfo Public Sub New(syntax As SyntaxNode, elementPlaceholders As ImmutableArray(Of BoundRValuePlaceholder), convertedElements As ImmutableArray(Of BoundExpression), Optional hasErrors As Boolean = False) MyBase.New(BoundKind.ConvertedTupleElements, syntax, hasErrors OrElse elementPlaceholders.NonNullAndHasErrors() OrElse convertedElements.NonNullAndHasErrors()) Debug.Assert(Not (elementPlaceholders.IsDefault), "Field 'elementPlaceholders' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(Not (convertedElements.IsDefault), "Field 'convertedElements' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._ElementPlaceholders = elementPlaceholders Me._ConvertedElements = convertedElements Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _ElementPlaceholders As ImmutableArray(Of BoundRValuePlaceholder) Public ReadOnly Property ElementPlaceholders As ImmutableArray(Of BoundRValuePlaceholder) Get Return _ElementPlaceholders End Get End Property Private ReadOnly _ConvertedElements As ImmutableArray(Of BoundExpression) Public ReadOnly Property ConvertedElements As ImmutableArray(Of BoundExpression) Get Return _ConvertedElements End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitConvertedTupleElements(Me) End Function Public Function Update(elementPlaceholders As ImmutableArray(Of BoundRValuePlaceholder), convertedElements As ImmutableArray(Of BoundExpression)) As BoundConvertedTupleElements If elementPlaceholders <> Me.ElementPlaceholders OrElse convertedElements <> Me.ConvertedElements Then Dim result = New BoundConvertedTupleElements(Me.Syntax, elementPlaceholders, convertedElements, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundUserDefinedConversion Inherits BoundExpression Public Sub New(syntax As SyntaxNode, underlyingExpression As BoundExpression, inOutConversionFlags As Byte, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.UserDefinedConversion, syntax, type, hasErrors OrElse underlyingExpression.NonNullAndHasErrors()) Debug.Assert(underlyingExpression IsNot Nothing, "Field 'underlyingExpression' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._UnderlyingExpression = underlyingExpression Me._InOutConversionFlags = inOutConversionFlags Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _UnderlyingExpression As BoundExpression Public ReadOnly Property UnderlyingExpression As BoundExpression Get Return _UnderlyingExpression End Get End Property Private ReadOnly _InOutConversionFlags As Byte Public ReadOnly Property InOutConversionFlags As Byte Get Return _InOutConversionFlags End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitUserDefinedConversion(Me) End Function Public Function Update(underlyingExpression As BoundExpression, inOutConversionFlags As Byte, type As TypeSymbol) As BoundUserDefinedConversion If underlyingExpression IsNot Me.UnderlyingExpression OrElse inOutConversionFlags <> Me.InOutConversionFlags OrElse type IsNot Me.Type Then Dim result = New BoundUserDefinedConversion(Me.Syntax, underlyingExpression, inOutConversionFlags, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundDirectCast Inherits BoundConversionOrCast Public Sub New(syntax As SyntaxNode, operand As BoundExpression, conversionKind As ConversionKind, suppressVirtualCalls As Boolean, constantValueOpt As ConstantValue, relaxationLambdaOpt As BoundLambda, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.DirectCast, syntax, type, hasErrors OrElse operand.NonNullAndHasErrors() OrElse relaxationLambdaOpt.NonNullAndHasErrors()) Debug.Assert(operand IsNot Nothing, "Field 'operand' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Operand = operand Me._ConversionKind = conversionKind Me._SuppressVirtualCalls = suppressVirtualCalls Me._ConstantValueOpt = constantValueOpt Me._RelaxationLambdaOpt = relaxationLambdaOpt Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _Operand As BoundExpression Public Overrides ReadOnly Property Operand As BoundExpression Get Return _Operand End Get End Property Private ReadOnly _ConversionKind As ConversionKind Public Overrides ReadOnly Property ConversionKind As ConversionKind Get Return _ConversionKind End Get End Property Private ReadOnly _SuppressVirtualCalls As Boolean Public Overrides ReadOnly Property SuppressVirtualCalls As Boolean Get Return _SuppressVirtualCalls End Get End Property Private ReadOnly _ConstantValueOpt As ConstantValue Public Overrides ReadOnly Property ConstantValueOpt As ConstantValue Get Return _ConstantValueOpt End Get End Property Private ReadOnly _RelaxationLambdaOpt As BoundLambda Public ReadOnly Property RelaxationLambdaOpt As BoundLambda Get Return _RelaxationLambdaOpt End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitDirectCast(Me) End Function Public Function Update(operand As BoundExpression, conversionKind As ConversionKind, suppressVirtualCalls As Boolean, constantValueOpt As ConstantValue, relaxationLambdaOpt As BoundLambda, type As TypeSymbol) As BoundDirectCast If operand IsNot Me.Operand OrElse conversionKind <> Me.ConversionKind OrElse suppressVirtualCalls <> Me.SuppressVirtualCalls OrElse constantValueOpt IsNot Me.ConstantValueOpt OrElse relaxationLambdaOpt IsNot Me.RelaxationLambdaOpt OrElse type IsNot Me.Type Then Dim result = New BoundDirectCast(Me.Syntax, operand, conversionKind, suppressVirtualCalls, constantValueOpt, relaxationLambdaOpt, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundTryCast Inherits BoundConversionOrCast Public Sub New(syntax As SyntaxNode, operand As BoundExpression, conversionKind As ConversionKind, constantValueOpt As ConstantValue, relaxationLambdaOpt As BoundLambda, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.TryCast, syntax, type, hasErrors OrElse operand.NonNullAndHasErrors() OrElse relaxationLambdaOpt.NonNullAndHasErrors()) Debug.Assert(operand IsNot Nothing, "Field 'operand' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Operand = operand Me._ConversionKind = conversionKind Me._ConstantValueOpt = constantValueOpt Me._RelaxationLambdaOpt = relaxationLambdaOpt Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _Operand As BoundExpression Public Overrides ReadOnly Property Operand As BoundExpression Get Return _Operand End Get End Property Private ReadOnly _ConversionKind As ConversionKind Public Overrides ReadOnly Property ConversionKind As ConversionKind Get Return _ConversionKind End Get End Property Private ReadOnly _ConstantValueOpt As ConstantValue Public Overrides ReadOnly Property ConstantValueOpt As ConstantValue Get Return _ConstantValueOpt End Get End Property Private ReadOnly _RelaxationLambdaOpt As BoundLambda Public ReadOnly Property RelaxationLambdaOpt As BoundLambda Get Return _RelaxationLambdaOpt End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitTryCast(Me) End Function Public Function Update(operand As BoundExpression, conversionKind As ConversionKind, constantValueOpt As ConstantValue, relaxationLambdaOpt As BoundLambda, type As TypeSymbol) As BoundTryCast If operand IsNot Me.Operand OrElse conversionKind <> Me.ConversionKind OrElse constantValueOpt IsNot Me.ConstantValueOpt OrElse relaxationLambdaOpt IsNot Me.RelaxationLambdaOpt OrElse type IsNot Me.Type Then Dim result = New BoundTryCast(Me.Syntax, operand, conversionKind, constantValueOpt, relaxationLambdaOpt, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundTypeOf Inherits BoundExpression Public Sub New(syntax As SyntaxNode, operand As BoundExpression, isTypeOfIsNotExpression As Boolean, targetType As TypeSymbol, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.TypeOf, syntax, type, hasErrors OrElse operand.NonNullAndHasErrors()) Debug.Assert(operand IsNot Nothing, "Field 'operand' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(targetType IsNot Nothing, "Field 'targetType' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Operand = operand Me._IsTypeOfIsNotExpression = isTypeOfIsNotExpression Me._TargetType = targetType End Sub Private ReadOnly _Operand As BoundExpression Public ReadOnly Property Operand As BoundExpression Get Return _Operand End Get End Property Private ReadOnly _IsTypeOfIsNotExpression As Boolean Public ReadOnly Property IsTypeOfIsNotExpression As Boolean Get Return _IsTypeOfIsNotExpression End Get End Property Private ReadOnly _TargetType As TypeSymbol Public ReadOnly Property TargetType As TypeSymbol Get Return _TargetType End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitTypeOf(Me) End Function Public Function Update(operand As BoundExpression, isTypeOfIsNotExpression As Boolean, targetType As TypeSymbol, type As TypeSymbol) As BoundTypeOf If operand IsNot Me.Operand OrElse isTypeOfIsNotExpression <> Me.IsTypeOfIsNotExpression OrElse targetType IsNot Me.TargetType OrElse type IsNot Me.Type Then Dim result = New BoundTypeOf(Me.Syntax, operand, isTypeOfIsNotExpression, targetType, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend MustInherit Class BoundStatement Inherits BoundNode Protected Sub New(kind As BoundKind, syntax as SyntaxNode, hasErrors As Boolean) MyBase.New(kind, syntax, hasErrors) End Sub Protected Sub New(kind As BoundKind, syntax as SyntaxNode) MyBase.New(kind, syntax) End Sub End Class Partial Friend NotInheritable Class BoundSequencePoint Inherits BoundStatement Public Sub New(syntax As SyntaxNode, statementOpt As BoundStatement, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.SequencePoint, syntax, hasErrors OrElse statementOpt.NonNullAndHasErrors()) Me._StatementOpt = statementOpt End Sub Private ReadOnly _StatementOpt As BoundStatement Public ReadOnly Property StatementOpt As BoundStatement Get Return _StatementOpt End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitSequencePoint(Me) End Function Public Function Update(statementOpt As BoundStatement) As BoundSequencePoint If statementOpt IsNot Me.StatementOpt Then Dim result = New BoundSequencePoint(Me.Syntax, statementOpt, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundSequencePointExpression Inherits BoundExpression Public Sub New(syntax As SyntaxNode, expression As BoundExpression, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.SequencePointExpression, syntax, type, hasErrors OrElse expression.NonNullAndHasErrors()) Debug.Assert(expression IsNot Nothing, "Field 'expression' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Expression = expression End Sub Private ReadOnly _Expression As BoundExpression Public ReadOnly Property Expression As BoundExpression Get Return _Expression End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitSequencePointExpression(Me) End Function Public Function Update(expression As BoundExpression, type As TypeSymbol) As BoundSequencePointExpression If expression IsNot Me.Expression OrElse type IsNot Me.Type Then Dim result = New BoundSequencePointExpression(Me.Syntax, expression, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundSequencePointWithSpan Inherits BoundStatement Public Sub New(syntax As SyntaxNode, statementOpt As BoundStatement, span As TextSpan, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.SequencePointWithSpan, syntax, hasErrors OrElse statementOpt.NonNullAndHasErrors()) Me._StatementOpt = statementOpt Me._Span = span End Sub Private ReadOnly _StatementOpt As BoundStatement Public ReadOnly Property StatementOpt As BoundStatement Get Return _StatementOpt End Get End Property Private ReadOnly _Span As TextSpan Public ReadOnly Property Span As TextSpan Get Return _Span End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitSequencePointWithSpan(Me) End Function Public Function Update(statementOpt As BoundStatement, span As TextSpan) As BoundSequencePointWithSpan If statementOpt IsNot Me.StatementOpt OrElse span <> Me.Span Then Dim result = New BoundSequencePointWithSpan(Me.Syntax, statementOpt, span, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundNoOpStatement Inherits BoundStatement Public Sub New(syntax As SyntaxNode, flavor As NoOpStatementFlavor, hasErrors As Boolean) MyBase.New(BoundKind.NoOpStatement, syntax, hasErrors) Me._Flavor = flavor End Sub Public Sub New(syntax As SyntaxNode, flavor As NoOpStatementFlavor) MyBase.New(BoundKind.NoOpStatement, syntax) Me._Flavor = flavor End Sub Private ReadOnly _Flavor As NoOpStatementFlavor Public ReadOnly Property Flavor As NoOpStatementFlavor Get Return _Flavor End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitNoOpStatement(Me) End Function Public Function Update(flavor As NoOpStatementFlavor) As BoundNoOpStatement If flavor <> Me.Flavor Then Dim result = New BoundNoOpStatement(Me.Syntax, flavor, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend MustInherit Class BoundMethodOrPropertyGroup Inherits BoundExpression Protected Sub New(kind As BoundKind, syntax as SyntaxNode, receiverOpt As BoundExpression, qualificationKind As QualificationKind, Optional hasErrors As Boolean = False) MyBase.New(kind, syntax, Nothing, hasErrors) Me._ReceiverOpt = receiverOpt Me._QualificationKind = qualificationKind End Sub Private ReadOnly _ReceiverOpt As BoundExpression Public ReadOnly Property ReceiverOpt As BoundExpression Get Return _ReceiverOpt End Get End Property Private ReadOnly _QualificationKind As QualificationKind Public ReadOnly Property QualificationKind As QualificationKind Get Return _QualificationKind End Get End Property End Class Partial Friend NotInheritable Class BoundMethodGroup Inherits BoundMethodOrPropertyGroup Public Sub New(syntax As SyntaxNode, typeArgumentsOpt As BoundTypeArguments, methods As ImmutableArray(Of MethodSymbol), pendingExtensionMethodsOpt As ExtensionMethodGroup, resultKind As LookupResultKind, receiverOpt As BoundExpression, qualificationKind As QualificationKind, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.MethodGroup, syntax, receiverOpt, qualificationKind, hasErrors OrElse typeArgumentsOpt.NonNullAndHasErrors() OrElse receiverOpt.NonNullAndHasErrors()) Debug.Assert(Not (methods.IsDefault), "Field 'methods' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._TypeArgumentsOpt = typeArgumentsOpt Me._Methods = methods Me._PendingExtensionMethodsOpt = pendingExtensionMethodsOpt Me._ResultKind = resultKind End Sub Private ReadOnly _TypeArgumentsOpt As BoundTypeArguments Public ReadOnly Property TypeArgumentsOpt As BoundTypeArguments Get Return _TypeArgumentsOpt End Get End Property Private ReadOnly _Methods As ImmutableArray(Of MethodSymbol) Public ReadOnly Property Methods As ImmutableArray(Of MethodSymbol) Get Return _Methods End Get End Property Private ReadOnly _PendingExtensionMethodsOpt As ExtensionMethodGroup Public ReadOnly Property PendingExtensionMethodsOpt As ExtensionMethodGroup Get Return _PendingExtensionMethodsOpt End Get End Property Private ReadOnly _ResultKind As LookupResultKind Public Overrides ReadOnly Property ResultKind As LookupResultKind Get Return _ResultKind End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitMethodGroup(Me) End Function Public Function Update(typeArgumentsOpt As BoundTypeArguments, methods As ImmutableArray(Of MethodSymbol), pendingExtensionMethodsOpt As ExtensionMethodGroup, resultKind As LookupResultKind, receiverOpt As BoundExpression, qualificationKind As QualificationKind) As BoundMethodGroup If typeArgumentsOpt IsNot Me.TypeArgumentsOpt OrElse methods <> Me.Methods OrElse pendingExtensionMethodsOpt IsNot Me.PendingExtensionMethodsOpt OrElse resultKind <> Me.ResultKind OrElse receiverOpt IsNot Me.ReceiverOpt OrElse qualificationKind <> Me.QualificationKind Then Dim result = New BoundMethodGroup(Me.Syntax, typeArgumentsOpt, methods, pendingExtensionMethodsOpt, resultKind, receiverOpt, qualificationKind, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundPropertyGroup Inherits BoundMethodOrPropertyGroup Public Sub New(syntax As SyntaxNode, properties As ImmutableArray(Of PropertySymbol), resultKind As LookupResultKind, receiverOpt As BoundExpression, qualificationKind As QualificationKind, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.PropertyGroup, syntax, receiverOpt, qualificationKind, hasErrors OrElse receiverOpt.NonNullAndHasErrors()) Debug.Assert(Not (properties.IsDefault), "Field 'properties' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Properties = properties Me._ResultKind = resultKind End Sub Private ReadOnly _Properties As ImmutableArray(Of PropertySymbol) Public ReadOnly Property Properties As ImmutableArray(Of PropertySymbol) Get Return _Properties End Get End Property Private ReadOnly _ResultKind As LookupResultKind Public Overrides ReadOnly Property ResultKind As LookupResultKind Get Return _ResultKind End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitPropertyGroup(Me) End Function Public Function Update(properties As ImmutableArray(Of PropertySymbol), resultKind As LookupResultKind, receiverOpt As BoundExpression, qualificationKind As QualificationKind) As BoundPropertyGroup If properties <> Me.Properties OrElse resultKind <> Me.ResultKind OrElse receiverOpt IsNot Me.ReceiverOpt OrElse qualificationKind <> Me.QualificationKind Then Dim result = New BoundPropertyGroup(Me.Syntax, properties, resultKind, receiverOpt, qualificationKind, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundReturnStatement Inherits BoundStatement Public Sub New(syntax As SyntaxNode, expressionOpt As BoundExpression, functionLocalOpt As LocalSymbol, exitLabelOpt As LabelSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.ReturnStatement, syntax, hasErrors OrElse expressionOpt.NonNullAndHasErrors()) Me._ExpressionOpt = expressionOpt Me._FunctionLocalOpt = functionLocalOpt Me._ExitLabelOpt = exitLabelOpt Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _ExpressionOpt As BoundExpression Public ReadOnly Property ExpressionOpt As BoundExpression Get Return _ExpressionOpt End Get End Property Private ReadOnly _FunctionLocalOpt As LocalSymbol Public ReadOnly Property FunctionLocalOpt As LocalSymbol Get Return _FunctionLocalOpt End Get End Property Private ReadOnly _ExitLabelOpt As LabelSymbol Public ReadOnly Property ExitLabelOpt As LabelSymbol Get Return _ExitLabelOpt End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitReturnStatement(Me) End Function Public Function Update(expressionOpt As BoundExpression, functionLocalOpt As LocalSymbol, exitLabelOpt As LabelSymbol) As BoundReturnStatement If expressionOpt IsNot Me.ExpressionOpt OrElse functionLocalOpt IsNot Me.FunctionLocalOpt OrElse exitLabelOpt IsNot Me.ExitLabelOpt Then Dim result = New BoundReturnStatement(Me.Syntax, expressionOpt, functionLocalOpt, exitLabelOpt, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundYieldStatement Inherits BoundStatement Public Sub New(syntax As SyntaxNode, expression As BoundExpression, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.YieldStatement, syntax, hasErrors OrElse expression.NonNullAndHasErrors()) Debug.Assert(expression IsNot Nothing, "Field 'expression' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Expression = expression Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _Expression As BoundExpression Public ReadOnly Property Expression As BoundExpression Get Return _Expression End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitYieldStatement(Me) End Function Public Function Update(expression As BoundExpression) As BoundYieldStatement If expression IsNot Me.Expression Then Dim result = New BoundYieldStatement(Me.Syntax, expression, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundThrowStatement Inherits BoundStatement Public Sub New(syntax As SyntaxNode, expressionOpt As BoundExpression, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.ThrowStatement, syntax, hasErrors OrElse expressionOpt.NonNullAndHasErrors()) Me._ExpressionOpt = expressionOpt End Sub Private ReadOnly _ExpressionOpt As BoundExpression Public ReadOnly Property ExpressionOpt As BoundExpression Get Return _ExpressionOpt End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitThrowStatement(Me) End Function Public Function Update(expressionOpt As BoundExpression) As BoundThrowStatement If expressionOpt IsNot Me.ExpressionOpt Then Dim result = New BoundThrowStatement(Me.Syntax, expressionOpt, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundRedimStatement Inherits BoundStatement Public Sub New(syntax As SyntaxNode, clauses As ImmutableArray(Of BoundRedimClause), Optional hasErrors As Boolean = False) MyBase.New(BoundKind.RedimStatement, syntax, hasErrors OrElse clauses.NonNullAndHasErrors()) Debug.Assert(Not (clauses.IsDefault), "Field 'clauses' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Clauses = clauses End Sub Private ReadOnly _Clauses As ImmutableArray(Of BoundRedimClause) Public ReadOnly Property Clauses As ImmutableArray(Of BoundRedimClause) Get Return _Clauses End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitRedimStatement(Me) End Function Public Function Update(clauses As ImmutableArray(Of BoundRedimClause)) As BoundRedimStatement If clauses <> Me.Clauses Then Dim result = New BoundRedimStatement(Me.Syntax, clauses, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundRedimClause Inherits BoundStatement Public Sub New(syntax As SyntaxNode, operand As BoundExpression, indices As ImmutableArray(Of BoundExpression), arrayTypeOpt As ArrayTypeSymbol, preserve As Boolean, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.RedimClause, syntax, hasErrors OrElse operand.NonNullAndHasErrors() OrElse indices.NonNullAndHasErrors()) Debug.Assert(operand IsNot Nothing, "Field 'operand' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(Not (indices.IsDefault), "Field 'indices' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Operand = operand Me._Indices = indices Me._ArrayTypeOpt = arrayTypeOpt Me._Preserve = preserve Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _Operand As BoundExpression Public ReadOnly Property Operand As BoundExpression Get Return _Operand End Get End Property Private ReadOnly _Indices As ImmutableArray(Of BoundExpression) Public ReadOnly Property Indices As ImmutableArray(Of BoundExpression) Get Return _Indices End Get End Property Private ReadOnly _ArrayTypeOpt As ArrayTypeSymbol Public ReadOnly Property ArrayTypeOpt As ArrayTypeSymbol Get Return _ArrayTypeOpt End Get End Property Private ReadOnly _Preserve As Boolean Public ReadOnly Property Preserve As Boolean Get Return _Preserve End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitRedimClause(Me) End Function Public Function Update(operand As BoundExpression, indices As ImmutableArray(Of BoundExpression), arrayTypeOpt As ArrayTypeSymbol, preserve As Boolean) As BoundRedimClause If operand IsNot Me.Operand OrElse indices <> Me.Indices OrElse arrayTypeOpt IsNot Me.ArrayTypeOpt OrElse preserve <> Me.Preserve Then Dim result = New BoundRedimClause(Me.Syntax, operand, indices, arrayTypeOpt, preserve, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundEraseStatement Inherits BoundStatement Public Sub New(syntax As SyntaxNode, clauses As ImmutableArray(Of BoundAssignmentOperator), Optional hasErrors As Boolean = False) MyBase.New(BoundKind.EraseStatement, syntax, hasErrors OrElse clauses.NonNullAndHasErrors()) Debug.Assert(Not (clauses.IsDefault), "Field 'clauses' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Clauses = clauses End Sub Private ReadOnly _Clauses As ImmutableArray(Of BoundAssignmentOperator) Public ReadOnly Property Clauses As ImmutableArray(Of BoundAssignmentOperator) Get Return _Clauses End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitEraseStatement(Me) End Function Public Function Update(clauses As ImmutableArray(Of BoundAssignmentOperator)) As BoundEraseStatement If clauses <> Me.Clauses Then Dim result = New BoundEraseStatement(Me.Syntax, clauses, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundCall Inherits BoundExpression Public Sub New(syntax As SyntaxNode, method As MethodSymbol, methodGroupOpt As BoundMethodGroup, receiverOpt As BoundExpression, arguments As ImmutableArray(Of BoundExpression), defaultArguments As BitVector, constantValueOpt As ConstantValue, isLValue As Boolean, suppressObjectClone As Boolean, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.Call, syntax, type, hasErrors OrElse methodGroupOpt.NonNullAndHasErrors() OrElse receiverOpt.NonNullAndHasErrors() OrElse arguments.NonNullAndHasErrors()) Debug.Assert(method IsNot Nothing, "Field 'method' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(Not (arguments.IsDefault), "Field 'arguments' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Method = method Me._MethodGroupOpt = methodGroupOpt Me._ReceiverOpt = receiverOpt Me._Arguments = arguments Me._DefaultArguments = defaultArguments Me._ConstantValueOpt = constantValueOpt Me._IsLValue = isLValue Me._SuppressObjectClone = suppressObjectClone Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _Method As MethodSymbol Public ReadOnly Property Method As MethodSymbol Get Return _Method End Get End Property Private ReadOnly _MethodGroupOpt As BoundMethodGroup Public ReadOnly Property MethodGroupOpt As BoundMethodGroup Get Return _MethodGroupOpt End Get End Property Private ReadOnly _ReceiverOpt As BoundExpression Public ReadOnly Property ReceiverOpt As BoundExpression Get Return _ReceiverOpt End Get End Property Private ReadOnly _Arguments As ImmutableArray(Of BoundExpression) Public ReadOnly Property Arguments As ImmutableArray(Of BoundExpression) Get Return _Arguments End Get End Property Private ReadOnly _DefaultArguments As BitVector Public ReadOnly Property DefaultArguments As BitVector Get Return _DefaultArguments End Get End Property Private ReadOnly _ConstantValueOpt As ConstantValue Public Overrides ReadOnly Property ConstantValueOpt As ConstantValue Get Return _ConstantValueOpt End Get End Property Private ReadOnly _IsLValue As Boolean Public Overrides ReadOnly Property IsLValue As Boolean Get Return _IsLValue End Get End Property Private ReadOnly _SuppressObjectClone As Boolean Public ReadOnly Property SuppressObjectClone As Boolean Get Return _SuppressObjectClone End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitCall(Me) End Function Public Function Update(method As MethodSymbol, methodGroupOpt As BoundMethodGroup, receiverOpt As BoundExpression, arguments As ImmutableArray(Of BoundExpression), defaultArguments As BitVector, constantValueOpt As ConstantValue, isLValue As Boolean, suppressObjectClone As Boolean, type As TypeSymbol) As BoundCall If method IsNot Me.Method OrElse methodGroupOpt IsNot Me.MethodGroupOpt OrElse receiverOpt IsNot Me.ReceiverOpt OrElse arguments <> Me.Arguments OrElse defaultArguments <> Me.DefaultArguments OrElse constantValueOpt IsNot Me.ConstantValueOpt OrElse isLValue <> Me.IsLValue OrElse suppressObjectClone <> Me.SuppressObjectClone OrElse type IsNot Me.Type Then Dim result = New BoundCall(Me.Syntax, method, methodGroupOpt, receiverOpt, arguments, defaultArguments, constantValueOpt, isLValue, suppressObjectClone, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundAttribute Inherits BoundExpression Public Sub New(syntax As SyntaxNode, constructor As MethodSymbol, constructorArguments As ImmutableArray(Of BoundExpression), constructorDefaultArguments As BitVector, namedArguments As ImmutableArray(Of BoundExpression), resultKind As LookupResultKind, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.Attribute, syntax, type, hasErrors OrElse constructorArguments.NonNullAndHasErrors() OrElse namedArguments.NonNullAndHasErrors()) Debug.Assert(Not (constructorArguments.IsDefault), "Field 'constructorArguments' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(Not (namedArguments.IsDefault), "Field 'namedArguments' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Constructor = constructor Me._ConstructorArguments = constructorArguments Me._ConstructorDefaultArguments = constructorDefaultArguments Me._NamedArguments = namedArguments Me._ResultKind = resultKind End Sub Private ReadOnly _Constructor As MethodSymbol Public ReadOnly Property Constructor As MethodSymbol Get Return _Constructor End Get End Property Private ReadOnly _ConstructorArguments As ImmutableArray(Of BoundExpression) Public ReadOnly Property ConstructorArguments As ImmutableArray(Of BoundExpression) Get Return _ConstructorArguments End Get End Property Private ReadOnly _ConstructorDefaultArguments As BitVector Public ReadOnly Property ConstructorDefaultArguments As BitVector Get Return _ConstructorDefaultArguments End Get End Property Private ReadOnly _NamedArguments As ImmutableArray(Of BoundExpression) Public ReadOnly Property NamedArguments As ImmutableArray(Of BoundExpression) Get Return _NamedArguments End Get End Property Private ReadOnly _ResultKind As LookupResultKind Public Overrides ReadOnly Property ResultKind As LookupResultKind Get Return _ResultKind End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitAttribute(Me) End Function Public Function Update(constructor As MethodSymbol, constructorArguments As ImmutableArray(Of BoundExpression), constructorDefaultArguments As BitVector, namedArguments As ImmutableArray(Of BoundExpression), resultKind As LookupResultKind, type As TypeSymbol) As BoundAttribute If constructor IsNot Me.Constructor OrElse constructorArguments <> Me.ConstructorArguments OrElse constructorDefaultArguments <> Me.ConstructorDefaultArguments OrElse namedArguments <> Me.NamedArguments OrElse resultKind <> Me.ResultKind OrElse type IsNot Me.Type Then Dim result = New BoundAttribute(Me.Syntax, constructor, constructorArguments, constructorDefaultArguments, namedArguments, resultKind, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundLateMemberAccess Inherits BoundExpression Public Sub New(syntax As SyntaxNode, nameOpt As String, containerTypeOpt As TypeSymbol, receiverOpt As BoundExpression, typeArgumentsOpt As BoundTypeArguments, accessKind As LateBoundAccessKind, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.LateMemberAccess, syntax, type, hasErrors OrElse receiverOpt.NonNullAndHasErrors() OrElse typeArgumentsOpt.NonNullAndHasErrors()) Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._NameOpt = nameOpt Me._ContainerTypeOpt = containerTypeOpt Me._ReceiverOpt = receiverOpt Me._TypeArgumentsOpt = typeArgumentsOpt Me._AccessKind = accessKind Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _NameOpt As String Public ReadOnly Property NameOpt As String Get Return _NameOpt End Get End Property Private ReadOnly _ContainerTypeOpt As TypeSymbol Public ReadOnly Property ContainerTypeOpt As TypeSymbol Get Return _ContainerTypeOpt End Get End Property Private ReadOnly _ReceiverOpt As BoundExpression Public ReadOnly Property ReceiverOpt As BoundExpression Get Return _ReceiverOpt End Get End Property Private ReadOnly _TypeArgumentsOpt As BoundTypeArguments Public ReadOnly Property TypeArgumentsOpt As BoundTypeArguments Get Return _TypeArgumentsOpt End Get End Property Private ReadOnly _AccessKind As LateBoundAccessKind Public ReadOnly Property AccessKind As LateBoundAccessKind Get Return _AccessKind End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitLateMemberAccess(Me) End Function Public Function Update(nameOpt As String, containerTypeOpt As TypeSymbol, receiverOpt As BoundExpression, typeArgumentsOpt As BoundTypeArguments, accessKind As LateBoundAccessKind, type As TypeSymbol) As BoundLateMemberAccess If nameOpt IsNot Me.NameOpt OrElse containerTypeOpt IsNot Me.ContainerTypeOpt OrElse receiverOpt IsNot Me.ReceiverOpt OrElse typeArgumentsOpt IsNot Me.TypeArgumentsOpt OrElse accessKind <> Me.AccessKind OrElse type IsNot Me.Type Then Dim result = New BoundLateMemberAccess(Me.Syntax, nameOpt, containerTypeOpt, receiverOpt, typeArgumentsOpt, accessKind, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundLateInvocation Inherits BoundExpression Public Sub New(syntax As SyntaxNode, member As BoundExpression, argumentsOpt As ImmutableArray(Of BoundExpression), argumentNamesOpt As ImmutableArray(Of string), accessKind As LateBoundAccessKind, methodOrPropertyGroupOpt As BoundMethodOrPropertyGroup, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.LateInvocation, syntax, type, hasErrors OrElse member.NonNullAndHasErrors() OrElse argumentsOpt.NonNullAndHasErrors() OrElse methodOrPropertyGroupOpt.NonNullAndHasErrors()) Debug.Assert(member IsNot Nothing, "Field 'member' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Member = member Me._ArgumentsOpt = argumentsOpt Me._ArgumentNamesOpt = argumentNamesOpt Me._AccessKind = accessKind Me._MethodOrPropertyGroupOpt = methodOrPropertyGroupOpt Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _Member As BoundExpression Public ReadOnly Property Member As BoundExpression Get Return _Member End Get End Property Private ReadOnly _ArgumentsOpt As ImmutableArray(Of BoundExpression) Public ReadOnly Property ArgumentsOpt As ImmutableArray(Of BoundExpression) Get Return _ArgumentsOpt End Get End Property Private ReadOnly _ArgumentNamesOpt As ImmutableArray(Of string) Public ReadOnly Property ArgumentNamesOpt As ImmutableArray(Of string) Get Return _ArgumentNamesOpt End Get End Property Private ReadOnly _AccessKind As LateBoundAccessKind Public ReadOnly Property AccessKind As LateBoundAccessKind Get Return _AccessKind End Get End Property Private ReadOnly _MethodOrPropertyGroupOpt As BoundMethodOrPropertyGroup Public ReadOnly Property MethodOrPropertyGroupOpt As BoundMethodOrPropertyGroup Get Return _MethodOrPropertyGroupOpt End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitLateInvocation(Me) End Function Public Function Update(member As BoundExpression, argumentsOpt As ImmutableArray(Of BoundExpression), argumentNamesOpt As ImmutableArray(Of string), accessKind As LateBoundAccessKind, methodOrPropertyGroupOpt As BoundMethodOrPropertyGroup, type As TypeSymbol) As BoundLateInvocation If member IsNot Me.Member OrElse argumentsOpt <> Me.ArgumentsOpt OrElse argumentNamesOpt <> Me.ArgumentNamesOpt OrElse accessKind <> Me.AccessKind OrElse methodOrPropertyGroupOpt IsNot Me.MethodOrPropertyGroupOpt OrElse type IsNot Me.Type Then Dim result = New BoundLateInvocation(Me.Syntax, member, argumentsOpt, argumentNamesOpt, accessKind, methodOrPropertyGroupOpt, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundLateAddressOfOperator Inherits BoundExpression Public Sub New(syntax As SyntaxNode, binder As Binder, memberAccess As BoundLateMemberAccess, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.LateAddressOfOperator, syntax, type, hasErrors OrElse memberAccess.NonNullAndHasErrors()) Debug.Assert(binder IsNot Nothing, "Field 'binder' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(memberAccess IsNot Nothing, "Field 'memberAccess' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Binder = binder Me._MemberAccess = memberAccess End Sub Private ReadOnly _Binder As Binder Public ReadOnly Property Binder As Binder Get Return _Binder End Get End Property Private ReadOnly _MemberAccess As BoundLateMemberAccess Public ReadOnly Property MemberAccess As BoundLateMemberAccess Get Return _MemberAccess End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitLateAddressOfOperator(Me) End Function Public Function Update(binder As Binder, memberAccess As BoundLateMemberAccess, type As TypeSymbol) As BoundLateAddressOfOperator If binder IsNot Me.Binder OrElse memberAccess IsNot Me.MemberAccess OrElse type IsNot Me.Type Then Dim result = New BoundLateAddressOfOperator(Me.Syntax, binder, memberAccess, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend MustInherit Class BoundTupleExpression Inherits BoundExpression Protected Sub New(kind As BoundKind, syntax as SyntaxNode, arguments As ImmutableArray(Of BoundExpression), type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(kind, syntax, type, hasErrors) Debug.Assert(Not (arguments.IsDefault), "Field 'arguments' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Arguments = arguments End Sub Private ReadOnly _Arguments As ImmutableArray(Of BoundExpression) Public ReadOnly Property Arguments As ImmutableArray(Of BoundExpression) Get Return _Arguments End Get End Property End Class Partial Friend NotInheritable Class BoundTupleLiteral Inherits BoundTupleExpression Public Sub New(syntax As SyntaxNode, inferredType As TupleTypeSymbol, argumentNamesOpt As ImmutableArray(Of String), inferredNamesOpt As ImmutableArray(Of Boolean), arguments As ImmutableArray(Of BoundExpression), type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.TupleLiteral, syntax, arguments, type, hasErrors OrElse arguments.NonNullAndHasErrors()) Debug.Assert(Not (arguments.IsDefault), "Field 'arguments' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._InferredType = inferredType Me._ArgumentNamesOpt = argumentNamesOpt Me._InferredNamesOpt = inferredNamesOpt End Sub Private ReadOnly _InferredType As TupleTypeSymbol Public ReadOnly Property InferredType As TupleTypeSymbol Get Return _InferredType End Get End Property Private ReadOnly _ArgumentNamesOpt As ImmutableArray(Of String) Public ReadOnly Property ArgumentNamesOpt As ImmutableArray(Of String) Get Return _ArgumentNamesOpt End Get End Property Private ReadOnly _InferredNamesOpt As ImmutableArray(Of Boolean) Public ReadOnly Property InferredNamesOpt As ImmutableArray(Of Boolean) Get Return _InferredNamesOpt End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitTupleLiteral(Me) End Function Public Function Update(inferredType As TupleTypeSymbol, argumentNamesOpt As ImmutableArray(Of String), inferredNamesOpt As ImmutableArray(Of Boolean), arguments As ImmutableArray(Of BoundExpression), type As TypeSymbol) As BoundTupleLiteral If inferredType IsNot Me.InferredType OrElse argumentNamesOpt <> Me.ArgumentNamesOpt OrElse inferredNamesOpt <> Me.InferredNamesOpt OrElse arguments <> Me.Arguments OrElse type IsNot Me.Type Then Dim result = New BoundTupleLiteral(Me.Syntax, inferredType, argumentNamesOpt, inferredNamesOpt, arguments, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundConvertedTupleLiteral Inherits BoundTupleExpression Public Sub New(syntax As SyntaxNode, naturalTypeOpt As TypeSymbol, arguments As ImmutableArray(Of BoundExpression), type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.ConvertedTupleLiteral, syntax, arguments, type, hasErrors OrElse arguments.NonNullAndHasErrors()) Debug.Assert(Not (arguments.IsDefault), "Field 'arguments' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._NaturalTypeOpt = naturalTypeOpt End Sub Private ReadOnly _NaturalTypeOpt As TypeSymbol Public ReadOnly Property NaturalTypeOpt As TypeSymbol Get Return _NaturalTypeOpt End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitConvertedTupleLiteral(Me) End Function Public Function Update(naturalTypeOpt As TypeSymbol, arguments As ImmutableArray(Of BoundExpression), type As TypeSymbol) As BoundConvertedTupleLiteral If naturalTypeOpt IsNot Me.NaturalTypeOpt OrElse arguments <> Me.Arguments OrElse type IsNot Me.Type Then Dim result = New BoundConvertedTupleLiteral(Me.Syntax, naturalTypeOpt, arguments, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend MustInherit Class BoundObjectCreationExpressionBase Inherits BoundExpression Protected Sub New(kind As BoundKind, syntax as SyntaxNode, initializerOpt As BoundObjectInitializerExpressionBase, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(kind, syntax, type, hasErrors) Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._InitializerOpt = initializerOpt Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _InitializerOpt As BoundObjectInitializerExpressionBase Public ReadOnly Property InitializerOpt As BoundObjectInitializerExpressionBase Get Return _InitializerOpt End Get End Property End Class Partial Friend NotInheritable Class BoundObjectCreationExpression Inherits BoundObjectCreationExpressionBase Public Sub New(syntax As SyntaxNode, constructorOpt As MethodSymbol, methodGroupOpt As BoundMethodGroup, arguments As ImmutableArray(Of BoundExpression), defaultArguments As BitVector, initializerOpt As BoundObjectInitializerExpressionBase, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.ObjectCreationExpression, syntax, initializerOpt, type, hasErrors OrElse methodGroupOpt.NonNullAndHasErrors() OrElse arguments.NonNullAndHasErrors() OrElse initializerOpt.NonNullAndHasErrors()) Debug.Assert(Not (arguments.IsDefault), "Field 'arguments' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._ConstructorOpt = constructorOpt Me._MethodGroupOpt = methodGroupOpt Me._Arguments = arguments Me._DefaultArguments = defaultArguments Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _ConstructorOpt As MethodSymbol Public ReadOnly Property ConstructorOpt As MethodSymbol Get Return _ConstructorOpt End Get End Property Private ReadOnly _MethodGroupOpt As BoundMethodGroup Public ReadOnly Property MethodGroupOpt As BoundMethodGroup Get Return _MethodGroupOpt End Get End Property Private ReadOnly _Arguments As ImmutableArray(Of BoundExpression) Public ReadOnly Property Arguments As ImmutableArray(Of BoundExpression) Get Return _Arguments End Get End Property Private ReadOnly _DefaultArguments As BitVector Public ReadOnly Property DefaultArguments As BitVector Get Return _DefaultArguments End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitObjectCreationExpression(Me) End Function Public Function Update(constructorOpt As MethodSymbol, methodGroupOpt As BoundMethodGroup, arguments As ImmutableArray(Of BoundExpression), defaultArguments As BitVector, initializerOpt As BoundObjectInitializerExpressionBase, type As TypeSymbol) As BoundObjectCreationExpression If constructorOpt IsNot Me.ConstructorOpt OrElse methodGroupOpt IsNot Me.MethodGroupOpt OrElse arguments <> Me.Arguments OrElse defaultArguments <> Me.DefaultArguments OrElse initializerOpt IsNot Me.InitializerOpt OrElse type IsNot Me.Type Then Dim result = New BoundObjectCreationExpression(Me.Syntax, constructorOpt, methodGroupOpt, arguments, defaultArguments, initializerOpt, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundNoPiaObjectCreationExpression Inherits BoundObjectCreationExpressionBase Public Sub New(syntax As SyntaxNode, guidString As string, initializerOpt As BoundObjectInitializerExpressionBase, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.NoPiaObjectCreationExpression, syntax, initializerOpt, type, hasErrors OrElse initializerOpt.NonNullAndHasErrors()) Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._GuidString = guidString End Sub Private ReadOnly _GuidString As string Public ReadOnly Property GuidString As string Get Return _GuidString End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitNoPiaObjectCreationExpression(Me) End Function Public Function Update(guidString As string, initializerOpt As BoundObjectInitializerExpressionBase, type As TypeSymbol) As BoundNoPiaObjectCreationExpression If guidString IsNot Me.GuidString OrElse initializerOpt IsNot Me.InitializerOpt OrElse type IsNot Me.Type Then Dim result = New BoundNoPiaObjectCreationExpression(Me.Syntax, guidString, initializerOpt, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundAnonymousTypeCreationExpression Inherits BoundExpression Public Sub New(syntax As SyntaxNode, binderOpt As Binder.AnonymousTypeCreationBinder, declarations As ImmutableArray(Of BoundAnonymousTypePropertyAccess), arguments As ImmutableArray(Of BoundExpression), type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.AnonymousTypeCreationExpression, syntax, type, hasErrors OrElse declarations.NonNullAndHasErrors() OrElse arguments.NonNullAndHasErrors()) Debug.Assert(Not (declarations.IsDefault), "Field 'declarations' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(Not (arguments.IsDefault), "Field 'arguments' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._BinderOpt = binderOpt Me._Declarations = declarations Me._Arguments = arguments End Sub Private ReadOnly _BinderOpt As Binder.AnonymousTypeCreationBinder Public ReadOnly Property BinderOpt As Binder.AnonymousTypeCreationBinder Get Return _BinderOpt End Get End Property Private ReadOnly _Declarations As ImmutableArray(Of BoundAnonymousTypePropertyAccess) Public ReadOnly Property Declarations As ImmutableArray(Of BoundAnonymousTypePropertyAccess) Get Return _Declarations End Get End Property Private ReadOnly _Arguments As ImmutableArray(Of BoundExpression) Public ReadOnly Property Arguments As ImmutableArray(Of BoundExpression) Get Return _Arguments End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitAnonymousTypeCreationExpression(Me) End Function Public Function Update(binderOpt As Binder.AnonymousTypeCreationBinder, declarations As ImmutableArray(Of BoundAnonymousTypePropertyAccess), arguments As ImmutableArray(Of BoundExpression), type As TypeSymbol) As BoundAnonymousTypeCreationExpression If binderOpt IsNot Me.BinderOpt OrElse declarations <> Me.Declarations OrElse arguments <> Me.Arguments OrElse type IsNot Me.Type Then Dim result = New BoundAnonymousTypeCreationExpression(Me.Syntax, binderOpt, declarations, arguments, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundAnonymousTypePropertyAccess Inherits BoundExpression Public Sub New(syntax As SyntaxNode, binder As Binder.AnonymousTypeCreationBinder, propertyIndex As Integer, type As TypeSymbol, hasErrors As Boolean) MyBase.New(BoundKind.AnonymousTypePropertyAccess, syntax, type, hasErrors) Debug.Assert(binder IsNot Nothing, "Field 'binder' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Binder = binder Me._PropertyIndex = propertyIndex End Sub Public Sub New(syntax As SyntaxNode, binder As Binder.AnonymousTypeCreationBinder, propertyIndex As Integer, type As TypeSymbol) MyBase.New(BoundKind.AnonymousTypePropertyAccess, syntax, type) Debug.Assert(binder IsNot Nothing, "Field 'binder' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Binder = binder Me._PropertyIndex = propertyIndex End Sub Private ReadOnly _Binder As Binder.AnonymousTypeCreationBinder Public ReadOnly Property Binder As Binder.AnonymousTypeCreationBinder Get Return _Binder End Get End Property Private ReadOnly _PropertyIndex As Integer Public ReadOnly Property PropertyIndex As Integer Get Return _PropertyIndex End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitAnonymousTypePropertyAccess(Me) End Function Public Function Update(binder As Binder.AnonymousTypeCreationBinder, propertyIndex As Integer, type As TypeSymbol) As BoundAnonymousTypePropertyAccess If binder IsNot Me.Binder OrElse propertyIndex <> Me.PropertyIndex OrElse type IsNot Me.Type Then Dim result = New BoundAnonymousTypePropertyAccess(Me.Syntax, binder, propertyIndex, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundAnonymousTypeFieldInitializer Inherits BoundExpression Public Sub New(syntax As SyntaxNode, binder As Binder.AnonymousTypeFieldInitializerBinder, value As BoundExpression, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.AnonymousTypeFieldInitializer, syntax, type, hasErrors OrElse value.NonNullAndHasErrors()) Debug.Assert(binder IsNot Nothing, "Field 'binder' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(value IsNot Nothing, "Field 'value' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Binder = binder Me._Value = value End Sub Private ReadOnly _Binder As Binder.AnonymousTypeFieldInitializerBinder Public ReadOnly Property Binder As Binder.AnonymousTypeFieldInitializerBinder Get Return _Binder End Get End Property Private ReadOnly _Value As BoundExpression Public ReadOnly Property Value As BoundExpression Get Return _Value End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitAnonymousTypeFieldInitializer(Me) End Function Public Function Update(binder As Binder.AnonymousTypeFieldInitializerBinder, value As BoundExpression, type As TypeSymbol) As BoundAnonymousTypeFieldInitializer If binder IsNot Me.Binder OrElse value IsNot Me.Value OrElse type IsNot Me.Type Then Dim result = New BoundAnonymousTypeFieldInitializer(Me.Syntax, binder, value, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend MustInherit Class BoundObjectInitializerExpressionBase Inherits BoundExpression Protected Sub New(kind As BoundKind, syntax as SyntaxNode, placeholderOpt As BoundWithLValueExpressionPlaceholder, initializers As ImmutableArray(Of BoundExpression), type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(kind, syntax, type, hasErrors) Debug.Assert(Not (initializers.IsDefault), "Field 'initializers' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._PlaceholderOpt = placeholderOpt Me._Initializers = initializers End Sub Private ReadOnly _PlaceholderOpt As BoundWithLValueExpressionPlaceholder Public ReadOnly Property PlaceholderOpt As BoundWithLValueExpressionPlaceholder Get Return _PlaceholderOpt End Get End Property Private ReadOnly _Initializers As ImmutableArray(Of BoundExpression) Public ReadOnly Property Initializers As ImmutableArray(Of BoundExpression) Get Return _Initializers End Get End Property End Class Partial Friend NotInheritable Class BoundObjectInitializerExpression Inherits BoundObjectInitializerExpressionBase Public Sub New(syntax As SyntaxNode, createTemporaryLocalForInitialization As Boolean, placeholderOpt As BoundWithLValueExpressionPlaceholder, initializers As ImmutableArray(Of BoundExpression), type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.ObjectInitializerExpression, syntax, placeholderOpt, initializers, type, hasErrors OrElse placeholderOpt.NonNullAndHasErrors() OrElse initializers.NonNullAndHasErrors()) Debug.Assert(Not (initializers.IsDefault), "Field 'initializers' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._CreateTemporaryLocalForInitialization = createTemporaryLocalForInitialization Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _CreateTemporaryLocalForInitialization As Boolean Public ReadOnly Property CreateTemporaryLocalForInitialization As Boolean Get Return _CreateTemporaryLocalForInitialization End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitObjectInitializerExpression(Me) End Function Public Function Update(createTemporaryLocalForInitialization As Boolean, placeholderOpt As BoundWithLValueExpressionPlaceholder, initializers As ImmutableArray(Of BoundExpression), type As TypeSymbol) As BoundObjectInitializerExpression If createTemporaryLocalForInitialization <> Me.CreateTemporaryLocalForInitialization OrElse placeholderOpt IsNot Me.PlaceholderOpt OrElse initializers <> Me.Initializers OrElse type IsNot Me.Type Then Dim result = New BoundObjectInitializerExpression(Me.Syntax, createTemporaryLocalForInitialization, placeholderOpt, initializers, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundCollectionInitializerExpression Inherits BoundObjectInitializerExpressionBase Public Sub New(syntax As SyntaxNode, placeholderOpt As BoundWithLValueExpressionPlaceholder, initializers As ImmutableArray(Of BoundExpression), type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.CollectionInitializerExpression, syntax, placeholderOpt, initializers, type, hasErrors OrElse placeholderOpt.NonNullAndHasErrors() OrElse initializers.NonNullAndHasErrors()) Debug.Assert(Not (initializers.IsDefault), "Field 'initializers' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Validate() End Sub Private Partial Sub Validate() End Sub <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitCollectionInitializerExpression(Me) End Function Public Function Update(placeholderOpt As BoundWithLValueExpressionPlaceholder, initializers As ImmutableArray(Of BoundExpression), type As TypeSymbol) As BoundCollectionInitializerExpression If placeholderOpt IsNot Me.PlaceholderOpt OrElse initializers <> Me.Initializers OrElse type IsNot Me.Type Then Dim result = New BoundCollectionInitializerExpression(Me.Syntax, placeholderOpt, initializers, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundNewT Inherits BoundObjectCreationExpressionBase Public Sub New(syntax As SyntaxNode, initializerOpt As BoundObjectInitializerExpressionBase, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.NewT, syntax, initializerOpt, type, hasErrors OrElse initializerOpt.NonNullAndHasErrors()) Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Validate() End Sub Private Partial Sub Validate() End Sub <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitNewT(Me) End Function Public Function Update(initializerOpt As BoundObjectInitializerExpressionBase, type As TypeSymbol) As BoundNewT If initializerOpt IsNot Me.InitializerOpt OrElse type IsNot Me.Type Then Dim result = New BoundNewT(Me.Syntax, initializerOpt, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundDelegateCreationExpression Inherits BoundExpression Public Sub New(syntax As SyntaxNode, receiverOpt As BoundExpression, method As MethodSymbol, relaxationLambdaOpt As BoundLambda, relaxationReceiverPlaceholderOpt As BoundRValuePlaceholder, methodGroupOpt As BoundMethodGroup, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.DelegateCreationExpression, syntax, type, hasErrors OrElse receiverOpt.NonNullAndHasErrors() OrElse relaxationLambdaOpt.NonNullAndHasErrors() OrElse relaxationReceiverPlaceholderOpt.NonNullAndHasErrors() OrElse methodGroupOpt.NonNullAndHasErrors()) Debug.Assert(method IsNot Nothing, "Field 'method' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._ReceiverOpt = receiverOpt Me._Method = method Me._RelaxationLambdaOpt = relaxationLambdaOpt Me._RelaxationReceiverPlaceholderOpt = relaxationReceiverPlaceholderOpt Me._MethodGroupOpt = methodGroupOpt End Sub Private ReadOnly _ReceiverOpt As BoundExpression Public ReadOnly Property ReceiverOpt As BoundExpression Get Return _ReceiverOpt End Get End Property Private ReadOnly _Method As MethodSymbol Public ReadOnly Property Method As MethodSymbol Get Return _Method End Get End Property Private ReadOnly _RelaxationLambdaOpt As BoundLambda Public ReadOnly Property RelaxationLambdaOpt As BoundLambda Get Return _RelaxationLambdaOpt End Get End Property Private ReadOnly _RelaxationReceiverPlaceholderOpt As BoundRValuePlaceholder Public ReadOnly Property RelaxationReceiverPlaceholderOpt As BoundRValuePlaceholder Get Return _RelaxationReceiverPlaceholderOpt End Get End Property Private ReadOnly _MethodGroupOpt As BoundMethodGroup Public ReadOnly Property MethodGroupOpt As BoundMethodGroup Get Return _MethodGroupOpt End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitDelegateCreationExpression(Me) End Function Public Function Update(receiverOpt As BoundExpression, method As MethodSymbol, relaxationLambdaOpt As BoundLambda, relaxationReceiverPlaceholderOpt As BoundRValuePlaceholder, methodGroupOpt As BoundMethodGroup, type As TypeSymbol) As BoundDelegateCreationExpression If receiverOpt IsNot Me.ReceiverOpt OrElse method IsNot Me.Method OrElse relaxationLambdaOpt IsNot Me.RelaxationLambdaOpt OrElse relaxationReceiverPlaceholderOpt IsNot Me.RelaxationReceiverPlaceholderOpt OrElse methodGroupOpt IsNot Me.MethodGroupOpt OrElse type IsNot Me.Type Then Dim result = New BoundDelegateCreationExpression(Me.Syntax, receiverOpt, method, relaxationLambdaOpt, relaxationReceiverPlaceholderOpt, methodGroupOpt, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundArrayCreation Inherits BoundExpression Public Sub New(syntax As SyntaxNode, isParamArrayArgument As Boolean, bounds As ImmutableArray(Of BoundExpression), initializerOpt As BoundArrayInitialization, arrayLiteralOpt As BoundArrayLiteral, arrayLiteralConversion As ConversionKind, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.ArrayCreation, syntax, type, hasErrors OrElse bounds.NonNullAndHasErrors() OrElse initializerOpt.NonNullAndHasErrors() OrElse arrayLiteralOpt.NonNullAndHasErrors()) Debug.Assert(Not (bounds.IsDefault), "Field 'bounds' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._IsParamArrayArgument = isParamArrayArgument Me._Bounds = bounds Me._InitializerOpt = initializerOpt Me._ArrayLiteralOpt = arrayLiteralOpt Me._ArrayLiteralConversion = arrayLiteralConversion Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _IsParamArrayArgument As Boolean Public ReadOnly Property IsParamArrayArgument As Boolean Get Return _IsParamArrayArgument End Get End Property Private ReadOnly _Bounds As ImmutableArray(Of BoundExpression) Public ReadOnly Property Bounds As ImmutableArray(Of BoundExpression) Get Return _Bounds End Get End Property Private ReadOnly _InitializerOpt As BoundArrayInitialization Public ReadOnly Property InitializerOpt As BoundArrayInitialization Get Return _InitializerOpt End Get End Property Private ReadOnly _ArrayLiteralOpt As BoundArrayLiteral Public ReadOnly Property ArrayLiteralOpt As BoundArrayLiteral Get Return _ArrayLiteralOpt End Get End Property Private ReadOnly _ArrayLiteralConversion As ConversionKind Public ReadOnly Property ArrayLiteralConversion As ConversionKind Get Return _ArrayLiteralConversion End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitArrayCreation(Me) End Function Public Function Update(isParamArrayArgument As Boolean, bounds As ImmutableArray(Of BoundExpression), initializerOpt As BoundArrayInitialization, arrayLiteralOpt As BoundArrayLiteral, arrayLiteralConversion As ConversionKind, type As TypeSymbol) As BoundArrayCreation If isParamArrayArgument <> Me.IsParamArrayArgument OrElse bounds <> Me.Bounds OrElse initializerOpt IsNot Me.InitializerOpt OrElse arrayLiteralOpt IsNot Me.ArrayLiteralOpt OrElse arrayLiteralConversion <> Me.ArrayLiteralConversion OrElse type IsNot Me.Type Then Dim result = New BoundArrayCreation(Me.Syntax, isParamArrayArgument, bounds, initializerOpt, arrayLiteralOpt, arrayLiteralConversion, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundArrayLiteral Inherits BoundExpression Public Sub New(syntax As SyntaxNode, hasDominantType As Boolean, numberOfCandidates As Integer, inferredType As ArrayTypeSymbol, bounds As ImmutableArray(Of BoundExpression), initializer As BoundArrayInitialization, binder As Binder, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.ArrayLiteral, syntax, Nothing, hasErrors OrElse bounds.NonNullAndHasErrors() OrElse initializer.NonNullAndHasErrors()) Debug.Assert(inferredType IsNot Nothing, "Field 'inferredType' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(Not (bounds.IsDefault), "Field 'bounds' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(initializer IsNot Nothing, "Field 'initializer' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(binder IsNot Nothing, "Field 'binder' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._HasDominantType = hasDominantType Me._NumberOfCandidates = numberOfCandidates Me._InferredType = inferredType Me._Bounds = bounds Me._Initializer = initializer Me._Binder = binder End Sub Private ReadOnly _HasDominantType As Boolean Public ReadOnly Property HasDominantType As Boolean Get Return _HasDominantType End Get End Property Private ReadOnly _NumberOfCandidates As Integer Public ReadOnly Property NumberOfCandidates As Integer Get Return _NumberOfCandidates End Get End Property Private ReadOnly _InferredType As ArrayTypeSymbol Public ReadOnly Property InferredType As ArrayTypeSymbol Get Return _InferredType End Get End Property Private ReadOnly _Bounds As ImmutableArray(Of BoundExpression) Public ReadOnly Property Bounds As ImmutableArray(Of BoundExpression) Get Return _Bounds End Get End Property Private ReadOnly _Initializer As BoundArrayInitialization Public ReadOnly Property Initializer As BoundArrayInitialization Get Return _Initializer End Get End Property Private ReadOnly _Binder As Binder Public ReadOnly Property Binder As Binder Get Return _Binder End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitArrayLiteral(Me) End Function Public Function Update(hasDominantType As Boolean, numberOfCandidates As Integer, inferredType As ArrayTypeSymbol, bounds As ImmutableArray(Of BoundExpression), initializer As BoundArrayInitialization, binder As Binder) As BoundArrayLiteral If hasDominantType <> Me.HasDominantType OrElse numberOfCandidates <> Me.NumberOfCandidates OrElse inferredType IsNot Me.InferredType OrElse bounds <> Me.Bounds OrElse initializer IsNot Me.Initializer OrElse binder IsNot Me.Binder Then Dim result = New BoundArrayLiteral(Me.Syntax, hasDominantType, numberOfCandidates, inferredType, bounds, initializer, binder, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundArrayInitialization Inherits BoundExpression Public Sub New(syntax As SyntaxNode, initializers As ImmutableArray(Of BoundExpression), type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.ArrayInitialization, syntax, type, hasErrors OrElse initializers.NonNullAndHasErrors()) Debug.Assert(Not (initializers.IsDefault), "Field 'initializers' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Initializers = initializers End Sub Private ReadOnly _Initializers As ImmutableArray(Of BoundExpression) Public ReadOnly Property Initializers As ImmutableArray(Of BoundExpression) Get Return _Initializers End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitArrayInitialization(Me) End Function Public Function Update(initializers As ImmutableArray(Of BoundExpression), type As TypeSymbol) As BoundArrayInitialization If initializers <> Me.Initializers OrElse type IsNot Me.Type Then Dim result = New BoundArrayInitialization(Me.Syntax, initializers, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundFieldAccess Inherits BoundExpression Public Sub New(syntax As SyntaxNode, receiverOpt As BoundExpression, fieldSymbol As FieldSymbol, isLValue As Boolean, suppressVirtualCalls As Boolean, constantsInProgressOpt As ConstantFieldsInProgress, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.FieldAccess, syntax, type, hasErrors OrElse receiverOpt.NonNullAndHasErrors()) Debug.Assert(fieldSymbol IsNot Nothing, "Field 'fieldSymbol' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._ReceiverOpt = receiverOpt Me._FieldSymbol = fieldSymbol Me._IsLValue = isLValue Me._SuppressVirtualCalls = suppressVirtualCalls Me._ConstantsInProgressOpt = constantsInProgressOpt Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _ReceiverOpt As BoundExpression Public ReadOnly Property ReceiverOpt As BoundExpression Get Return _ReceiverOpt End Get End Property Private ReadOnly _FieldSymbol As FieldSymbol Public ReadOnly Property FieldSymbol As FieldSymbol Get Return _FieldSymbol End Get End Property Private ReadOnly _IsLValue As Boolean Public Overrides ReadOnly Property IsLValue As Boolean Get Return _IsLValue End Get End Property Private ReadOnly _SuppressVirtualCalls As Boolean Public Overrides ReadOnly Property SuppressVirtualCalls As Boolean Get Return _SuppressVirtualCalls End Get End Property Private ReadOnly _ConstantsInProgressOpt As ConstantFieldsInProgress Public ReadOnly Property ConstantsInProgressOpt As ConstantFieldsInProgress Get Return _ConstantsInProgressOpt End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitFieldAccess(Me) End Function Public Function Update(receiverOpt As BoundExpression, fieldSymbol As FieldSymbol, isLValue As Boolean, suppressVirtualCalls As Boolean, constantsInProgressOpt As ConstantFieldsInProgress, type As TypeSymbol) As BoundFieldAccess If receiverOpt IsNot Me.ReceiverOpt OrElse fieldSymbol IsNot Me.FieldSymbol OrElse isLValue <> Me.IsLValue OrElse suppressVirtualCalls <> Me.SuppressVirtualCalls OrElse constantsInProgressOpt IsNot Me.ConstantsInProgressOpt OrElse type IsNot Me.Type Then Dim result = New BoundFieldAccess(Me.Syntax, receiverOpt, fieldSymbol, isLValue, suppressVirtualCalls, constantsInProgressOpt, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundPropertyAccess Inherits BoundExpression Public Sub New(syntax As SyntaxNode, propertySymbol As PropertySymbol, propertyGroupOpt As BoundPropertyGroup, accessKind As PropertyAccessKind, isWriteable As Boolean, isLValue As Boolean, receiverOpt As BoundExpression, arguments As ImmutableArray(Of BoundExpression), defaultArguments As BitVector, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.PropertyAccess, syntax, type, hasErrors OrElse propertyGroupOpt.NonNullAndHasErrors() OrElse receiverOpt.NonNullAndHasErrors() OrElse arguments.NonNullAndHasErrors()) Debug.Assert(propertySymbol IsNot Nothing, "Field 'propertySymbol' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(Not (arguments.IsDefault), "Field 'arguments' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._PropertySymbol = propertySymbol Me._PropertyGroupOpt = propertyGroupOpt Me._AccessKind = accessKind Me._IsWriteable = isWriteable Me._IsLValue = isLValue Me._ReceiverOpt = receiverOpt Me._Arguments = arguments Me._DefaultArguments = defaultArguments Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _PropertySymbol As PropertySymbol Public ReadOnly Property PropertySymbol As PropertySymbol Get Return _PropertySymbol End Get End Property Private ReadOnly _PropertyGroupOpt As BoundPropertyGroup Public ReadOnly Property PropertyGroupOpt As BoundPropertyGroup Get Return _PropertyGroupOpt End Get End Property Private ReadOnly _AccessKind As PropertyAccessKind Public ReadOnly Property AccessKind As PropertyAccessKind Get Return _AccessKind End Get End Property Private ReadOnly _IsWriteable As Boolean Public ReadOnly Property IsWriteable As Boolean Get Return _IsWriteable End Get End Property Private ReadOnly _IsLValue As Boolean Public Overrides ReadOnly Property IsLValue As Boolean Get Return _IsLValue End Get End Property Private ReadOnly _ReceiverOpt As BoundExpression Public ReadOnly Property ReceiverOpt As BoundExpression Get Return _ReceiverOpt End Get End Property Private ReadOnly _Arguments As ImmutableArray(Of BoundExpression) Public ReadOnly Property Arguments As ImmutableArray(Of BoundExpression) Get Return _Arguments End Get End Property Private ReadOnly _DefaultArguments As BitVector Public ReadOnly Property DefaultArguments As BitVector Get Return _DefaultArguments End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitPropertyAccess(Me) End Function Public Function Update(propertySymbol As PropertySymbol, propertyGroupOpt As BoundPropertyGroup, accessKind As PropertyAccessKind, isWriteable As Boolean, isLValue As Boolean, receiverOpt As BoundExpression, arguments As ImmutableArray(Of BoundExpression), defaultArguments As BitVector, type As TypeSymbol) As BoundPropertyAccess If propertySymbol IsNot Me.PropertySymbol OrElse propertyGroupOpt IsNot Me.PropertyGroupOpt OrElse accessKind <> Me.AccessKind OrElse isWriteable <> Me.IsWriteable OrElse isLValue <> Me.IsLValue OrElse receiverOpt IsNot Me.ReceiverOpt OrElse arguments <> Me.Arguments OrElse defaultArguments <> Me.DefaultArguments OrElse type IsNot Me.Type Then Dim result = New BoundPropertyAccess(Me.Syntax, propertySymbol, propertyGroupOpt, accessKind, isWriteable, isLValue, receiverOpt, arguments, defaultArguments, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundEventAccess Inherits BoundExpression Public Sub New(syntax As SyntaxNode, receiverOpt As BoundExpression, eventSymbol As EventSymbol, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.EventAccess, syntax, type, hasErrors OrElse receiverOpt.NonNullAndHasErrors()) Debug.Assert(eventSymbol IsNot Nothing, "Field 'eventSymbol' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._ReceiverOpt = receiverOpt Me._EventSymbol = eventSymbol End Sub Private ReadOnly _ReceiverOpt As BoundExpression Public ReadOnly Property ReceiverOpt As BoundExpression Get Return _ReceiverOpt End Get End Property Private ReadOnly _EventSymbol As EventSymbol Public ReadOnly Property EventSymbol As EventSymbol Get Return _EventSymbol End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitEventAccess(Me) End Function Public Function Update(receiverOpt As BoundExpression, eventSymbol As EventSymbol, type As TypeSymbol) As BoundEventAccess If receiverOpt IsNot Me.ReceiverOpt OrElse eventSymbol IsNot Me.EventSymbol OrElse type IsNot Me.Type Then Dim result = New BoundEventAccess(Me.Syntax, receiverOpt, eventSymbol, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundBlock Inherits BoundStatement Public Sub New(syntax As SyntaxNode, statementListSyntax As SyntaxList(Of StatementSyntax), locals As ImmutableArray(Of LocalSymbol), statements As ImmutableArray(Of BoundStatement), Optional hasErrors As Boolean = False) MyBase.New(BoundKind.Block, syntax, hasErrors OrElse statements.NonNullAndHasErrors()) Debug.Assert(Not (locals.IsDefault), "Field 'locals' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(Not (statements.IsDefault), "Field 'statements' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._StatementListSyntax = statementListSyntax Me._Locals = locals Me._Statements = statements End Sub Private ReadOnly _StatementListSyntax As SyntaxList(Of StatementSyntax) Public ReadOnly Property StatementListSyntax As SyntaxList(Of StatementSyntax) Get Return _StatementListSyntax End Get End Property Private ReadOnly _Locals As ImmutableArray(Of LocalSymbol) Public ReadOnly Property Locals As ImmutableArray(Of LocalSymbol) Get Return _Locals End Get End Property Private ReadOnly _Statements As ImmutableArray(Of BoundStatement) Public ReadOnly Property Statements As ImmutableArray(Of BoundStatement) Get Return _Statements End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitBlock(Me) End Function Public Function Update(statementListSyntax As SyntaxList(Of StatementSyntax), locals As ImmutableArray(Of LocalSymbol), statements As ImmutableArray(Of BoundStatement)) As BoundBlock If statementListSyntax <> Me.StatementListSyntax OrElse locals <> Me.Locals OrElse statements <> Me.Statements Then Dim result = New BoundBlock(Me.Syntax, statementListSyntax, locals, statements, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundStateMachineScope Inherits BoundStatement Public Sub New(syntax As SyntaxNode, fields As ImmutableArray(Of FieldSymbol), statement As BoundStatement, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.StateMachineScope, syntax, hasErrors OrElse statement.NonNullAndHasErrors()) Debug.Assert(Not (fields.IsDefault), "Field 'fields' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(statement IsNot Nothing, "Field 'statement' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Fields = fields Me._Statement = statement End Sub Private ReadOnly _Fields As ImmutableArray(Of FieldSymbol) Public ReadOnly Property Fields As ImmutableArray(Of FieldSymbol) Get Return _Fields End Get End Property Private ReadOnly _Statement As BoundStatement Public ReadOnly Property Statement As BoundStatement Get Return _Statement End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitStateMachineScope(Me) End Function Public Function Update(fields As ImmutableArray(Of FieldSymbol), statement As BoundStatement) As BoundStateMachineScope If fields <> Me.Fields OrElse statement IsNot Me.Statement Then Dim result = New BoundStateMachineScope(Me.Syntax, fields, statement, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend MustInherit Class BoundLocalDeclarationBase Inherits BoundStatement Protected Sub New(kind As BoundKind, syntax as SyntaxNode, hasErrors As Boolean) MyBase.New(kind, syntax, hasErrors) End Sub Protected Sub New(kind As BoundKind, syntax as SyntaxNode) MyBase.New(kind, syntax) End Sub End Class Partial Friend NotInheritable Class BoundLocalDeclaration Inherits BoundLocalDeclarationBase Public Sub New(syntax As SyntaxNode, localSymbol As LocalSymbol, declarationInitializerOpt As BoundExpression, identifierInitializerOpt As BoundArrayCreation, initializedByAsNew As Boolean, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.LocalDeclaration, syntax, hasErrors OrElse declarationInitializerOpt.NonNullAndHasErrors() OrElse identifierInitializerOpt.NonNullAndHasErrors()) Debug.Assert(localSymbol IsNot Nothing, "Field 'localSymbol' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._LocalSymbol = localSymbol Me._DeclarationInitializerOpt = declarationInitializerOpt Me._IdentifierInitializerOpt = identifierInitializerOpt Me._InitializedByAsNew = initializedByAsNew Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _LocalSymbol As LocalSymbol Public ReadOnly Property LocalSymbol As LocalSymbol Get Return _LocalSymbol End Get End Property Private ReadOnly _DeclarationInitializerOpt As BoundExpression Public ReadOnly Property DeclarationInitializerOpt As BoundExpression Get Return _DeclarationInitializerOpt End Get End Property Private ReadOnly _IdentifierInitializerOpt As BoundArrayCreation Public ReadOnly Property IdentifierInitializerOpt As BoundArrayCreation Get Return _IdentifierInitializerOpt End Get End Property Private ReadOnly _InitializedByAsNew As Boolean Public ReadOnly Property InitializedByAsNew As Boolean Get Return _InitializedByAsNew End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitLocalDeclaration(Me) End Function Public Function Update(localSymbol As LocalSymbol, declarationInitializerOpt As BoundExpression, identifierInitializerOpt As BoundArrayCreation, initializedByAsNew As Boolean) As BoundLocalDeclaration If localSymbol IsNot Me.LocalSymbol OrElse declarationInitializerOpt IsNot Me.DeclarationInitializerOpt OrElse identifierInitializerOpt IsNot Me.IdentifierInitializerOpt OrElse initializedByAsNew <> Me.InitializedByAsNew Then Dim result = New BoundLocalDeclaration(Me.Syntax, localSymbol, declarationInitializerOpt, identifierInitializerOpt, initializedByAsNew, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundAsNewLocalDeclarations Inherits BoundLocalDeclarationBase Public Sub New(syntax As SyntaxNode, localDeclarations As ImmutableArray(Of BoundLocalDeclaration), initializer As BoundExpression, binder As Binder, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.AsNewLocalDeclarations, syntax, hasErrors OrElse localDeclarations.NonNullAndHasErrors() OrElse initializer.NonNullAndHasErrors()) Debug.Assert(Not (localDeclarations.IsDefault), "Field 'localDeclarations' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(initializer IsNot Nothing, "Field 'initializer' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(binder IsNot Nothing, "Field 'binder' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._LocalDeclarations = localDeclarations Me._Initializer = initializer Me._Binder = binder End Sub Private ReadOnly _LocalDeclarations As ImmutableArray(Of BoundLocalDeclaration) Public ReadOnly Property LocalDeclarations As ImmutableArray(Of BoundLocalDeclaration) Get Return _LocalDeclarations End Get End Property Private ReadOnly _Initializer As BoundExpression Public ReadOnly Property Initializer As BoundExpression Get Return _Initializer End Get End Property Private ReadOnly _Binder As Binder Public ReadOnly Property Binder As Binder Get Return _Binder End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitAsNewLocalDeclarations(Me) End Function Public Function Update(localDeclarations As ImmutableArray(Of BoundLocalDeclaration), initializer As BoundExpression, binder As Binder) As BoundAsNewLocalDeclarations If localDeclarations <> Me.LocalDeclarations OrElse initializer IsNot Me.Initializer OrElse binder IsNot Me.Binder Then Dim result = New BoundAsNewLocalDeclarations(Me.Syntax, localDeclarations, initializer, binder, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundDimStatement Inherits BoundStatement Public Sub New(syntax As SyntaxNode, localDeclarations As ImmutableArray(Of BoundLocalDeclarationBase), initializerOpt As BoundExpression, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.DimStatement, syntax, hasErrors OrElse localDeclarations.NonNullAndHasErrors() OrElse initializerOpt.NonNullAndHasErrors()) Debug.Assert(Not (localDeclarations.IsDefault), "Field 'localDeclarations' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._LocalDeclarations = localDeclarations Me._InitializerOpt = initializerOpt End Sub Private ReadOnly _LocalDeclarations As ImmutableArray(Of BoundLocalDeclarationBase) Public ReadOnly Property LocalDeclarations As ImmutableArray(Of BoundLocalDeclarationBase) Get Return _LocalDeclarations End Get End Property Private ReadOnly _InitializerOpt As BoundExpression Public ReadOnly Property InitializerOpt As BoundExpression Get Return _InitializerOpt End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitDimStatement(Me) End Function Public Function Update(localDeclarations As ImmutableArray(Of BoundLocalDeclarationBase), initializerOpt As BoundExpression) As BoundDimStatement If localDeclarations <> Me.LocalDeclarations OrElse initializerOpt IsNot Me.InitializerOpt Then Dim result = New BoundDimStatement(Me.Syntax, localDeclarations, initializerOpt, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend Class BoundInitializer Inherits BoundStatement Protected Sub New(kind As BoundKind, syntax as SyntaxNode, hasErrors As Boolean) MyBase.New(kind, syntax, hasErrors) End Sub Protected Sub New(kind As BoundKind, syntax as SyntaxNode) MyBase.New(kind, syntax) End Sub Public Sub New(syntax As SyntaxNode, hasErrors As Boolean) MyBase.New(BoundKind.Initializer, syntax, hasErrors) End Sub Public Sub New(syntax As SyntaxNode) MyBase.New(BoundKind.Initializer, syntax) End Sub <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitInitializer(Me) End Function End Class Partial Friend MustInherit Class BoundFieldOrPropertyInitializer Inherits BoundInitializer Protected Sub New(kind As BoundKind, syntax as SyntaxNode, memberAccessExpressionOpt As BoundExpression, initialValue As BoundExpression, binderOpt As Binder, Optional hasErrors As Boolean = False) MyBase.New(kind, syntax, hasErrors) Debug.Assert(initialValue IsNot Nothing, "Field 'initialValue' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._MemberAccessExpressionOpt = memberAccessExpressionOpt Me._InitialValue = initialValue Me._BinderOpt = binderOpt End Sub Private ReadOnly _MemberAccessExpressionOpt As BoundExpression Public ReadOnly Property MemberAccessExpressionOpt As BoundExpression Get Return _MemberAccessExpressionOpt End Get End Property Private ReadOnly _InitialValue As BoundExpression Public ReadOnly Property InitialValue As BoundExpression Get Return _InitialValue End Get End Property Private ReadOnly _BinderOpt As Binder Public ReadOnly Property BinderOpt As Binder Get Return _BinderOpt End Get End Property End Class Partial Friend NotInheritable Class BoundFieldInitializer Inherits BoundFieldOrPropertyInitializer Public Sub New(syntax As SyntaxNode, initializedFields As ImmutableArray(Of FieldSymbol), memberAccessExpressionOpt As BoundExpression, initialValue As BoundExpression, binderOpt As Binder, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.FieldInitializer, syntax, memberAccessExpressionOpt, initialValue, binderOpt, hasErrors OrElse memberAccessExpressionOpt.NonNullAndHasErrors() OrElse initialValue.NonNullAndHasErrors()) Debug.Assert(Not (initializedFields.IsDefault), "Field 'initializedFields' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(initialValue IsNot Nothing, "Field 'initialValue' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._InitializedFields = initializedFields End Sub Private ReadOnly _InitializedFields As ImmutableArray(Of FieldSymbol) Public ReadOnly Property InitializedFields As ImmutableArray(Of FieldSymbol) Get Return _InitializedFields End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitFieldInitializer(Me) End Function Public Function Update(initializedFields As ImmutableArray(Of FieldSymbol), memberAccessExpressionOpt As BoundExpression, initialValue As BoundExpression, binderOpt As Binder) As BoundFieldInitializer If initializedFields <> Me.InitializedFields OrElse memberAccessExpressionOpt IsNot Me.MemberAccessExpressionOpt OrElse initialValue IsNot Me.InitialValue OrElse binderOpt IsNot Me.BinderOpt Then Dim result = New BoundFieldInitializer(Me.Syntax, initializedFields, memberAccessExpressionOpt, initialValue, binderOpt, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundPropertyInitializer Inherits BoundFieldOrPropertyInitializer Public Sub New(syntax As SyntaxNode, initializedProperties As ImmutableArray(Of PropertySymbol), memberAccessExpressionOpt As BoundExpression, initialValue As BoundExpression, binderOpt As Binder, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.PropertyInitializer, syntax, memberAccessExpressionOpt, initialValue, binderOpt, hasErrors OrElse memberAccessExpressionOpt.NonNullAndHasErrors() OrElse initialValue.NonNullAndHasErrors()) Debug.Assert(Not (initializedProperties.IsDefault), "Field 'initializedProperties' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(initialValue IsNot Nothing, "Field 'initialValue' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._InitializedProperties = initializedProperties End Sub Private ReadOnly _InitializedProperties As ImmutableArray(Of PropertySymbol) Public ReadOnly Property InitializedProperties As ImmutableArray(Of PropertySymbol) Get Return _InitializedProperties End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitPropertyInitializer(Me) End Function Public Function Update(initializedProperties As ImmutableArray(Of PropertySymbol), memberAccessExpressionOpt As BoundExpression, initialValue As BoundExpression, binderOpt As Binder) As BoundPropertyInitializer If initializedProperties <> Me.InitializedProperties OrElse memberAccessExpressionOpt IsNot Me.MemberAccessExpressionOpt OrElse initialValue IsNot Me.InitialValue OrElse binderOpt IsNot Me.BinderOpt Then Dim result = New BoundPropertyInitializer(Me.Syntax, initializedProperties, memberAccessExpressionOpt, initialValue, binderOpt, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundParameterEqualsValue Inherits BoundNode Public Sub New(syntax As SyntaxNode, parameter As ParameterSymbol, value As BoundExpression, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.ParameterEqualsValue, syntax, hasErrors OrElse value.NonNullAndHasErrors()) Debug.Assert(parameter IsNot Nothing, "Field 'parameter' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(value IsNot Nothing, "Field 'value' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Parameter = parameter Me._Value = value End Sub Private ReadOnly _Parameter As ParameterSymbol Public ReadOnly Property Parameter As ParameterSymbol Get Return _Parameter End Get End Property Private ReadOnly _Value As BoundExpression Public ReadOnly Property Value As BoundExpression Get Return _Value End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitParameterEqualsValue(Me) End Function Public Function Update(parameter As ParameterSymbol, value As BoundExpression) As BoundParameterEqualsValue If parameter IsNot Me.Parameter OrElse value IsNot Me.Value Then Dim result = New BoundParameterEqualsValue(Me.Syntax, parameter, value, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundGlobalStatementInitializer Inherits BoundInitializer Public Sub New(syntax As SyntaxNode, statement As BoundStatement, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.GlobalStatementInitializer, syntax, hasErrors OrElse statement.NonNullAndHasErrors()) Debug.Assert(statement IsNot Nothing, "Field 'statement' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Statement = statement End Sub Private ReadOnly _Statement As BoundStatement Public ReadOnly Property Statement As BoundStatement Get Return _Statement End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitGlobalStatementInitializer(Me) End Function Public Function Update(statement As BoundStatement) As BoundGlobalStatementInitializer If statement IsNot Me.Statement Then Dim result = New BoundGlobalStatementInitializer(Me.Syntax, statement, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundSequence Inherits BoundExpression Public Sub New(syntax As SyntaxNode, locals As ImmutableArray(Of LocalSymbol), sideEffects As ImmutableArray(Of BoundExpression), valueOpt As BoundExpression, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.Sequence, syntax, type, hasErrors OrElse sideEffects.NonNullAndHasErrors() OrElse valueOpt.NonNullAndHasErrors()) Debug.Assert(Not (locals.IsDefault), "Field 'locals' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(Not (sideEffects.IsDefault), "Field 'sideEffects' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Locals = locals Me._SideEffects = sideEffects Me._ValueOpt = valueOpt Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _Locals As ImmutableArray(Of LocalSymbol) Public ReadOnly Property Locals As ImmutableArray(Of LocalSymbol) Get Return _Locals End Get End Property Private ReadOnly _SideEffects As ImmutableArray(Of BoundExpression) Public ReadOnly Property SideEffects As ImmutableArray(Of BoundExpression) Get Return _SideEffects End Get End Property Private ReadOnly _ValueOpt As BoundExpression Public ReadOnly Property ValueOpt As BoundExpression Get Return _ValueOpt End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitSequence(Me) End Function Public Function Update(locals As ImmutableArray(Of LocalSymbol), sideEffects As ImmutableArray(Of BoundExpression), valueOpt As BoundExpression, type As TypeSymbol) As BoundSequence If locals <> Me.Locals OrElse sideEffects <> Me.SideEffects OrElse valueOpt IsNot Me.ValueOpt OrElse type IsNot Me.Type Then Dim result = New BoundSequence(Me.Syntax, locals, sideEffects, valueOpt, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundExpressionStatement Inherits BoundStatement Public Sub New(syntax As SyntaxNode, expression As BoundExpression, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.ExpressionStatement, syntax, hasErrors OrElse expression.NonNullAndHasErrors()) Debug.Assert(expression IsNot Nothing, "Field 'expression' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Expression = expression End Sub Private ReadOnly _Expression As BoundExpression Public ReadOnly Property Expression As BoundExpression Get Return _Expression End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitExpressionStatement(Me) End Function Public Function Update(expression As BoundExpression) As BoundExpressionStatement If expression IsNot Me.Expression Then Dim result = New BoundExpressionStatement(Me.Syntax, expression, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundIfStatement Inherits BoundStatement Public Sub New(syntax As SyntaxNode, condition As BoundExpression, consequence As BoundStatement, alternativeOpt As BoundStatement, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.IfStatement, syntax, hasErrors OrElse condition.NonNullAndHasErrors() OrElse consequence.NonNullAndHasErrors() OrElse alternativeOpt.NonNullAndHasErrors()) Debug.Assert(condition IsNot Nothing, "Field 'condition' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(consequence IsNot Nothing, "Field 'consequence' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Condition = condition Me._Consequence = consequence Me._AlternativeOpt = alternativeOpt End Sub Private ReadOnly _Condition As BoundExpression Public ReadOnly Property Condition As BoundExpression Get Return _Condition End Get End Property Private ReadOnly _Consequence As BoundStatement Public ReadOnly Property Consequence As BoundStatement Get Return _Consequence End Get End Property Private ReadOnly _AlternativeOpt As BoundStatement Public ReadOnly Property AlternativeOpt As BoundStatement Get Return _AlternativeOpt End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitIfStatement(Me) End Function Public Function Update(condition As BoundExpression, consequence As BoundStatement, alternativeOpt As BoundStatement) As BoundIfStatement If condition IsNot Me.Condition OrElse consequence IsNot Me.Consequence OrElse alternativeOpt IsNot Me.AlternativeOpt Then Dim result = New BoundIfStatement(Me.Syntax, condition, consequence, alternativeOpt, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundSelectStatement Inherits BoundStatement Public Sub New(syntax As SyntaxNode, expressionStatement As BoundExpressionStatement, exprPlaceholderOpt As BoundRValuePlaceholder, caseBlocks As ImmutableArray(Of BoundCaseBlock), recommendSwitchTable As Boolean, exitLabel As LabelSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.SelectStatement, syntax, hasErrors OrElse expressionStatement.NonNullAndHasErrors() OrElse exprPlaceholderOpt.NonNullAndHasErrors() OrElse caseBlocks.NonNullAndHasErrors()) Debug.Assert(expressionStatement IsNot Nothing, "Field 'expressionStatement' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(Not (caseBlocks.IsDefault), "Field 'caseBlocks' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(exitLabel IsNot Nothing, "Field 'exitLabel' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._ExpressionStatement = expressionStatement Me._ExprPlaceholderOpt = exprPlaceholderOpt Me._CaseBlocks = caseBlocks Me._RecommendSwitchTable = recommendSwitchTable Me._ExitLabel = exitLabel End Sub Private ReadOnly _ExpressionStatement As BoundExpressionStatement Public ReadOnly Property ExpressionStatement As BoundExpressionStatement Get Return _ExpressionStatement End Get End Property Private ReadOnly _ExprPlaceholderOpt As BoundRValuePlaceholder Public ReadOnly Property ExprPlaceholderOpt As BoundRValuePlaceholder Get Return _ExprPlaceholderOpt End Get End Property Private ReadOnly _CaseBlocks As ImmutableArray(Of BoundCaseBlock) Public ReadOnly Property CaseBlocks As ImmutableArray(Of BoundCaseBlock) Get Return _CaseBlocks End Get End Property Private ReadOnly _RecommendSwitchTable As Boolean Public ReadOnly Property RecommendSwitchTable As Boolean Get Return _RecommendSwitchTable End Get End Property Private ReadOnly _ExitLabel As LabelSymbol Public ReadOnly Property ExitLabel As LabelSymbol Get Return _ExitLabel End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitSelectStatement(Me) End Function Public Function Update(expressionStatement As BoundExpressionStatement, exprPlaceholderOpt As BoundRValuePlaceholder, caseBlocks As ImmutableArray(Of BoundCaseBlock), recommendSwitchTable As Boolean, exitLabel As LabelSymbol) As BoundSelectStatement If expressionStatement IsNot Me.ExpressionStatement OrElse exprPlaceholderOpt IsNot Me.ExprPlaceholderOpt OrElse caseBlocks <> Me.CaseBlocks OrElse recommendSwitchTable <> Me.RecommendSwitchTable OrElse exitLabel IsNot Me.ExitLabel Then Dim result = New BoundSelectStatement(Me.Syntax, expressionStatement, exprPlaceholderOpt, caseBlocks, recommendSwitchTable, exitLabel, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundCaseBlock Inherits BoundStatement Public Sub New(syntax As SyntaxNode, caseStatement As BoundCaseStatement, body As BoundBlock, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.CaseBlock, syntax, hasErrors OrElse caseStatement.NonNullAndHasErrors() OrElse body.NonNullAndHasErrors()) Debug.Assert(caseStatement IsNot Nothing, "Field 'caseStatement' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(body IsNot Nothing, "Field 'body' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._CaseStatement = caseStatement Me._Body = body End Sub Private ReadOnly _CaseStatement As BoundCaseStatement Public ReadOnly Property CaseStatement As BoundCaseStatement Get Return _CaseStatement End Get End Property Private ReadOnly _Body As BoundBlock Public ReadOnly Property Body As BoundBlock Get Return _Body End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitCaseBlock(Me) End Function Public Function Update(caseStatement As BoundCaseStatement, body As BoundBlock) As BoundCaseBlock If caseStatement IsNot Me.CaseStatement OrElse body IsNot Me.Body Then Dim result = New BoundCaseBlock(Me.Syntax, caseStatement, body, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundCaseStatement Inherits BoundStatement Public Sub New(syntax As SyntaxNode, caseClauses As ImmutableArray(Of BoundCaseClause), conditionOpt As BoundExpression, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.CaseStatement, syntax, hasErrors OrElse caseClauses.NonNullAndHasErrors() OrElse conditionOpt.NonNullAndHasErrors()) Debug.Assert(Not (caseClauses.IsDefault), "Field 'caseClauses' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._CaseClauses = caseClauses Me._ConditionOpt = conditionOpt End Sub Private ReadOnly _CaseClauses As ImmutableArray(Of BoundCaseClause) Public ReadOnly Property CaseClauses As ImmutableArray(Of BoundCaseClause) Get Return _CaseClauses End Get End Property Private ReadOnly _ConditionOpt As BoundExpression Public ReadOnly Property ConditionOpt As BoundExpression Get Return _ConditionOpt End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitCaseStatement(Me) End Function Public Function Update(caseClauses As ImmutableArray(Of BoundCaseClause), conditionOpt As BoundExpression) As BoundCaseStatement If caseClauses <> Me.CaseClauses OrElse conditionOpt IsNot Me.ConditionOpt Then Dim result = New BoundCaseStatement(Me.Syntax, caseClauses, conditionOpt, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend MustInherit Class BoundCaseClause Inherits BoundNode Protected Sub New(kind As BoundKind, syntax as SyntaxNode, hasErrors As Boolean) MyBase.New(kind, syntax, hasErrors) End Sub Protected Sub New(kind As BoundKind, syntax as SyntaxNode) MyBase.New(kind, syntax) End Sub End Class Partial Friend MustInherit Class BoundSingleValueCaseClause Inherits BoundCaseClause Protected Sub New(kind As BoundKind, syntax as SyntaxNode, valueOpt As BoundExpression, conditionOpt As BoundExpression, Optional hasErrors As Boolean = False) MyBase.New(kind, syntax, hasErrors) Me._ValueOpt = valueOpt Me._ConditionOpt = conditionOpt End Sub Private ReadOnly _ValueOpt As BoundExpression Public ReadOnly Property ValueOpt As BoundExpression Get Return _ValueOpt End Get End Property Private ReadOnly _ConditionOpt As BoundExpression Public ReadOnly Property ConditionOpt As BoundExpression Get Return _ConditionOpt End Get End Property End Class Partial Friend NotInheritable Class BoundSimpleCaseClause Inherits BoundSingleValueCaseClause Public Sub New(syntax As SyntaxNode, valueOpt As BoundExpression, conditionOpt As BoundExpression, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.SimpleCaseClause, syntax, valueOpt, conditionOpt, hasErrors OrElse valueOpt.NonNullAndHasErrors() OrElse conditionOpt.NonNullAndHasErrors()) Validate() End Sub Private Partial Sub Validate() End Sub <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitSimpleCaseClause(Me) End Function Public Function Update(valueOpt As BoundExpression, conditionOpt As BoundExpression) As BoundSimpleCaseClause If valueOpt IsNot Me.ValueOpt OrElse conditionOpt IsNot Me.ConditionOpt Then Dim result = New BoundSimpleCaseClause(Me.Syntax, valueOpt, conditionOpt, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundRangeCaseClause Inherits BoundCaseClause Public Sub New(syntax As SyntaxNode, lowerBoundOpt As BoundExpression, upperBoundOpt As BoundExpression, lowerBoundConditionOpt As BoundExpression, upperBoundConditionOpt As BoundExpression, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.RangeCaseClause, syntax, hasErrors OrElse lowerBoundOpt.NonNullAndHasErrors() OrElse upperBoundOpt.NonNullAndHasErrors() OrElse lowerBoundConditionOpt.NonNullAndHasErrors() OrElse upperBoundConditionOpt.NonNullAndHasErrors()) Me._LowerBoundOpt = lowerBoundOpt Me._UpperBoundOpt = upperBoundOpt Me._LowerBoundConditionOpt = lowerBoundConditionOpt Me._UpperBoundConditionOpt = upperBoundConditionOpt Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _LowerBoundOpt As BoundExpression Public ReadOnly Property LowerBoundOpt As BoundExpression Get Return _LowerBoundOpt End Get End Property Private ReadOnly _UpperBoundOpt As BoundExpression Public ReadOnly Property UpperBoundOpt As BoundExpression Get Return _UpperBoundOpt End Get End Property Private ReadOnly _LowerBoundConditionOpt As BoundExpression Public ReadOnly Property LowerBoundConditionOpt As BoundExpression Get Return _LowerBoundConditionOpt End Get End Property Private ReadOnly _UpperBoundConditionOpt As BoundExpression Public ReadOnly Property UpperBoundConditionOpt As BoundExpression Get Return _UpperBoundConditionOpt End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitRangeCaseClause(Me) End Function Public Function Update(lowerBoundOpt As BoundExpression, upperBoundOpt As BoundExpression, lowerBoundConditionOpt As BoundExpression, upperBoundConditionOpt As BoundExpression) As BoundRangeCaseClause If lowerBoundOpt IsNot Me.LowerBoundOpt OrElse upperBoundOpt IsNot Me.UpperBoundOpt OrElse lowerBoundConditionOpt IsNot Me.LowerBoundConditionOpt OrElse upperBoundConditionOpt IsNot Me.UpperBoundConditionOpt Then Dim result = New BoundRangeCaseClause(Me.Syntax, lowerBoundOpt, upperBoundOpt, lowerBoundConditionOpt, upperBoundConditionOpt, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundRelationalCaseClause Inherits BoundSingleValueCaseClause Public Sub New(syntax As SyntaxNode, operatorKind As BinaryOperatorKind, valueOpt As BoundExpression, conditionOpt As BoundExpression, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.RelationalCaseClause, syntax, valueOpt, conditionOpt, hasErrors OrElse valueOpt.NonNullAndHasErrors() OrElse conditionOpt.NonNullAndHasErrors()) Me._OperatorKind = operatorKind Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _OperatorKind As BinaryOperatorKind Public ReadOnly Property OperatorKind As BinaryOperatorKind Get Return _OperatorKind End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitRelationalCaseClause(Me) End Function Public Function Update(operatorKind As BinaryOperatorKind, valueOpt As BoundExpression, conditionOpt As BoundExpression) As BoundRelationalCaseClause If operatorKind <> Me.OperatorKind OrElse valueOpt IsNot Me.ValueOpt OrElse conditionOpt IsNot Me.ConditionOpt Then Dim result = New BoundRelationalCaseClause(Me.Syntax, operatorKind, valueOpt, conditionOpt, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend MustInherit Class BoundLoopStatement Inherits BoundStatement Protected Sub New(kind As BoundKind, syntax as SyntaxNode, continueLabel As LabelSymbol, exitLabel As LabelSymbol, hasErrors As Boolean) MyBase.New(kind, syntax, hasErrors) Debug.Assert(continueLabel IsNot Nothing, "Field 'continueLabel' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(exitLabel IsNot Nothing, "Field 'exitLabel' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._ContinueLabel = continueLabel Me._ExitLabel = exitLabel End Sub Protected Sub New(kind As BoundKind, syntax as SyntaxNode, continueLabel As LabelSymbol, exitLabel As LabelSymbol) MyBase.New(kind, syntax) Debug.Assert(continueLabel IsNot Nothing, "Field 'continueLabel' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(exitLabel IsNot Nothing, "Field 'exitLabel' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._ContinueLabel = continueLabel Me._ExitLabel = exitLabel End Sub Private ReadOnly _ContinueLabel As LabelSymbol Public ReadOnly Property ContinueLabel As LabelSymbol Get Return _ContinueLabel End Get End Property Private ReadOnly _ExitLabel As LabelSymbol Public ReadOnly Property ExitLabel As LabelSymbol Get Return _ExitLabel End Get End Property End Class Partial Friend NotInheritable Class BoundDoLoopStatement Inherits BoundLoopStatement Public Sub New(syntax As SyntaxNode, topConditionOpt As BoundExpression, bottomConditionOpt As BoundExpression, topConditionIsUntil As Boolean, bottomConditionIsUntil As Boolean, body As BoundStatement, continueLabel As LabelSymbol, exitLabel As LabelSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.DoLoopStatement, syntax, continueLabel, exitLabel, hasErrors OrElse topConditionOpt.NonNullAndHasErrors() OrElse bottomConditionOpt.NonNullAndHasErrors() OrElse body.NonNullAndHasErrors()) Debug.Assert(body IsNot Nothing, "Field 'body' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(continueLabel IsNot Nothing, "Field 'continueLabel' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(exitLabel IsNot Nothing, "Field 'exitLabel' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._TopConditionOpt = topConditionOpt Me._BottomConditionOpt = bottomConditionOpt Me._TopConditionIsUntil = topConditionIsUntil Me._BottomConditionIsUntil = bottomConditionIsUntil Me._Body = body End Sub Private ReadOnly _TopConditionOpt As BoundExpression Public ReadOnly Property TopConditionOpt As BoundExpression Get Return _TopConditionOpt End Get End Property Private ReadOnly _BottomConditionOpt As BoundExpression Public ReadOnly Property BottomConditionOpt As BoundExpression Get Return _BottomConditionOpt End Get End Property Private ReadOnly _TopConditionIsUntil As Boolean Public ReadOnly Property TopConditionIsUntil As Boolean Get Return _TopConditionIsUntil End Get End Property Private ReadOnly _BottomConditionIsUntil As Boolean Public ReadOnly Property BottomConditionIsUntil As Boolean Get Return _BottomConditionIsUntil End Get End Property Private ReadOnly _Body As BoundStatement Public ReadOnly Property Body As BoundStatement Get Return _Body End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitDoLoopStatement(Me) End Function Public Function Update(topConditionOpt As BoundExpression, bottomConditionOpt As BoundExpression, topConditionIsUntil As Boolean, bottomConditionIsUntil As Boolean, body As BoundStatement, continueLabel As LabelSymbol, exitLabel As LabelSymbol) As BoundDoLoopStatement If topConditionOpt IsNot Me.TopConditionOpt OrElse bottomConditionOpt IsNot Me.BottomConditionOpt OrElse topConditionIsUntil <> Me.TopConditionIsUntil OrElse bottomConditionIsUntil <> Me.BottomConditionIsUntil OrElse body IsNot Me.Body OrElse continueLabel IsNot Me.ContinueLabel OrElse exitLabel IsNot Me.ExitLabel Then Dim result = New BoundDoLoopStatement(Me.Syntax, topConditionOpt, bottomConditionOpt, topConditionIsUntil, bottomConditionIsUntil, body, continueLabel, exitLabel, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundWhileStatement Inherits BoundLoopStatement Public Sub New(syntax As SyntaxNode, condition As BoundExpression, body As BoundStatement, continueLabel As LabelSymbol, exitLabel As LabelSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.WhileStatement, syntax, continueLabel, exitLabel, hasErrors OrElse condition.NonNullAndHasErrors() OrElse body.NonNullAndHasErrors()) Debug.Assert(condition IsNot Nothing, "Field 'condition' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(body IsNot Nothing, "Field 'body' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(continueLabel IsNot Nothing, "Field 'continueLabel' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(exitLabel IsNot Nothing, "Field 'exitLabel' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Condition = condition Me._Body = body End Sub Private ReadOnly _Condition As BoundExpression Public ReadOnly Property Condition As BoundExpression Get Return _Condition End Get End Property Private ReadOnly _Body As BoundStatement Public ReadOnly Property Body As BoundStatement Get Return _Body End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitWhileStatement(Me) End Function Public Function Update(condition As BoundExpression, body As BoundStatement, continueLabel As LabelSymbol, exitLabel As LabelSymbol) As BoundWhileStatement If condition IsNot Me.Condition OrElse body IsNot Me.Body OrElse continueLabel IsNot Me.ContinueLabel OrElse exitLabel IsNot Me.ExitLabel Then Dim result = New BoundWhileStatement(Me.Syntax, condition, body, continueLabel, exitLabel, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend MustInherit Class BoundForStatement Inherits BoundLoopStatement Protected Sub New(kind As BoundKind, syntax as SyntaxNode, declaredOrInferredLocalOpt As LocalSymbol, controlVariable As BoundExpression, body As BoundStatement, nextVariablesOpt As ImmutableArray(Of BoundExpression), continueLabel As LabelSymbol, exitLabel As LabelSymbol, Optional hasErrors As Boolean = False) MyBase.New(kind, syntax, continueLabel, exitLabel, hasErrors) Debug.Assert(controlVariable IsNot Nothing, "Field 'controlVariable' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(body IsNot Nothing, "Field 'body' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(continueLabel IsNot Nothing, "Field 'continueLabel' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(exitLabel IsNot Nothing, "Field 'exitLabel' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._DeclaredOrInferredLocalOpt = declaredOrInferredLocalOpt Me._ControlVariable = controlVariable Me._Body = body Me._NextVariablesOpt = nextVariablesOpt End Sub Private ReadOnly _DeclaredOrInferredLocalOpt As LocalSymbol Public ReadOnly Property DeclaredOrInferredLocalOpt As LocalSymbol Get Return _DeclaredOrInferredLocalOpt End Get End Property Private ReadOnly _ControlVariable As BoundExpression Public ReadOnly Property ControlVariable As BoundExpression Get Return _ControlVariable End Get End Property Private ReadOnly _Body As BoundStatement Public ReadOnly Property Body As BoundStatement Get Return _Body End Get End Property Private ReadOnly _NextVariablesOpt As ImmutableArray(Of BoundExpression) Public ReadOnly Property NextVariablesOpt As ImmutableArray(Of BoundExpression) Get Return _NextVariablesOpt End Get End Property End Class Partial Friend NotInheritable Class BoundForToUserDefinedOperators Inherits BoundNode Public Sub New(syntax As SyntaxNode, leftOperandPlaceholder As BoundRValuePlaceholder, rightOperandPlaceholder As BoundRValuePlaceholder, addition As BoundUserDefinedBinaryOperator, subtraction As BoundUserDefinedBinaryOperator, lessThanOrEqual As BoundExpression, greaterThanOrEqual As BoundExpression, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.ForToUserDefinedOperators, syntax, hasErrors OrElse leftOperandPlaceholder.NonNullAndHasErrors() OrElse rightOperandPlaceholder.NonNullAndHasErrors() OrElse addition.NonNullAndHasErrors() OrElse subtraction.NonNullAndHasErrors() OrElse lessThanOrEqual.NonNullAndHasErrors() OrElse greaterThanOrEqual.NonNullAndHasErrors()) Debug.Assert(leftOperandPlaceholder IsNot Nothing, "Field 'leftOperandPlaceholder' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(rightOperandPlaceholder IsNot Nothing, "Field 'rightOperandPlaceholder' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(addition IsNot Nothing, "Field 'addition' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(subtraction IsNot Nothing, "Field 'subtraction' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(lessThanOrEqual IsNot Nothing, "Field 'lessThanOrEqual' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(greaterThanOrEqual IsNot Nothing, "Field 'greaterThanOrEqual' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._LeftOperandPlaceholder = leftOperandPlaceholder Me._RightOperandPlaceholder = rightOperandPlaceholder Me._Addition = addition Me._Subtraction = subtraction Me._LessThanOrEqual = lessThanOrEqual Me._GreaterThanOrEqual = greaterThanOrEqual Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _LeftOperandPlaceholder As BoundRValuePlaceholder Public ReadOnly Property LeftOperandPlaceholder As BoundRValuePlaceholder Get Return _LeftOperandPlaceholder End Get End Property Private ReadOnly _RightOperandPlaceholder As BoundRValuePlaceholder Public ReadOnly Property RightOperandPlaceholder As BoundRValuePlaceholder Get Return _RightOperandPlaceholder End Get End Property Private ReadOnly _Addition As BoundUserDefinedBinaryOperator Public ReadOnly Property Addition As BoundUserDefinedBinaryOperator Get Return _Addition End Get End Property Private ReadOnly _Subtraction As BoundUserDefinedBinaryOperator Public ReadOnly Property Subtraction As BoundUserDefinedBinaryOperator Get Return _Subtraction End Get End Property Private ReadOnly _LessThanOrEqual As BoundExpression Public ReadOnly Property LessThanOrEqual As BoundExpression Get Return _LessThanOrEqual End Get End Property Private ReadOnly _GreaterThanOrEqual As BoundExpression Public ReadOnly Property GreaterThanOrEqual As BoundExpression Get Return _GreaterThanOrEqual End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitForToUserDefinedOperators(Me) End Function Public Function Update(leftOperandPlaceholder As BoundRValuePlaceholder, rightOperandPlaceholder As BoundRValuePlaceholder, addition As BoundUserDefinedBinaryOperator, subtraction As BoundUserDefinedBinaryOperator, lessThanOrEqual As BoundExpression, greaterThanOrEqual As BoundExpression) As BoundForToUserDefinedOperators If leftOperandPlaceholder IsNot Me.LeftOperandPlaceholder OrElse rightOperandPlaceholder IsNot Me.RightOperandPlaceholder OrElse addition IsNot Me.Addition OrElse subtraction IsNot Me.Subtraction OrElse lessThanOrEqual IsNot Me.LessThanOrEqual OrElse greaterThanOrEqual IsNot Me.GreaterThanOrEqual Then Dim result = New BoundForToUserDefinedOperators(Me.Syntax, leftOperandPlaceholder, rightOperandPlaceholder, addition, subtraction, lessThanOrEqual, greaterThanOrEqual, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundForToStatement Inherits BoundForStatement Public Sub New(syntax As SyntaxNode, initialValue As BoundExpression, limitValue As BoundExpression, stepValue As BoundExpression, checked As Boolean, operatorsOpt As BoundForToUserDefinedOperators, declaredOrInferredLocalOpt As LocalSymbol, controlVariable As BoundExpression, body As BoundStatement, nextVariablesOpt As ImmutableArray(Of BoundExpression), continueLabel As LabelSymbol, exitLabel As LabelSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.ForToStatement, syntax, declaredOrInferredLocalOpt, controlVariable, body, nextVariablesOpt, continueLabel, exitLabel, hasErrors OrElse initialValue.NonNullAndHasErrors() OrElse limitValue.NonNullAndHasErrors() OrElse stepValue.NonNullAndHasErrors() OrElse operatorsOpt.NonNullAndHasErrors() OrElse controlVariable.NonNullAndHasErrors() OrElse body.NonNullAndHasErrors() OrElse nextVariablesOpt.NonNullAndHasErrors()) Debug.Assert(initialValue IsNot Nothing, "Field 'initialValue' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(limitValue IsNot Nothing, "Field 'limitValue' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(stepValue IsNot Nothing, "Field 'stepValue' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(controlVariable IsNot Nothing, "Field 'controlVariable' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(body IsNot Nothing, "Field 'body' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(continueLabel IsNot Nothing, "Field 'continueLabel' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(exitLabel IsNot Nothing, "Field 'exitLabel' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._InitialValue = initialValue Me._LimitValue = limitValue Me._StepValue = stepValue Me._Checked = checked Me._OperatorsOpt = operatorsOpt End Sub Private ReadOnly _InitialValue As BoundExpression Public ReadOnly Property InitialValue As BoundExpression Get Return _InitialValue End Get End Property Private ReadOnly _LimitValue As BoundExpression Public ReadOnly Property LimitValue As BoundExpression Get Return _LimitValue End Get End Property Private ReadOnly _StepValue As BoundExpression Public ReadOnly Property StepValue As BoundExpression Get Return _StepValue End Get End Property Private ReadOnly _Checked As Boolean Public ReadOnly Property Checked As Boolean Get Return _Checked End Get End Property Private ReadOnly _OperatorsOpt As BoundForToUserDefinedOperators Public ReadOnly Property OperatorsOpt As BoundForToUserDefinedOperators Get Return _OperatorsOpt End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitForToStatement(Me) End Function Public Function Update(initialValue As BoundExpression, limitValue As BoundExpression, stepValue As BoundExpression, checked As Boolean, operatorsOpt As BoundForToUserDefinedOperators, declaredOrInferredLocalOpt As LocalSymbol, controlVariable As BoundExpression, body As BoundStatement, nextVariablesOpt As ImmutableArray(Of BoundExpression), continueLabel As LabelSymbol, exitLabel As LabelSymbol) As BoundForToStatement If initialValue IsNot Me.InitialValue OrElse limitValue IsNot Me.LimitValue OrElse stepValue IsNot Me.StepValue OrElse checked <> Me.Checked OrElse operatorsOpt IsNot Me.OperatorsOpt OrElse declaredOrInferredLocalOpt IsNot Me.DeclaredOrInferredLocalOpt OrElse controlVariable IsNot Me.ControlVariable OrElse body IsNot Me.Body OrElse nextVariablesOpt <> Me.NextVariablesOpt OrElse continueLabel IsNot Me.ContinueLabel OrElse exitLabel IsNot Me.ExitLabel Then Dim result = New BoundForToStatement(Me.Syntax, initialValue, limitValue, stepValue, checked, operatorsOpt, declaredOrInferredLocalOpt, controlVariable, body, nextVariablesOpt, continueLabel, exitLabel, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundForEachStatement Inherits BoundForStatement Public Sub New(syntax As SyntaxNode, collection As BoundExpression, enumeratorInfo As ForEachEnumeratorInfo, declaredOrInferredLocalOpt As LocalSymbol, controlVariable As BoundExpression, body As BoundStatement, nextVariablesOpt As ImmutableArray(Of BoundExpression), continueLabel As LabelSymbol, exitLabel As LabelSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.ForEachStatement, syntax, declaredOrInferredLocalOpt, controlVariable, body, nextVariablesOpt, continueLabel, exitLabel, hasErrors OrElse collection.NonNullAndHasErrors() OrElse controlVariable.NonNullAndHasErrors() OrElse body.NonNullAndHasErrors() OrElse nextVariablesOpt.NonNullAndHasErrors()) Debug.Assert(collection IsNot Nothing, "Field 'collection' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(enumeratorInfo IsNot Nothing, "Field 'enumeratorInfo' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(controlVariable IsNot Nothing, "Field 'controlVariable' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(body IsNot Nothing, "Field 'body' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(continueLabel IsNot Nothing, "Field 'continueLabel' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(exitLabel IsNot Nothing, "Field 'exitLabel' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Collection = collection Me._EnumeratorInfo = enumeratorInfo End Sub Private ReadOnly _Collection As BoundExpression Public ReadOnly Property Collection As BoundExpression Get Return _Collection End Get End Property Private ReadOnly _EnumeratorInfo As ForEachEnumeratorInfo Public ReadOnly Property EnumeratorInfo As ForEachEnumeratorInfo Get Return _EnumeratorInfo End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitForEachStatement(Me) End Function Public Function Update(collection As BoundExpression, enumeratorInfo As ForEachEnumeratorInfo, declaredOrInferredLocalOpt As LocalSymbol, controlVariable As BoundExpression, body As BoundStatement, nextVariablesOpt As ImmutableArray(Of BoundExpression), continueLabel As LabelSymbol, exitLabel As LabelSymbol) As BoundForEachStatement If collection IsNot Me.Collection OrElse enumeratorInfo IsNot Me.EnumeratorInfo OrElse declaredOrInferredLocalOpt IsNot Me.DeclaredOrInferredLocalOpt OrElse controlVariable IsNot Me.ControlVariable OrElse body IsNot Me.Body OrElse nextVariablesOpt <> Me.NextVariablesOpt OrElse continueLabel IsNot Me.ContinueLabel OrElse exitLabel IsNot Me.ExitLabel Then Dim result = New BoundForEachStatement(Me.Syntax, collection, enumeratorInfo, declaredOrInferredLocalOpt, controlVariable, body, nextVariablesOpt, continueLabel, exitLabel, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundExitStatement Inherits BoundStatement Public Sub New(syntax As SyntaxNode, label As LabelSymbol, hasErrors As Boolean) MyBase.New(BoundKind.ExitStatement, syntax, hasErrors) Debug.Assert(label IsNot Nothing, "Field 'label' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Label = label End Sub Public Sub New(syntax As SyntaxNode, label As LabelSymbol) MyBase.New(BoundKind.ExitStatement, syntax) Debug.Assert(label IsNot Nothing, "Field 'label' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Label = label End Sub Private ReadOnly _Label As LabelSymbol Public ReadOnly Property Label As LabelSymbol Get Return _Label End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitExitStatement(Me) End Function Public Function Update(label As LabelSymbol) As BoundExitStatement If label IsNot Me.Label Then Dim result = New BoundExitStatement(Me.Syntax, label, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundContinueStatement Inherits BoundStatement Public Sub New(syntax As SyntaxNode, label As LabelSymbol, hasErrors As Boolean) MyBase.New(BoundKind.ContinueStatement, syntax, hasErrors) Debug.Assert(label IsNot Nothing, "Field 'label' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Label = label End Sub Public Sub New(syntax As SyntaxNode, label As LabelSymbol) MyBase.New(BoundKind.ContinueStatement, syntax) Debug.Assert(label IsNot Nothing, "Field 'label' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Label = label End Sub Private ReadOnly _Label As LabelSymbol Public ReadOnly Property Label As LabelSymbol Get Return _Label End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitContinueStatement(Me) End Function Public Function Update(label As LabelSymbol) As BoundContinueStatement If label IsNot Me.Label Then Dim result = New BoundContinueStatement(Me.Syntax, label, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundTryStatement Inherits BoundStatement Public Sub New(syntax As SyntaxNode, tryBlock As BoundBlock, catchBlocks As ImmutableArray(Of BoundCatchBlock), finallyBlockOpt As BoundBlock, exitLabelOpt As LabelSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.TryStatement, syntax, hasErrors OrElse tryBlock.NonNullAndHasErrors() OrElse catchBlocks.NonNullAndHasErrors() OrElse finallyBlockOpt.NonNullAndHasErrors()) Debug.Assert(tryBlock IsNot Nothing, "Field 'tryBlock' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(Not (catchBlocks.IsDefault), "Field 'catchBlocks' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._TryBlock = tryBlock Me._CatchBlocks = catchBlocks Me._FinallyBlockOpt = finallyBlockOpt Me._ExitLabelOpt = exitLabelOpt End Sub Private ReadOnly _TryBlock As BoundBlock Public ReadOnly Property TryBlock As BoundBlock Get Return _TryBlock End Get End Property Private ReadOnly _CatchBlocks As ImmutableArray(Of BoundCatchBlock) Public ReadOnly Property CatchBlocks As ImmutableArray(Of BoundCatchBlock) Get Return _CatchBlocks End Get End Property Private ReadOnly _FinallyBlockOpt As BoundBlock Public ReadOnly Property FinallyBlockOpt As BoundBlock Get Return _FinallyBlockOpt End Get End Property Private ReadOnly _ExitLabelOpt As LabelSymbol Public ReadOnly Property ExitLabelOpt As LabelSymbol Get Return _ExitLabelOpt End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitTryStatement(Me) End Function Public Function Update(tryBlock As BoundBlock, catchBlocks As ImmutableArray(Of BoundCatchBlock), finallyBlockOpt As BoundBlock, exitLabelOpt As LabelSymbol) As BoundTryStatement If tryBlock IsNot Me.TryBlock OrElse catchBlocks <> Me.CatchBlocks OrElse finallyBlockOpt IsNot Me.FinallyBlockOpt OrElse exitLabelOpt IsNot Me.ExitLabelOpt Then Dim result = New BoundTryStatement(Me.Syntax, tryBlock, catchBlocks, finallyBlockOpt, exitLabelOpt, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundCatchBlock Inherits BoundNode Public Sub New(syntax As SyntaxNode, localOpt As LocalSymbol, exceptionSourceOpt As BoundExpression, errorLineNumberOpt As BoundExpression, exceptionFilterOpt As BoundExpression, body As BoundBlock, isSynthesizedAsyncCatchAll As Boolean, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.CatchBlock, syntax, hasErrors OrElse exceptionSourceOpt.NonNullAndHasErrors() OrElse errorLineNumberOpt.NonNullAndHasErrors() OrElse exceptionFilterOpt.NonNullAndHasErrors() OrElse body.NonNullAndHasErrors()) Debug.Assert(body IsNot Nothing, "Field 'body' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._LocalOpt = localOpt Me._ExceptionSourceOpt = exceptionSourceOpt Me._ErrorLineNumberOpt = errorLineNumberOpt Me._ExceptionFilterOpt = exceptionFilterOpt Me._Body = body Me._IsSynthesizedAsyncCatchAll = isSynthesizedAsyncCatchAll End Sub Private ReadOnly _LocalOpt As LocalSymbol Public ReadOnly Property LocalOpt As LocalSymbol Get Return _LocalOpt End Get End Property Private ReadOnly _ExceptionSourceOpt As BoundExpression Public ReadOnly Property ExceptionSourceOpt As BoundExpression Get Return _ExceptionSourceOpt End Get End Property Private ReadOnly _ErrorLineNumberOpt As BoundExpression Public ReadOnly Property ErrorLineNumberOpt As BoundExpression Get Return _ErrorLineNumberOpt End Get End Property Private ReadOnly _ExceptionFilterOpt As BoundExpression Public ReadOnly Property ExceptionFilterOpt As BoundExpression Get Return _ExceptionFilterOpt End Get End Property Private ReadOnly _Body As BoundBlock Public ReadOnly Property Body As BoundBlock Get Return _Body End Get End Property Private ReadOnly _IsSynthesizedAsyncCatchAll As Boolean Public ReadOnly Property IsSynthesizedAsyncCatchAll As Boolean Get Return _IsSynthesizedAsyncCatchAll End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitCatchBlock(Me) End Function Public Function Update(localOpt As LocalSymbol, exceptionSourceOpt As BoundExpression, errorLineNumberOpt As BoundExpression, exceptionFilterOpt As BoundExpression, body As BoundBlock, isSynthesizedAsyncCatchAll As Boolean) As BoundCatchBlock If localOpt IsNot Me.LocalOpt OrElse exceptionSourceOpt IsNot Me.ExceptionSourceOpt OrElse errorLineNumberOpt IsNot Me.ErrorLineNumberOpt OrElse exceptionFilterOpt IsNot Me.ExceptionFilterOpt OrElse body IsNot Me.Body OrElse isSynthesizedAsyncCatchAll <> Me.IsSynthesizedAsyncCatchAll Then Dim result = New BoundCatchBlock(Me.Syntax, localOpt, exceptionSourceOpt, errorLineNumberOpt, exceptionFilterOpt, body, isSynthesizedAsyncCatchAll, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundLiteral Inherits BoundExpression Public Sub New(syntax As SyntaxNode, value As ConstantValue, type As TypeSymbol, hasErrors As Boolean) MyBase.New(BoundKind.Literal, syntax, type, hasErrors) Debug.Assert(value IsNot Nothing, "Field 'value' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Value = value Validate() End Sub Private Partial Sub Validate() End Sub Public Sub New(syntax As SyntaxNode, value As ConstantValue, type As TypeSymbol) MyBase.New(BoundKind.Literal, syntax, type) Debug.Assert(value IsNot Nothing, "Field 'value' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Value = value Validate() End Sub Private ReadOnly _Value As ConstantValue Public ReadOnly Property Value As ConstantValue Get Return _Value End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitLiteral(Me) End Function Public Function Update(value As ConstantValue, type As TypeSymbol) As BoundLiteral If value IsNot Me.Value OrElse type IsNot Me.Type Then Dim result = New BoundLiteral(Me.Syntax, value, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundMeReference Inherits BoundExpression Public Sub New(syntax As SyntaxNode, type As TypeSymbol, hasErrors As Boolean) MyBase.New(BoundKind.MeReference, syntax, type, hasErrors) Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") End Sub Public Sub New(syntax As SyntaxNode, type As TypeSymbol) MyBase.New(BoundKind.MeReference, syntax, type) Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") End Sub <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitMeReference(Me) End Function Public Function Update(type As TypeSymbol) As BoundMeReference If type IsNot Me.Type Then Dim result = New BoundMeReference(Me.Syntax, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundValueTypeMeReference Inherits BoundExpression Public Sub New(syntax As SyntaxNode, type As TypeSymbol, hasErrors As Boolean) MyBase.New(BoundKind.ValueTypeMeReference, syntax, type, hasErrors) Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Validate() End Sub Private Partial Sub Validate() End Sub Public Sub New(syntax As SyntaxNode, type As TypeSymbol) MyBase.New(BoundKind.ValueTypeMeReference, syntax, type) Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Validate() End Sub <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitValueTypeMeReference(Me) End Function Public Function Update(type As TypeSymbol) As BoundValueTypeMeReference If type IsNot Me.Type Then Dim result = New BoundValueTypeMeReference(Me.Syntax, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundMyBaseReference Inherits BoundExpression Public Sub New(syntax As SyntaxNode, type As TypeSymbol, hasErrors As Boolean) MyBase.New(BoundKind.MyBaseReference, syntax, type, hasErrors) Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") End Sub Public Sub New(syntax As SyntaxNode, type As TypeSymbol) MyBase.New(BoundKind.MyBaseReference, syntax, type) Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") End Sub <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitMyBaseReference(Me) End Function Public Function Update(type As TypeSymbol) As BoundMyBaseReference If type IsNot Me.Type Then Dim result = New BoundMyBaseReference(Me.Syntax, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundMyClassReference Inherits BoundExpression Public Sub New(syntax As SyntaxNode, type As TypeSymbol, hasErrors As Boolean) MyBase.New(BoundKind.MyClassReference, syntax, type, hasErrors) Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") End Sub Public Sub New(syntax As SyntaxNode, type As TypeSymbol) MyBase.New(BoundKind.MyClassReference, syntax, type) Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") End Sub <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitMyClassReference(Me) End Function Public Function Update(type As TypeSymbol) As BoundMyClassReference If type IsNot Me.Type Then Dim result = New BoundMyClassReference(Me.Syntax, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundPreviousSubmissionReference Inherits BoundExpression Public Sub New(syntax As SyntaxNode, sourceType As NamedTypeSymbol, type As TypeSymbol, hasErrors As Boolean) MyBase.New(BoundKind.PreviousSubmissionReference, syntax, type, hasErrors) Debug.Assert(sourceType IsNot Nothing, "Field 'sourceType' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._SourceType = sourceType End Sub Public Sub New(syntax As SyntaxNode, sourceType As NamedTypeSymbol, type As TypeSymbol) MyBase.New(BoundKind.PreviousSubmissionReference, syntax, type) Debug.Assert(sourceType IsNot Nothing, "Field 'sourceType' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._SourceType = sourceType End Sub Private ReadOnly _SourceType As NamedTypeSymbol Public ReadOnly Property SourceType As NamedTypeSymbol Get Return _SourceType End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitPreviousSubmissionReference(Me) End Function Public Function Update(sourceType As NamedTypeSymbol, type As TypeSymbol) As BoundPreviousSubmissionReference If sourceType IsNot Me.SourceType OrElse type IsNot Me.Type Then Dim result = New BoundPreviousSubmissionReference(Me.Syntax, sourceType, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundHostObjectMemberReference Inherits BoundExpression Public Sub New(syntax As SyntaxNode, type As TypeSymbol, hasErrors As Boolean) MyBase.New(BoundKind.HostObjectMemberReference, syntax, type, hasErrors) Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") End Sub Public Sub New(syntax As SyntaxNode, type As TypeSymbol) MyBase.New(BoundKind.HostObjectMemberReference, syntax, type) Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") End Sub <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitHostObjectMemberReference(Me) End Function Public Function Update(type As TypeSymbol) As BoundHostObjectMemberReference If type IsNot Me.Type Then Dim result = New BoundHostObjectMemberReference(Me.Syntax, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundLocal Inherits BoundExpression Public Sub New(syntax As SyntaxNode, localSymbol As LocalSymbol, isLValue As Boolean, type As TypeSymbol, hasErrors As Boolean) MyBase.New(BoundKind.Local, syntax, type, hasErrors) Debug.Assert(localSymbol IsNot Nothing, "Field 'localSymbol' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._LocalSymbol = localSymbol Me._IsLValue = isLValue Validate() End Sub Private Partial Sub Validate() End Sub Public Sub New(syntax As SyntaxNode, localSymbol As LocalSymbol, isLValue As Boolean, type As TypeSymbol) MyBase.New(BoundKind.Local, syntax, type) Debug.Assert(localSymbol IsNot Nothing, "Field 'localSymbol' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._LocalSymbol = localSymbol Me._IsLValue = isLValue Validate() End Sub Private ReadOnly _LocalSymbol As LocalSymbol Public ReadOnly Property LocalSymbol As LocalSymbol Get Return _LocalSymbol End Get End Property Private ReadOnly _IsLValue As Boolean Public Overrides ReadOnly Property IsLValue As Boolean Get Return _IsLValue End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitLocal(Me) End Function Public Function Update(localSymbol As LocalSymbol, isLValue As Boolean, type As TypeSymbol) As BoundLocal If localSymbol IsNot Me.LocalSymbol OrElse isLValue <> Me.IsLValue OrElse type IsNot Me.Type Then Dim result = New BoundLocal(Me.Syntax, localSymbol, isLValue, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundPseudoVariable Inherits BoundExpression Public Sub New(syntax As SyntaxNode, localSymbol As LocalSymbol, isLValue As Boolean, emitExpressions As PseudoVariableExpressions, type As TypeSymbol, hasErrors As Boolean) MyBase.New(BoundKind.PseudoVariable, syntax, type, hasErrors) Debug.Assert(localSymbol IsNot Nothing, "Field 'localSymbol' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(emitExpressions IsNot Nothing, "Field 'emitExpressions' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._LocalSymbol = localSymbol Me._IsLValue = isLValue Me._EmitExpressions = emitExpressions Validate() End Sub Private Partial Sub Validate() End Sub Public Sub New(syntax As SyntaxNode, localSymbol As LocalSymbol, isLValue As Boolean, emitExpressions As PseudoVariableExpressions, type As TypeSymbol) MyBase.New(BoundKind.PseudoVariable, syntax, type) Debug.Assert(localSymbol IsNot Nothing, "Field 'localSymbol' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(emitExpressions IsNot Nothing, "Field 'emitExpressions' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._LocalSymbol = localSymbol Me._IsLValue = isLValue Me._EmitExpressions = emitExpressions Validate() End Sub Private ReadOnly _LocalSymbol As LocalSymbol Public ReadOnly Property LocalSymbol As LocalSymbol Get Return _LocalSymbol End Get End Property Private ReadOnly _IsLValue As Boolean Public Overrides ReadOnly Property IsLValue As Boolean Get Return _IsLValue End Get End Property Private ReadOnly _EmitExpressions As PseudoVariableExpressions Public ReadOnly Property EmitExpressions As PseudoVariableExpressions Get Return _EmitExpressions End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitPseudoVariable(Me) End Function Public Function Update(localSymbol As LocalSymbol, isLValue As Boolean, emitExpressions As PseudoVariableExpressions, type As TypeSymbol) As BoundPseudoVariable If localSymbol IsNot Me.LocalSymbol OrElse isLValue <> Me.IsLValue OrElse emitExpressions IsNot Me.EmitExpressions OrElse type IsNot Me.Type Then Dim result = New BoundPseudoVariable(Me.Syntax, localSymbol, isLValue, emitExpressions, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundParameter Inherits BoundExpression Public Sub New(syntax As SyntaxNode, parameterSymbol As ParameterSymbol, isLValue As Boolean, suppressVirtualCalls As Boolean, type As TypeSymbol, hasErrors As Boolean) MyBase.New(BoundKind.Parameter, syntax, type, hasErrors) Debug.Assert(parameterSymbol IsNot Nothing, "Field 'parameterSymbol' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._ParameterSymbol = parameterSymbol Me._IsLValue = isLValue Me._SuppressVirtualCalls = suppressVirtualCalls End Sub Public Sub New(syntax As SyntaxNode, parameterSymbol As ParameterSymbol, isLValue As Boolean, suppressVirtualCalls As Boolean, type As TypeSymbol) MyBase.New(BoundKind.Parameter, syntax, type) Debug.Assert(parameterSymbol IsNot Nothing, "Field 'parameterSymbol' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._ParameterSymbol = parameterSymbol Me._IsLValue = isLValue Me._SuppressVirtualCalls = suppressVirtualCalls End Sub Private ReadOnly _ParameterSymbol As ParameterSymbol Public ReadOnly Property ParameterSymbol As ParameterSymbol Get Return _ParameterSymbol End Get End Property Private ReadOnly _IsLValue As Boolean Public Overrides ReadOnly Property IsLValue As Boolean Get Return _IsLValue End Get End Property Private ReadOnly _SuppressVirtualCalls As Boolean Public Overrides ReadOnly Property SuppressVirtualCalls As Boolean Get Return _SuppressVirtualCalls End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitParameter(Me) End Function Public Function Update(parameterSymbol As ParameterSymbol, isLValue As Boolean, suppressVirtualCalls As Boolean, type As TypeSymbol) As BoundParameter If parameterSymbol IsNot Me.ParameterSymbol OrElse isLValue <> Me.IsLValue OrElse suppressVirtualCalls <> Me.SuppressVirtualCalls OrElse type IsNot Me.Type Then Dim result = New BoundParameter(Me.Syntax, parameterSymbol, isLValue, suppressVirtualCalls, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundByRefArgumentPlaceholder Inherits BoundValuePlaceholderBase Public Sub New(syntax As SyntaxNode, isOut As Boolean, type As TypeSymbol, hasErrors As Boolean) MyBase.New(BoundKind.ByRefArgumentPlaceholder, syntax, type, hasErrors) Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._IsOut = isOut End Sub Public Sub New(syntax As SyntaxNode, isOut As Boolean, type As TypeSymbol) MyBase.New(BoundKind.ByRefArgumentPlaceholder, syntax, type) Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._IsOut = isOut End Sub Private ReadOnly _IsOut As Boolean Public ReadOnly Property IsOut As Boolean Get Return _IsOut End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitByRefArgumentPlaceholder(Me) End Function Public Function Update(isOut As Boolean, type As TypeSymbol) As BoundByRefArgumentPlaceholder If isOut <> Me.IsOut OrElse type IsNot Me.Type Then Dim result = New BoundByRefArgumentPlaceholder(Me.Syntax, isOut, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundByRefArgumentWithCopyBack Inherits BoundExpression Public Sub New(syntax As SyntaxNode, originalArgument As BoundExpression, inConversion As BoundExpression, inPlaceholder As BoundByRefArgumentPlaceholder, outConversion As BoundExpression, outPlaceholder As BoundRValuePlaceholder, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.ByRefArgumentWithCopyBack, syntax, type, hasErrors OrElse originalArgument.NonNullAndHasErrors() OrElse inConversion.NonNullAndHasErrors() OrElse inPlaceholder.NonNullAndHasErrors() OrElse outConversion.NonNullAndHasErrors() OrElse outPlaceholder.NonNullAndHasErrors()) Debug.Assert(originalArgument IsNot Nothing, "Field 'originalArgument' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(inConversion IsNot Nothing, "Field 'inConversion' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(inPlaceholder IsNot Nothing, "Field 'inPlaceholder' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(outConversion IsNot Nothing, "Field 'outConversion' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(outPlaceholder IsNot Nothing, "Field 'outPlaceholder' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._OriginalArgument = originalArgument Me._InConversion = inConversion Me._InPlaceholder = inPlaceholder Me._OutConversion = outConversion Me._OutPlaceholder = outPlaceholder Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _OriginalArgument As BoundExpression Public ReadOnly Property OriginalArgument As BoundExpression Get Return _OriginalArgument End Get End Property Private ReadOnly _InConversion As BoundExpression Public ReadOnly Property InConversion As BoundExpression Get Return _InConversion End Get End Property Private ReadOnly _InPlaceholder As BoundByRefArgumentPlaceholder Public ReadOnly Property InPlaceholder As BoundByRefArgumentPlaceholder Get Return _InPlaceholder End Get End Property Private ReadOnly _OutConversion As BoundExpression Public ReadOnly Property OutConversion As BoundExpression Get Return _OutConversion End Get End Property Private ReadOnly _OutPlaceholder As BoundRValuePlaceholder Public ReadOnly Property OutPlaceholder As BoundRValuePlaceholder Get Return _OutPlaceholder End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitByRefArgumentWithCopyBack(Me) End Function Public Function Update(originalArgument As BoundExpression, inConversion As BoundExpression, inPlaceholder As BoundByRefArgumentPlaceholder, outConversion As BoundExpression, outPlaceholder As BoundRValuePlaceholder, type As TypeSymbol) As BoundByRefArgumentWithCopyBack If originalArgument IsNot Me.OriginalArgument OrElse inConversion IsNot Me.InConversion OrElse inPlaceholder IsNot Me.InPlaceholder OrElse outConversion IsNot Me.OutConversion OrElse outPlaceholder IsNot Me.OutPlaceholder OrElse type IsNot Me.Type Then Dim result = New BoundByRefArgumentWithCopyBack(Me.Syntax, originalArgument, inConversion, inPlaceholder, outConversion, outPlaceholder, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundLateBoundArgumentSupportingAssignmentWithCapture Inherits BoundExpression Public Sub New(syntax As SyntaxNode, originalArgument As BoundExpression, localSymbol As SynthesizedLocal, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.LateBoundArgumentSupportingAssignmentWithCapture, syntax, type, hasErrors OrElse originalArgument.NonNullAndHasErrors()) Debug.Assert(originalArgument IsNot Nothing, "Field 'originalArgument' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(localSymbol IsNot Nothing, "Field 'localSymbol' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._OriginalArgument = originalArgument Me._LocalSymbol = localSymbol Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _OriginalArgument As BoundExpression Public ReadOnly Property OriginalArgument As BoundExpression Get Return _OriginalArgument End Get End Property Private ReadOnly _LocalSymbol As SynthesizedLocal Public ReadOnly Property LocalSymbol As SynthesizedLocal Get Return _LocalSymbol End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitLateBoundArgumentSupportingAssignmentWithCapture(Me) End Function Public Function Update(originalArgument As BoundExpression, localSymbol As SynthesizedLocal, type As TypeSymbol) As BoundLateBoundArgumentSupportingAssignmentWithCapture If originalArgument IsNot Me.OriginalArgument OrElse localSymbol IsNot Me.LocalSymbol OrElse type IsNot Me.Type Then Dim result = New BoundLateBoundArgumentSupportingAssignmentWithCapture(Me.Syntax, originalArgument, localSymbol, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundLabelStatement Inherits BoundStatement Public Sub New(syntax As SyntaxNode, label As LabelSymbol, hasErrors As Boolean) MyBase.New(BoundKind.LabelStatement, syntax, hasErrors) Debug.Assert(label IsNot Nothing, "Field 'label' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Label = label End Sub Public Sub New(syntax As SyntaxNode, label As LabelSymbol) MyBase.New(BoundKind.LabelStatement, syntax) Debug.Assert(label IsNot Nothing, "Field 'label' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Label = label End Sub Private ReadOnly _Label As LabelSymbol Public ReadOnly Property Label As LabelSymbol Get Return _Label End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitLabelStatement(Me) End Function Public Function Update(label As LabelSymbol) As BoundLabelStatement If label IsNot Me.Label Then Dim result = New BoundLabelStatement(Me.Syntax, label, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundLabel Inherits BoundExpression Public Sub New(syntax As SyntaxNode, label As LabelSymbol, type As TypeSymbol, hasErrors As Boolean) MyBase.New(BoundKind.Label, syntax, type, hasErrors) Debug.Assert(label IsNot Nothing, "Field 'label' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Label = label End Sub Public Sub New(syntax As SyntaxNode, label As LabelSymbol, type As TypeSymbol) MyBase.New(BoundKind.Label, syntax, type) Debug.Assert(label IsNot Nothing, "Field 'label' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Label = label End Sub Private ReadOnly _Label As LabelSymbol Public ReadOnly Property Label As LabelSymbol Get Return _Label End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitLabel(Me) End Function Public Function Update(label As LabelSymbol, type As TypeSymbol) As BoundLabel If label IsNot Me.Label OrElse type IsNot Me.Type Then Dim result = New BoundLabel(Me.Syntax, label, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundGotoStatement Inherits BoundStatement Public Sub New(syntax As SyntaxNode, label As LabelSymbol, labelExpressionOpt As BoundLabel, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.GotoStatement, syntax, hasErrors OrElse labelExpressionOpt.NonNullAndHasErrors()) Debug.Assert(label IsNot Nothing, "Field 'label' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Label = label Me._LabelExpressionOpt = labelExpressionOpt End Sub Private ReadOnly _Label As LabelSymbol Public ReadOnly Property Label As LabelSymbol Get Return _Label End Get End Property Private ReadOnly _LabelExpressionOpt As BoundLabel Public ReadOnly Property LabelExpressionOpt As BoundLabel Get Return _LabelExpressionOpt End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitGotoStatement(Me) End Function Public Function Update(label As LabelSymbol, labelExpressionOpt As BoundLabel) As BoundGotoStatement If label IsNot Me.Label OrElse labelExpressionOpt IsNot Me.LabelExpressionOpt Then Dim result = New BoundGotoStatement(Me.Syntax, label, labelExpressionOpt, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundStatementList Inherits BoundStatement Public Sub New(syntax As SyntaxNode, statements As ImmutableArray(Of BoundStatement), Optional hasErrors As Boolean = False) MyBase.New(BoundKind.StatementList, syntax, hasErrors OrElse statements.NonNullAndHasErrors()) Debug.Assert(Not (statements.IsDefault), "Field 'statements' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Statements = statements End Sub Private ReadOnly _Statements As ImmutableArray(Of BoundStatement) Public ReadOnly Property Statements As ImmutableArray(Of BoundStatement) Get Return _Statements End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitStatementList(Me) End Function Public Function Update(statements As ImmutableArray(Of BoundStatement)) As BoundStatementList If statements <> Me.Statements Then Dim result = New BoundStatementList(Me.Syntax, statements, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundConditionalGoto Inherits BoundStatement Public Sub New(syntax As SyntaxNode, condition As BoundExpression, jumpIfTrue As Boolean, label As LabelSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.ConditionalGoto, syntax, hasErrors OrElse condition.NonNullAndHasErrors()) Debug.Assert(condition IsNot Nothing, "Field 'condition' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(label IsNot Nothing, "Field 'label' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Condition = condition Me._JumpIfTrue = jumpIfTrue Me._Label = label End Sub Private ReadOnly _Condition As BoundExpression Public ReadOnly Property Condition As BoundExpression Get Return _Condition End Get End Property Private ReadOnly _JumpIfTrue As Boolean Public ReadOnly Property JumpIfTrue As Boolean Get Return _JumpIfTrue End Get End Property Private ReadOnly _Label As LabelSymbol Public ReadOnly Property Label As LabelSymbol Get Return _Label End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitConditionalGoto(Me) End Function Public Function Update(condition As BoundExpression, jumpIfTrue As Boolean, label As LabelSymbol) As BoundConditionalGoto If condition IsNot Me.Condition OrElse jumpIfTrue <> Me.JumpIfTrue OrElse label IsNot Me.Label Then Dim result = New BoundConditionalGoto(Me.Syntax, condition, jumpIfTrue, label, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundWithStatement Inherits BoundStatement Public Sub New(syntax As SyntaxNode, originalExpression As BoundExpression, body As BoundBlock, binder As WithBlockBinder, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.WithStatement, syntax, hasErrors OrElse originalExpression.NonNullAndHasErrors() OrElse body.NonNullAndHasErrors()) Debug.Assert(originalExpression IsNot Nothing, "Field 'originalExpression' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(body IsNot Nothing, "Field 'body' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(binder IsNot Nothing, "Field 'binder' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._OriginalExpression = originalExpression Me._Body = body Me._Binder = binder End Sub Private ReadOnly _OriginalExpression As BoundExpression Public ReadOnly Property OriginalExpression As BoundExpression Get Return _OriginalExpression End Get End Property Private ReadOnly _Body As BoundBlock Public ReadOnly Property Body As BoundBlock Get Return _Body End Get End Property Private ReadOnly _Binder As WithBlockBinder Public ReadOnly Property Binder As WithBlockBinder Get Return _Binder End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitWithStatement(Me) End Function Public Function Update(originalExpression As BoundExpression, body As BoundBlock, binder As WithBlockBinder) As BoundWithStatement If originalExpression IsNot Me.OriginalExpression OrElse body IsNot Me.Body OrElse binder IsNot Me.Binder Then Dim result = New BoundWithStatement(Me.Syntax, originalExpression, body, binder, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class UnboundLambda Inherits BoundExpression Public Sub New(syntax As SyntaxNode, binder As Binder, flags As SourceMemberFlags, parameters As ImmutableArray(Of ParameterSymbol), returnType As TypeSymbol, bindingCache As UnboundLambda.UnboundLambdaBindingCache, hasErrors As Boolean) MyBase.New(BoundKind.UnboundLambda, syntax, Nothing, hasErrors) Debug.Assert(binder IsNot Nothing, "Field 'binder' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(Not (parameters.IsDefault), "Field 'parameters' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(bindingCache IsNot Nothing, "Field 'bindingCache' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Binder = binder Me._Flags = flags Me._Parameters = parameters Me._ReturnType = returnType Me._BindingCache = bindingCache Validate() End Sub Private Partial Sub Validate() End Sub Public Sub New(syntax As SyntaxNode, binder As Binder, flags As SourceMemberFlags, parameters As ImmutableArray(Of ParameterSymbol), returnType As TypeSymbol, bindingCache As UnboundLambda.UnboundLambdaBindingCache) MyBase.New(BoundKind.UnboundLambda, syntax, Nothing) Debug.Assert(binder IsNot Nothing, "Field 'binder' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(Not (parameters.IsDefault), "Field 'parameters' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(bindingCache IsNot Nothing, "Field 'bindingCache' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Binder = binder Me._Flags = flags Me._Parameters = parameters Me._ReturnType = returnType Me._BindingCache = bindingCache Validate() End Sub Private ReadOnly _Binder As Binder Public ReadOnly Property Binder As Binder Get Return _Binder End Get End Property Private ReadOnly _Flags As SourceMemberFlags Public ReadOnly Property Flags As SourceMemberFlags Get Return _Flags End Get End Property Private ReadOnly _Parameters As ImmutableArray(Of ParameterSymbol) Public ReadOnly Property Parameters As ImmutableArray(Of ParameterSymbol) Get Return _Parameters End Get End Property Private ReadOnly _ReturnType As TypeSymbol Public ReadOnly Property ReturnType As TypeSymbol Get Return _ReturnType End Get End Property Private ReadOnly _BindingCache As UnboundLambda.UnboundLambdaBindingCache Public ReadOnly Property BindingCache As UnboundLambda.UnboundLambdaBindingCache Get Return _BindingCache End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitUnboundLambda(Me) End Function Public Function Update(binder As Binder, flags As SourceMemberFlags, parameters As ImmutableArray(Of ParameterSymbol), returnType As TypeSymbol, bindingCache As UnboundLambda.UnboundLambdaBindingCache) As UnboundLambda If binder IsNot Me.Binder OrElse flags <> Me.Flags OrElse parameters <> Me.Parameters OrElse returnType IsNot Me.ReturnType OrElse bindingCache IsNot Me.BindingCache Then Dim result = New UnboundLambda(Me.Syntax, binder, flags, parameters, returnType, bindingCache, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundLambda Inherits BoundExpression Public Sub New(syntax As SyntaxNode, lambdaSymbol As LambdaSymbol, body As BoundBlock, diagnostics As ReadOnlyBindingDiagnostic(Of AssemblySymbol), lambdaBinderOpt As LambdaBodyBinder, delegateRelaxation As ConversionKind, methodConversionKind As MethodConversionKind, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.Lambda, syntax, Nothing, hasErrors OrElse body.NonNullAndHasErrors()) Debug.Assert(lambdaSymbol IsNot Nothing, "Field 'lambdaSymbol' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(body IsNot Nothing, "Field 'body' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._LambdaSymbol = lambdaSymbol Me._Body = body Me._Diagnostics = diagnostics Me._LambdaBinderOpt = lambdaBinderOpt Me._DelegateRelaxation = delegateRelaxation Me._MethodConversionKind = methodConversionKind Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _LambdaSymbol As LambdaSymbol Public ReadOnly Property LambdaSymbol As LambdaSymbol Get Return _LambdaSymbol End Get End Property Private ReadOnly _Body As BoundBlock Public ReadOnly Property Body As BoundBlock Get Return _Body End Get End Property Private ReadOnly _Diagnostics As ReadOnlyBindingDiagnostic(Of AssemblySymbol) Public ReadOnly Property Diagnostics As ReadOnlyBindingDiagnostic(Of AssemblySymbol) Get Return _Diagnostics End Get End Property Private ReadOnly _LambdaBinderOpt As LambdaBodyBinder Public ReadOnly Property LambdaBinderOpt As LambdaBodyBinder Get Return _LambdaBinderOpt End Get End Property Private ReadOnly _DelegateRelaxation As ConversionKind Public ReadOnly Property DelegateRelaxation As ConversionKind Get Return _DelegateRelaxation End Get End Property Private ReadOnly _MethodConversionKind As MethodConversionKind Public ReadOnly Property MethodConversionKind As MethodConversionKind Get Return _MethodConversionKind End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitLambda(Me) End Function Public Function Update(lambdaSymbol As LambdaSymbol, body As BoundBlock, diagnostics As ReadOnlyBindingDiagnostic(Of AssemblySymbol), lambdaBinderOpt As LambdaBodyBinder, delegateRelaxation As ConversionKind, methodConversionKind As MethodConversionKind) As BoundLambda If lambdaSymbol IsNot Me.LambdaSymbol OrElse body IsNot Me.Body OrElse diagnostics <> Me.Diagnostics OrElse lambdaBinderOpt IsNot Me.LambdaBinderOpt OrElse delegateRelaxation <> Me.DelegateRelaxation OrElse methodConversionKind <> Me.MethodConversionKind Then Dim result = New BoundLambda(Me.Syntax, lambdaSymbol, body, diagnostics, lambdaBinderOpt, delegateRelaxation, methodConversionKind, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundQueryExpression Inherits BoundExpression Public Sub New(syntax As SyntaxNode, lastOperator As BoundQueryClauseBase, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.QueryExpression, syntax, type, hasErrors OrElse lastOperator.NonNullAndHasErrors()) Debug.Assert(lastOperator IsNot Nothing, "Field 'lastOperator' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._LastOperator = lastOperator End Sub Private ReadOnly _LastOperator As BoundQueryClauseBase Public ReadOnly Property LastOperator As BoundQueryClauseBase Get Return _LastOperator End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitQueryExpression(Me) End Function Public Function Update(lastOperator As BoundQueryClauseBase, type As TypeSymbol) As BoundQueryExpression If lastOperator IsNot Me.LastOperator OrElse type IsNot Me.Type Then Dim result = New BoundQueryExpression(Me.Syntax, lastOperator, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend MustInherit Class BoundQueryPart Inherits BoundExpression Protected Sub New(kind As BoundKind, syntax as SyntaxNode, type As TypeSymbol, hasErrors As Boolean) MyBase.New(kind, syntax, type, hasErrors) Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") End Sub Protected Sub New(kind As BoundKind, syntax as SyntaxNode, type As TypeSymbol) MyBase.New(kind, syntax, type) Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") End Sub End Class Partial Friend NotInheritable Class BoundQuerySource Inherits BoundQueryPart Public Sub New(syntax As SyntaxNode, expression As BoundExpression, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.QuerySource, syntax, type, hasErrors OrElse expression.NonNullAndHasErrors()) Debug.Assert(expression IsNot Nothing, "Field 'expression' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Expression = expression End Sub Private ReadOnly _Expression As BoundExpression Public ReadOnly Property Expression As BoundExpression Get Return _Expression End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitQuerySource(Me) End Function Public Function Update(expression As BoundExpression, type As TypeSymbol) As BoundQuerySource If expression IsNot Me.Expression OrElse type IsNot Me.Type Then Dim result = New BoundQuerySource(Me.Syntax, expression, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundToQueryableCollectionConversion Inherits BoundQueryPart Public Sub New(syntax As SyntaxNode, conversionCall As BoundCall, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.ToQueryableCollectionConversion, syntax, type, hasErrors OrElse conversionCall.NonNullAndHasErrors()) Debug.Assert(conversionCall IsNot Nothing, "Field 'conversionCall' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._ConversionCall = conversionCall End Sub Private ReadOnly _ConversionCall As BoundCall Public ReadOnly Property ConversionCall As BoundCall Get Return _ConversionCall End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitToQueryableCollectionConversion(Me) End Function Public Function Update(conversionCall As BoundCall, type As TypeSymbol) As BoundToQueryableCollectionConversion If conversionCall IsNot Me.ConversionCall OrElse type IsNot Me.Type Then Dim result = New BoundToQueryableCollectionConversion(Me.Syntax, conversionCall, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend MustInherit Class BoundQueryClauseBase Inherits BoundQueryPart Protected Sub New(kind As BoundKind, syntax as SyntaxNode, rangeVariables As ImmutableArray(Of RangeVariableSymbol), compoundVariableType As TypeSymbol, binders As ImmutableArray(Of Binder), type As TypeSymbol, hasErrors As Boolean) MyBase.New(kind, syntax, type, hasErrors) Debug.Assert(Not (rangeVariables.IsDefault), "Field 'rangeVariables' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(compoundVariableType IsNot Nothing, "Field 'compoundVariableType' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(Not (binders.IsDefault), "Field 'binders' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._RangeVariables = rangeVariables Me._CompoundVariableType = compoundVariableType Me._Binders = binders End Sub Protected Sub New(kind As BoundKind, syntax as SyntaxNode, rangeVariables As ImmutableArray(Of RangeVariableSymbol), compoundVariableType As TypeSymbol, binders As ImmutableArray(Of Binder), type As TypeSymbol) MyBase.New(kind, syntax, type) Debug.Assert(Not (rangeVariables.IsDefault), "Field 'rangeVariables' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(compoundVariableType IsNot Nothing, "Field 'compoundVariableType' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(Not (binders.IsDefault), "Field 'binders' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._RangeVariables = rangeVariables Me._CompoundVariableType = compoundVariableType Me._Binders = binders End Sub Private ReadOnly _RangeVariables As ImmutableArray(Of RangeVariableSymbol) Public ReadOnly Property RangeVariables As ImmutableArray(Of RangeVariableSymbol) Get Return _RangeVariables End Get End Property Private ReadOnly _CompoundVariableType As TypeSymbol Public ReadOnly Property CompoundVariableType As TypeSymbol Get Return _CompoundVariableType End Get End Property Private ReadOnly _Binders As ImmutableArray(Of Binder) Public ReadOnly Property Binders As ImmutableArray(Of Binder) Get Return _Binders End Get End Property End Class Partial Friend NotInheritable Class BoundQueryableSource Inherits BoundQueryClauseBase Public Sub New(syntax As SyntaxNode, source As BoundQueryPart, rangeVariableOpt As RangeVariableSymbol, rangeVariables As ImmutableArray(Of RangeVariableSymbol), compoundVariableType As TypeSymbol, binders As ImmutableArray(Of Binder), type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.QueryableSource, syntax, rangeVariables, compoundVariableType, binders, type, hasErrors OrElse source.NonNullAndHasErrors()) Debug.Assert(source IsNot Nothing, "Field 'source' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(Not (rangeVariables.IsDefault), "Field 'rangeVariables' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(compoundVariableType IsNot Nothing, "Field 'compoundVariableType' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(Not (binders.IsDefault), "Field 'binders' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Source = source Me._RangeVariableOpt = rangeVariableOpt Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _Source As BoundQueryPart Public ReadOnly Property Source As BoundQueryPart Get Return _Source End Get End Property Private ReadOnly _RangeVariableOpt As RangeVariableSymbol Public ReadOnly Property RangeVariableOpt As RangeVariableSymbol Get Return _RangeVariableOpt End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitQueryableSource(Me) End Function Public Function Update(source As BoundQueryPart, rangeVariableOpt As RangeVariableSymbol, rangeVariables As ImmutableArray(Of RangeVariableSymbol), compoundVariableType As TypeSymbol, binders As ImmutableArray(Of Binder), type As TypeSymbol) As BoundQueryableSource If source IsNot Me.Source OrElse rangeVariableOpt IsNot Me.RangeVariableOpt OrElse rangeVariables <> Me.RangeVariables OrElse compoundVariableType IsNot Me.CompoundVariableType OrElse binders <> Me.Binders OrElse type IsNot Me.Type Then Dim result = New BoundQueryableSource(Me.Syntax, source, rangeVariableOpt, rangeVariables, compoundVariableType, binders, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundQueryClause Inherits BoundQueryClauseBase Public Sub New(syntax As SyntaxNode, underlyingExpression As BoundExpression, rangeVariables As ImmutableArray(Of RangeVariableSymbol), compoundVariableType As TypeSymbol, binders As ImmutableArray(Of Binder), type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.QueryClause, syntax, rangeVariables, compoundVariableType, binders, type, hasErrors OrElse underlyingExpression.NonNullAndHasErrors()) Debug.Assert(underlyingExpression IsNot Nothing, "Field 'underlyingExpression' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(Not (rangeVariables.IsDefault), "Field 'rangeVariables' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(compoundVariableType IsNot Nothing, "Field 'compoundVariableType' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(Not (binders.IsDefault), "Field 'binders' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._UnderlyingExpression = underlyingExpression End Sub Private ReadOnly _UnderlyingExpression As BoundExpression Public ReadOnly Property UnderlyingExpression As BoundExpression Get Return _UnderlyingExpression End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitQueryClause(Me) End Function Public Function Update(underlyingExpression As BoundExpression, rangeVariables As ImmutableArray(Of RangeVariableSymbol), compoundVariableType As TypeSymbol, binders As ImmutableArray(Of Binder), type As TypeSymbol) As BoundQueryClause If underlyingExpression IsNot Me.UnderlyingExpression OrElse rangeVariables <> Me.RangeVariables OrElse compoundVariableType IsNot Me.CompoundVariableType OrElse binders <> Me.Binders OrElse type IsNot Me.Type Then Dim result = New BoundQueryClause(Me.Syntax, underlyingExpression, rangeVariables, compoundVariableType, binders, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundOrdering Inherits BoundQueryPart Public Sub New(syntax As SyntaxNode, underlyingExpression As BoundExpression, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.Ordering, syntax, type, hasErrors OrElse underlyingExpression.NonNullAndHasErrors()) Debug.Assert(underlyingExpression IsNot Nothing, "Field 'underlyingExpression' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._UnderlyingExpression = underlyingExpression End Sub Private ReadOnly _UnderlyingExpression As BoundExpression Public ReadOnly Property UnderlyingExpression As BoundExpression Get Return _UnderlyingExpression End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitOrdering(Me) End Function Public Function Update(underlyingExpression As BoundExpression, type As TypeSymbol) As BoundOrdering If underlyingExpression IsNot Me.UnderlyingExpression OrElse type IsNot Me.Type Then Dim result = New BoundOrdering(Me.Syntax, underlyingExpression, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundQueryLambda Inherits BoundExpression Public Sub New(syntax As SyntaxNode, lambdaSymbol As SynthesizedLambdaSymbol, rangeVariables As ImmutableArray(Of RangeVariableSymbol), expression As BoundExpression, exprIsOperandOfConditionalBranch As Boolean, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.QueryLambda, syntax, Nothing, hasErrors OrElse expression.NonNullAndHasErrors()) Debug.Assert(lambdaSymbol IsNot Nothing, "Field 'lambdaSymbol' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(Not (rangeVariables.IsDefault), "Field 'rangeVariables' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(expression IsNot Nothing, "Field 'expression' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._LambdaSymbol = lambdaSymbol Me._RangeVariables = rangeVariables Me._Expression = expression Me._ExprIsOperandOfConditionalBranch = exprIsOperandOfConditionalBranch End Sub Private ReadOnly _LambdaSymbol As SynthesizedLambdaSymbol Public ReadOnly Property LambdaSymbol As SynthesizedLambdaSymbol Get Return _LambdaSymbol End Get End Property Private ReadOnly _RangeVariables As ImmutableArray(Of RangeVariableSymbol) Public ReadOnly Property RangeVariables As ImmutableArray(Of RangeVariableSymbol) Get Return _RangeVariables End Get End Property Private ReadOnly _Expression As BoundExpression Public ReadOnly Property Expression As BoundExpression Get Return _Expression End Get End Property Private ReadOnly _ExprIsOperandOfConditionalBranch As Boolean Public ReadOnly Property ExprIsOperandOfConditionalBranch As Boolean Get Return _ExprIsOperandOfConditionalBranch End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitQueryLambda(Me) End Function Public Function Update(lambdaSymbol As SynthesizedLambdaSymbol, rangeVariables As ImmutableArray(Of RangeVariableSymbol), expression As BoundExpression, exprIsOperandOfConditionalBranch As Boolean) As BoundQueryLambda If lambdaSymbol IsNot Me.LambdaSymbol OrElse rangeVariables <> Me.RangeVariables OrElse expression IsNot Me.Expression OrElse exprIsOperandOfConditionalBranch <> Me.ExprIsOperandOfConditionalBranch Then Dim result = New BoundQueryLambda(Me.Syntax, lambdaSymbol, rangeVariables, expression, exprIsOperandOfConditionalBranch, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundRangeVariableAssignment Inherits BoundQueryPart Public Sub New(syntax As SyntaxNode, rangeVariable As RangeVariableSymbol, value As BoundExpression, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.RangeVariableAssignment, syntax, type, hasErrors OrElse value.NonNullAndHasErrors()) Debug.Assert(rangeVariable IsNot Nothing, "Field 'rangeVariable' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(value IsNot Nothing, "Field 'value' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._RangeVariable = rangeVariable Me._Value = value End Sub Private ReadOnly _RangeVariable As RangeVariableSymbol Public ReadOnly Property RangeVariable As RangeVariableSymbol Get Return _RangeVariable End Get End Property Private ReadOnly _Value As BoundExpression Public ReadOnly Property Value As BoundExpression Get Return _Value End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitRangeVariableAssignment(Me) End Function Public Function Update(rangeVariable As RangeVariableSymbol, value As BoundExpression, type As TypeSymbol) As BoundRangeVariableAssignment If rangeVariable IsNot Me.RangeVariable OrElse value IsNot Me.Value OrElse type IsNot Me.Type Then Dim result = New BoundRangeVariableAssignment(Me.Syntax, rangeVariable, value, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class GroupTypeInferenceLambda Inherits BoundExpression Public Sub New(syntax As SyntaxNode, binder As Binder, parameters As ImmutableArray(Of ParameterSymbol), compilation As VisualBasicCompilation, hasErrors As Boolean) MyBase.New(BoundKind.GroupTypeInferenceLambda, syntax, Nothing, hasErrors) Debug.Assert(binder IsNot Nothing, "Field 'binder' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(Not (parameters.IsDefault), "Field 'parameters' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(compilation IsNot Nothing, "Field 'compilation' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Binder = binder Me._Parameters = parameters Me._Compilation = compilation End Sub Public Sub New(syntax As SyntaxNode, binder As Binder, parameters As ImmutableArray(Of ParameterSymbol), compilation As VisualBasicCompilation) MyBase.New(BoundKind.GroupTypeInferenceLambda, syntax, Nothing) Debug.Assert(binder IsNot Nothing, "Field 'binder' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(Not (parameters.IsDefault), "Field 'parameters' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(compilation IsNot Nothing, "Field 'compilation' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Binder = binder Me._Parameters = parameters Me._Compilation = compilation End Sub Private ReadOnly _Binder As Binder Public ReadOnly Property Binder As Binder Get Return _Binder End Get End Property Private ReadOnly _Parameters As ImmutableArray(Of ParameterSymbol) Public ReadOnly Property Parameters As ImmutableArray(Of ParameterSymbol) Get Return _Parameters End Get End Property Private ReadOnly _Compilation As VisualBasicCompilation Public ReadOnly Property Compilation As VisualBasicCompilation Get Return _Compilation End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitGroupTypeInferenceLambda(Me) End Function Public Function Update(binder As Binder, parameters As ImmutableArray(Of ParameterSymbol), compilation As VisualBasicCompilation) As GroupTypeInferenceLambda If binder IsNot Me.Binder OrElse parameters <> Me.Parameters OrElse compilation IsNot Me.Compilation Then Dim result = New GroupTypeInferenceLambda(Me.Syntax, binder, parameters, compilation, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundAggregateClause Inherits BoundQueryClauseBase Public Sub New(syntax As SyntaxNode, capturedGroupOpt As BoundQueryClauseBase, groupPlaceholderOpt As BoundRValuePlaceholder, underlyingExpression As BoundExpression, rangeVariables As ImmutableArray(Of RangeVariableSymbol), compoundVariableType As TypeSymbol, binders As ImmutableArray(Of Binder), type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.AggregateClause, syntax, rangeVariables, compoundVariableType, binders, type, hasErrors OrElse capturedGroupOpt.NonNullAndHasErrors() OrElse groupPlaceholderOpt.NonNullAndHasErrors() OrElse underlyingExpression.NonNullAndHasErrors()) Debug.Assert(underlyingExpression IsNot Nothing, "Field 'underlyingExpression' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(Not (rangeVariables.IsDefault), "Field 'rangeVariables' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(compoundVariableType IsNot Nothing, "Field 'compoundVariableType' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(Not (binders.IsDefault), "Field 'binders' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._CapturedGroupOpt = capturedGroupOpt Me._GroupPlaceholderOpt = groupPlaceholderOpt Me._UnderlyingExpression = underlyingExpression End Sub Private ReadOnly _CapturedGroupOpt As BoundQueryClauseBase Public ReadOnly Property CapturedGroupOpt As BoundQueryClauseBase Get Return _CapturedGroupOpt End Get End Property Private ReadOnly _GroupPlaceholderOpt As BoundRValuePlaceholder Public ReadOnly Property GroupPlaceholderOpt As BoundRValuePlaceholder Get Return _GroupPlaceholderOpt End Get End Property Private ReadOnly _UnderlyingExpression As BoundExpression Public ReadOnly Property UnderlyingExpression As BoundExpression Get Return _UnderlyingExpression End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitAggregateClause(Me) End Function Public Function Update(capturedGroupOpt As BoundQueryClauseBase, groupPlaceholderOpt As BoundRValuePlaceholder, underlyingExpression As BoundExpression, rangeVariables As ImmutableArray(Of RangeVariableSymbol), compoundVariableType As TypeSymbol, binders As ImmutableArray(Of Binder), type As TypeSymbol) As BoundAggregateClause If capturedGroupOpt IsNot Me.CapturedGroupOpt OrElse groupPlaceholderOpt IsNot Me.GroupPlaceholderOpt OrElse underlyingExpression IsNot Me.UnderlyingExpression OrElse rangeVariables <> Me.RangeVariables OrElse compoundVariableType IsNot Me.CompoundVariableType OrElse binders <> Me.Binders OrElse type IsNot Me.Type Then Dim result = New BoundAggregateClause(Me.Syntax, capturedGroupOpt, groupPlaceholderOpt, underlyingExpression, rangeVariables, compoundVariableType, binders, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundGroupAggregation Inherits BoundQueryPart Public Sub New(syntax As SyntaxNode, group As BoundExpression, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.GroupAggregation, syntax, type, hasErrors OrElse group.NonNullAndHasErrors()) Debug.Assert(group IsNot Nothing, "Field 'group' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Group = group End Sub Private ReadOnly _Group As BoundExpression Public ReadOnly Property Group As BoundExpression Get Return _Group End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitGroupAggregation(Me) End Function Public Function Update(group As BoundExpression, type As TypeSymbol) As BoundGroupAggregation If group IsNot Me.Group OrElse type IsNot Me.Type Then Dim result = New BoundGroupAggregation(Me.Syntax, group, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundRangeVariable Inherits BoundExpression Public Sub New(syntax As SyntaxNode, rangeVariable As RangeVariableSymbol, type As TypeSymbol, hasErrors As Boolean) MyBase.New(BoundKind.RangeVariable, syntax, type, hasErrors) Debug.Assert(rangeVariable IsNot Nothing, "Field 'rangeVariable' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._RangeVariable = rangeVariable End Sub Public Sub New(syntax As SyntaxNode, rangeVariable As RangeVariableSymbol, type As TypeSymbol) MyBase.New(BoundKind.RangeVariable, syntax, type) Debug.Assert(rangeVariable IsNot Nothing, "Field 'rangeVariable' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._RangeVariable = rangeVariable End Sub Private ReadOnly _RangeVariable As RangeVariableSymbol Public ReadOnly Property RangeVariable As RangeVariableSymbol Get Return _RangeVariable End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitRangeVariable(Me) End Function Public Function Update(rangeVariable As RangeVariableSymbol, type As TypeSymbol) As BoundRangeVariable If rangeVariable IsNot Me.RangeVariable OrElse type IsNot Me.Type Then Dim result = New BoundRangeVariable(Me.Syntax, rangeVariable, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend MustInherit Class BoundAddRemoveHandlerStatement Inherits BoundStatement Protected Sub New(kind As BoundKind, syntax as SyntaxNode, eventAccess As BoundExpression, handler As BoundExpression, Optional hasErrors As Boolean = False) MyBase.New(kind, syntax, hasErrors) Debug.Assert(eventAccess IsNot Nothing, "Field 'eventAccess' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(handler IsNot Nothing, "Field 'handler' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._EventAccess = eventAccess Me._Handler = handler End Sub Private ReadOnly _EventAccess As BoundExpression Public ReadOnly Property EventAccess As BoundExpression Get Return _EventAccess End Get End Property Private ReadOnly _Handler As BoundExpression Public ReadOnly Property Handler As BoundExpression Get Return _Handler End Get End Property End Class Partial Friend NotInheritable Class BoundAddHandlerStatement Inherits BoundAddRemoveHandlerStatement Public Sub New(syntax As SyntaxNode, eventAccess As BoundExpression, handler As BoundExpression, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.AddHandlerStatement, syntax, eventAccess, handler, hasErrors OrElse eventAccess.NonNullAndHasErrors() OrElse handler.NonNullAndHasErrors()) Debug.Assert(eventAccess IsNot Nothing, "Field 'eventAccess' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(handler IsNot Nothing, "Field 'handler' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") End Sub <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitAddHandlerStatement(Me) End Function Public Function Update(eventAccess As BoundExpression, handler As BoundExpression) As BoundAddHandlerStatement If eventAccess IsNot Me.EventAccess OrElse handler IsNot Me.Handler Then Dim result = New BoundAddHandlerStatement(Me.Syntax, eventAccess, handler, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundRemoveHandlerStatement Inherits BoundAddRemoveHandlerStatement Public Sub New(syntax As SyntaxNode, eventAccess As BoundExpression, handler As BoundExpression, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.RemoveHandlerStatement, syntax, eventAccess, handler, hasErrors OrElse eventAccess.NonNullAndHasErrors() OrElse handler.NonNullAndHasErrors()) Debug.Assert(eventAccess IsNot Nothing, "Field 'eventAccess' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(handler IsNot Nothing, "Field 'handler' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") End Sub <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitRemoveHandlerStatement(Me) End Function Public Function Update(eventAccess As BoundExpression, handler As BoundExpression) As BoundRemoveHandlerStatement If eventAccess IsNot Me.EventAccess OrElse handler IsNot Me.Handler Then Dim result = New BoundRemoveHandlerStatement(Me.Syntax, eventAccess, handler, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundRaiseEventStatement Inherits BoundStatement Public Sub New(syntax As SyntaxNode, eventSymbol As EventSymbol, eventInvocation As BoundExpression, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.RaiseEventStatement, syntax, hasErrors OrElse eventInvocation.NonNullAndHasErrors()) Debug.Assert(eventSymbol IsNot Nothing, "Field 'eventSymbol' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(eventInvocation IsNot Nothing, "Field 'eventInvocation' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._EventSymbol = eventSymbol Me._EventInvocation = eventInvocation End Sub Private ReadOnly _EventSymbol As EventSymbol Public ReadOnly Property EventSymbol As EventSymbol Get Return _EventSymbol End Get End Property Private ReadOnly _EventInvocation As BoundExpression Public ReadOnly Property EventInvocation As BoundExpression Get Return _EventInvocation End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitRaiseEventStatement(Me) End Function Public Function Update(eventSymbol As EventSymbol, eventInvocation As BoundExpression) As BoundRaiseEventStatement If eventSymbol IsNot Me.EventSymbol OrElse eventInvocation IsNot Me.EventInvocation Then Dim result = New BoundRaiseEventStatement(Me.Syntax, eventSymbol, eventInvocation, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundUsingStatement Inherits BoundStatement Public Sub New(syntax As SyntaxNode, resourceList As ImmutableArray(Of BoundLocalDeclarationBase), resourceExpressionOpt As BoundExpression, body As BoundBlock, usingInfo As UsingInfo, locals As ImmutableArray(Of LocalSymbol), Optional hasErrors As Boolean = False) MyBase.New(BoundKind.UsingStatement, syntax, hasErrors OrElse resourceList.NonNullAndHasErrors() OrElse resourceExpressionOpt.NonNullAndHasErrors() OrElse body.NonNullAndHasErrors()) Debug.Assert(body IsNot Nothing, "Field 'body' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(usingInfo IsNot Nothing, "Field 'usingInfo' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(Not (locals.IsDefault), "Field 'locals' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._ResourceList = resourceList Me._ResourceExpressionOpt = resourceExpressionOpt Me._Body = body Me._UsingInfo = usingInfo Me._Locals = locals End Sub Private ReadOnly _ResourceList As ImmutableArray(Of BoundLocalDeclarationBase) Public ReadOnly Property ResourceList As ImmutableArray(Of BoundLocalDeclarationBase) Get Return _ResourceList End Get End Property Private ReadOnly _ResourceExpressionOpt As BoundExpression Public ReadOnly Property ResourceExpressionOpt As BoundExpression Get Return _ResourceExpressionOpt End Get End Property Private ReadOnly _Body As BoundBlock Public ReadOnly Property Body As BoundBlock Get Return _Body End Get End Property Private ReadOnly _UsingInfo As UsingInfo Public ReadOnly Property UsingInfo As UsingInfo Get Return _UsingInfo End Get End Property Private ReadOnly _Locals As ImmutableArray(Of LocalSymbol) Public ReadOnly Property Locals As ImmutableArray(Of LocalSymbol) Get Return _Locals End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitUsingStatement(Me) End Function Public Function Update(resourceList As ImmutableArray(Of BoundLocalDeclarationBase), resourceExpressionOpt As BoundExpression, body As BoundBlock, usingInfo As UsingInfo, locals As ImmutableArray(Of LocalSymbol)) As BoundUsingStatement If resourceList <> Me.ResourceList OrElse resourceExpressionOpt IsNot Me.ResourceExpressionOpt OrElse body IsNot Me.Body OrElse usingInfo IsNot Me.UsingInfo OrElse locals <> Me.Locals Then Dim result = New BoundUsingStatement(Me.Syntax, resourceList, resourceExpressionOpt, body, usingInfo, locals, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundSyncLockStatement Inherits BoundStatement Public Sub New(syntax As SyntaxNode, lockExpression As BoundExpression, body As BoundBlock, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.SyncLockStatement, syntax, hasErrors OrElse lockExpression.NonNullAndHasErrors() OrElse body.NonNullAndHasErrors()) Debug.Assert(lockExpression IsNot Nothing, "Field 'lockExpression' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(body IsNot Nothing, "Field 'body' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._LockExpression = lockExpression Me._Body = body End Sub Private ReadOnly _LockExpression As BoundExpression Public ReadOnly Property LockExpression As BoundExpression Get Return _LockExpression End Get End Property Private ReadOnly _Body As BoundBlock Public ReadOnly Property Body As BoundBlock Get Return _Body End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitSyncLockStatement(Me) End Function Public Function Update(lockExpression As BoundExpression, body As BoundBlock) As BoundSyncLockStatement If lockExpression IsNot Me.LockExpression OrElse body IsNot Me.Body Then Dim result = New BoundSyncLockStatement(Me.Syntax, lockExpression, body, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundXmlName Inherits BoundExpression Public Sub New(syntax As SyntaxNode, xmlNamespace As BoundExpression, localName As BoundExpression, objectCreation As BoundExpression, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.XmlName, syntax, type, hasErrors OrElse xmlNamespace.NonNullAndHasErrors() OrElse localName.NonNullAndHasErrors() OrElse objectCreation.NonNullAndHasErrors()) Debug.Assert(xmlNamespace IsNot Nothing, "Field 'xmlNamespace' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(localName IsNot Nothing, "Field 'localName' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(objectCreation IsNot Nothing, "Field 'objectCreation' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._XmlNamespace = xmlNamespace Me._LocalName = localName Me._ObjectCreation = objectCreation End Sub Private ReadOnly _XmlNamespace As BoundExpression Public ReadOnly Property XmlNamespace As BoundExpression Get Return _XmlNamespace End Get End Property Private ReadOnly _LocalName As BoundExpression Public ReadOnly Property LocalName As BoundExpression Get Return _LocalName End Get End Property Private ReadOnly _ObjectCreation As BoundExpression Public ReadOnly Property ObjectCreation As BoundExpression Get Return _ObjectCreation End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitXmlName(Me) End Function Public Function Update(xmlNamespace As BoundExpression, localName As BoundExpression, objectCreation As BoundExpression, type As TypeSymbol) As BoundXmlName If xmlNamespace IsNot Me.XmlNamespace OrElse localName IsNot Me.LocalName OrElse objectCreation IsNot Me.ObjectCreation OrElse type IsNot Me.Type Then Dim result = New BoundXmlName(Me.Syntax, xmlNamespace, localName, objectCreation, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundXmlNamespace Inherits BoundExpression Public Sub New(syntax As SyntaxNode, xmlNamespace As BoundExpression, objectCreation As BoundExpression, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.XmlNamespace, syntax, type, hasErrors OrElse xmlNamespace.NonNullAndHasErrors() OrElse objectCreation.NonNullAndHasErrors()) Debug.Assert(xmlNamespace IsNot Nothing, "Field 'xmlNamespace' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(objectCreation IsNot Nothing, "Field 'objectCreation' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._XmlNamespace = xmlNamespace Me._ObjectCreation = objectCreation End Sub Private ReadOnly _XmlNamespace As BoundExpression Public ReadOnly Property XmlNamespace As BoundExpression Get Return _XmlNamespace End Get End Property Private ReadOnly _ObjectCreation As BoundExpression Public ReadOnly Property ObjectCreation As BoundExpression Get Return _ObjectCreation End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitXmlNamespace(Me) End Function Public Function Update(xmlNamespace As BoundExpression, objectCreation As BoundExpression, type As TypeSymbol) As BoundXmlNamespace If xmlNamespace IsNot Me.XmlNamespace OrElse objectCreation IsNot Me.ObjectCreation OrElse type IsNot Me.Type Then Dim result = New BoundXmlNamespace(Me.Syntax, xmlNamespace, objectCreation, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundXmlDocument Inherits BoundExpression Public Sub New(syntax As SyntaxNode, declaration As BoundExpression, childNodes As ImmutableArray(Of BoundExpression), rewriterInfo As BoundXmlContainerRewriterInfo, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.XmlDocument, syntax, type, hasErrors OrElse declaration.NonNullAndHasErrors() OrElse childNodes.NonNullAndHasErrors()) Debug.Assert(declaration IsNot Nothing, "Field 'declaration' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(Not (childNodes.IsDefault), "Field 'childNodes' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(rewriterInfo IsNot Nothing, "Field 'rewriterInfo' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Declaration = declaration Me._ChildNodes = childNodes Me._RewriterInfo = rewriterInfo End Sub Private ReadOnly _Declaration As BoundExpression Public ReadOnly Property Declaration As BoundExpression Get Return _Declaration End Get End Property Private ReadOnly _ChildNodes As ImmutableArray(Of BoundExpression) Public ReadOnly Property ChildNodes As ImmutableArray(Of BoundExpression) Get Return _ChildNodes End Get End Property Private ReadOnly _RewriterInfo As BoundXmlContainerRewriterInfo Public ReadOnly Property RewriterInfo As BoundXmlContainerRewriterInfo Get Return _RewriterInfo End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitXmlDocument(Me) End Function Public Function Update(declaration As BoundExpression, childNodes As ImmutableArray(Of BoundExpression), rewriterInfo As BoundXmlContainerRewriterInfo, type As TypeSymbol) As BoundXmlDocument If declaration IsNot Me.Declaration OrElse childNodes <> Me.ChildNodes OrElse rewriterInfo IsNot Me.RewriterInfo OrElse type IsNot Me.Type Then Dim result = New BoundXmlDocument(Me.Syntax, declaration, childNodes, rewriterInfo, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundXmlDeclaration Inherits BoundExpression Public Sub New(syntax As SyntaxNode, version As BoundExpression, encoding As BoundExpression, standalone As BoundExpression, objectCreation As BoundExpression, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.XmlDeclaration, syntax, type, hasErrors OrElse version.NonNullAndHasErrors() OrElse encoding.NonNullAndHasErrors() OrElse standalone.NonNullAndHasErrors() OrElse objectCreation.NonNullAndHasErrors()) Debug.Assert(objectCreation IsNot Nothing, "Field 'objectCreation' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Version = version Me._Encoding = encoding Me._Standalone = standalone Me._ObjectCreation = objectCreation End Sub Private ReadOnly _Version As BoundExpression Public ReadOnly Property Version As BoundExpression Get Return _Version End Get End Property Private ReadOnly _Encoding As BoundExpression Public ReadOnly Property Encoding As BoundExpression Get Return _Encoding End Get End Property Private ReadOnly _Standalone As BoundExpression Public ReadOnly Property Standalone As BoundExpression Get Return _Standalone End Get End Property Private ReadOnly _ObjectCreation As BoundExpression Public ReadOnly Property ObjectCreation As BoundExpression Get Return _ObjectCreation End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitXmlDeclaration(Me) End Function Public Function Update(version As BoundExpression, encoding As BoundExpression, standalone As BoundExpression, objectCreation As BoundExpression, type As TypeSymbol) As BoundXmlDeclaration If version IsNot Me.Version OrElse encoding IsNot Me.Encoding OrElse standalone IsNot Me.Standalone OrElse objectCreation IsNot Me.ObjectCreation OrElse type IsNot Me.Type Then Dim result = New BoundXmlDeclaration(Me.Syntax, version, encoding, standalone, objectCreation, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundXmlProcessingInstruction Inherits BoundExpression Public Sub New(syntax As SyntaxNode, target As BoundExpression, data As BoundExpression, objectCreation As BoundExpression, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.XmlProcessingInstruction, syntax, type, hasErrors OrElse target.NonNullAndHasErrors() OrElse data.NonNullAndHasErrors() OrElse objectCreation.NonNullAndHasErrors()) Debug.Assert(target IsNot Nothing, "Field 'target' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(data IsNot Nothing, "Field 'data' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(objectCreation IsNot Nothing, "Field 'objectCreation' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Target = target Me._Data = data Me._ObjectCreation = objectCreation End Sub Private ReadOnly _Target As BoundExpression Public ReadOnly Property Target As BoundExpression Get Return _Target End Get End Property Private ReadOnly _Data As BoundExpression Public ReadOnly Property Data As BoundExpression Get Return _Data End Get End Property Private ReadOnly _ObjectCreation As BoundExpression Public ReadOnly Property ObjectCreation As BoundExpression Get Return _ObjectCreation End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitXmlProcessingInstruction(Me) End Function Public Function Update(target As BoundExpression, data As BoundExpression, objectCreation As BoundExpression, type As TypeSymbol) As BoundXmlProcessingInstruction If target IsNot Me.Target OrElse data IsNot Me.Data OrElse objectCreation IsNot Me.ObjectCreation OrElse type IsNot Me.Type Then Dim result = New BoundXmlProcessingInstruction(Me.Syntax, target, data, objectCreation, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundXmlComment Inherits BoundExpression Public Sub New(syntax As SyntaxNode, value As BoundExpression, objectCreation As BoundExpression, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.XmlComment, syntax, type, hasErrors OrElse value.NonNullAndHasErrors() OrElse objectCreation.NonNullAndHasErrors()) Debug.Assert(value IsNot Nothing, "Field 'value' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(objectCreation IsNot Nothing, "Field 'objectCreation' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Value = value Me._ObjectCreation = objectCreation End Sub Private ReadOnly _Value As BoundExpression Public ReadOnly Property Value As BoundExpression Get Return _Value End Get End Property Private ReadOnly _ObjectCreation As BoundExpression Public ReadOnly Property ObjectCreation As BoundExpression Get Return _ObjectCreation End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitXmlComment(Me) End Function Public Function Update(value As BoundExpression, objectCreation As BoundExpression, type As TypeSymbol) As BoundXmlComment If value IsNot Me.Value OrElse objectCreation IsNot Me.ObjectCreation OrElse type IsNot Me.Type Then Dim result = New BoundXmlComment(Me.Syntax, value, objectCreation, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundXmlAttribute Inherits BoundExpression Public Sub New(syntax As SyntaxNode, name As BoundExpression, value As BoundExpression, matchesImport As Boolean, objectCreation As BoundExpression, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.XmlAttribute, syntax, type, hasErrors OrElse name.NonNullAndHasErrors() OrElse value.NonNullAndHasErrors() OrElse objectCreation.NonNullAndHasErrors()) Debug.Assert(name IsNot Nothing, "Field 'name' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(value IsNot Nothing, "Field 'value' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(objectCreation IsNot Nothing, "Field 'objectCreation' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Name = name Me._Value = value Me._MatchesImport = matchesImport Me._ObjectCreation = objectCreation Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _Name As BoundExpression Public ReadOnly Property Name As BoundExpression Get Return _Name End Get End Property Private ReadOnly _Value As BoundExpression Public ReadOnly Property Value As BoundExpression Get Return _Value End Get End Property Private ReadOnly _MatchesImport As Boolean Public ReadOnly Property MatchesImport As Boolean Get Return _MatchesImport End Get End Property Private ReadOnly _ObjectCreation As BoundExpression Public ReadOnly Property ObjectCreation As BoundExpression Get Return _ObjectCreation End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitXmlAttribute(Me) End Function Public Function Update(name As BoundExpression, value As BoundExpression, matchesImport As Boolean, objectCreation As BoundExpression, type As TypeSymbol) As BoundXmlAttribute If name IsNot Me.Name OrElse value IsNot Me.Value OrElse matchesImport <> Me.MatchesImport OrElse objectCreation IsNot Me.ObjectCreation OrElse type IsNot Me.Type Then Dim result = New BoundXmlAttribute(Me.Syntax, name, value, matchesImport, objectCreation, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundXmlElement Inherits BoundExpression Public Sub New(syntax As SyntaxNode, argument As BoundExpression, childNodes As ImmutableArray(Of BoundExpression), rewriterInfo As BoundXmlContainerRewriterInfo, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.XmlElement, syntax, type, hasErrors OrElse argument.NonNullAndHasErrors() OrElse childNodes.NonNullAndHasErrors()) Debug.Assert(argument IsNot Nothing, "Field 'argument' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(Not (childNodes.IsDefault), "Field 'childNodes' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(rewriterInfo IsNot Nothing, "Field 'rewriterInfo' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Argument = argument Me._ChildNodes = childNodes Me._RewriterInfo = rewriterInfo End Sub Private ReadOnly _Argument As BoundExpression Public ReadOnly Property Argument As BoundExpression Get Return _Argument End Get End Property Private ReadOnly _ChildNodes As ImmutableArray(Of BoundExpression) Public ReadOnly Property ChildNodes As ImmutableArray(Of BoundExpression) Get Return _ChildNodes End Get End Property Private ReadOnly _RewriterInfo As BoundXmlContainerRewriterInfo Public ReadOnly Property RewriterInfo As BoundXmlContainerRewriterInfo Get Return _RewriterInfo End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitXmlElement(Me) End Function Public Function Update(argument As BoundExpression, childNodes As ImmutableArray(Of BoundExpression), rewriterInfo As BoundXmlContainerRewriterInfo, type As TypeSymbol) As BoundXmlElement If argument IsNot Me.Argument OrElse childNodes <> Me.ChildNodes OrElse rewriterInfo IsNot Me.RewriterInfo OrElse type IsNot Me.Type Then Dim result = New BoundXmlElement(Me.Syntax, argument, childNodes, rewriterInfo, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundXmlMemberAccess Inherits BoundExpression Public Sub New(syntax As SyntaxNode, memberAccess As BoundExpression, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.XmlMemberAccess, syntax, type, hasErrors OrElse memberAccess.NonNullAndHasErrors()) Debug.Assert(memberAccess IsNot Nothing, "Field 'memberAccess' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._MemberAccess = memberAccess End Sub Private ReadOnly _MemberAccess As BoundExpression Public ReadOnly Property MemberAccess As BoundExpression Get Return _MemberAccess End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitXmlMemberAccess(Me) End Function Public Function Update(memberAccess As BoundExpression, type As TypeSymbol) As BoundXmlMemberAccess If memberAccess IsNot Me.MemberAccess OrElse type IsNot Me.Type Then Dim result = New BoundXmlMemberAccess(Me.Syntax, memberAccess, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundXmlEmbeddedExpression Inherits BoundExpression Public Sub New(syntax As SyntaxNode, expression As BoundExpression, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.XmlEmbeddedExpression, syntax, type, hasErrors OrElse expression.NonNullAndHasErrors()) Debug.Assert(expression IsNot Nothing, "Field 'expression' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Expression = expression End Sub Private ReadOnly _Expression As BoundExpression Public ReadOnly Property Expression As BoundExpression Get Return _Expression End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitXmlEmbeddedExpression(Me) End Function Public Function Update(expression As BoundExpression, type As TypeSymbol) As BoundXmlEmbeddedExpression If expression IsNot Me.Expression OrElse type IsNot Me.Type Then Dim result = New BoundXmlEmbeddedExpression(Me.Syntax, expression, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundXmlCData Inherits BoundExpression Public Sub New(syntax As SyntaxNode, value As BoundLiteral, objectCreation As BoundExpression, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.XmlCData, syntax, type, hasErrors OrElse value.NonNullAndHasErrors() OrElse objectCreation.NonNullAndHasErrors()) Debug.Assert(value IsNot Nothing, "Field 'value' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(objectCreation IsNot Nothing, "Field 'objectCreation' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Value = value Me._ObjectCreation = objectCreation End Sub Private ReadOnly _Value As BoundLiteral Public ReadOnly Property Value As BoundLiteral Get Return _Value End Get End Property Private ReadOnly _ObjectCreation As BoundExpression Public ReadOnly Property ObjectCreation As BoundExpression Get Return _ObjectCreation End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitXmlCData(Me) End Function Public Function Update(value As BoundLiteral, objectCreation As BoundExpression, type As TypeSymbol) As BoundXmlCData If value IsNot Me.Value OrElse objectCreation IsNot Me.ObjectCreation OrElse type IsNot Me.Type Then Dim result = New BoundXmlCData(Me.Syntax, value, objectCreation, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundResumeStatement Inherits BoundStatement Public Sub New(syntax As SyntaxNode, resumeKind As ResumeStatementKind, labelOpt As LabelSymbol, labelExpressionOpt As BoundExpression, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.ResumeStatement, syntax, hasErrors OrElse labelExpressionOpt.NonNullAndHasErrors()) Me._ResumeKind = resumeKind Me._LabelOpt = labelOpt Me._LabelExpressionOpt = labelExpressionOpt Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _ResumeKind As ResumeStatementKind Public ReadOnly Property ResumeKind As ResumeStatementKind Get Return _ResumeKind End Get End Property Private ReadOnly _LabelOpt As LabelSymbol Public ReadOnly Property LabelOpt As LabelSymbol Get Return _LabelOpt End Get End Property Private ReadOnly _LabelExpressionOpt As BoundExpression Public ReadOnly Property LabelExpressionOpt As BoundExpression Get Return _LabelExpressionOpt End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitResumeStatement(Me) End Function Public Function Update(resumeKind As ResumeStatementKind, labelOpt As LabelSymbol, labelExpressionOpt As BoundExpression) As BoundResumeStatement If resumeKind <> Me.ResumeKind OrElse labelOpt IsNot Me.LabelOpt OrElse labelExpressionOpt IsNot Me.LabelExpressionOpt Then Dim result = New BoundResumeStatement(Me.Syntax, resumeKind, labelOpt, labelExpressionOpt, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundOnErrorStatement Inherits BoundStatement Public Sub New(syntax As SyntaxNode, onErrorKind As OnErrorStatementKind, labelOpt As LabelSymbol, labelExpressionOpt As BoundExpression, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.OnErrorStatement, syntax, hasErrors OrElse labelExpressionOpt.NonNullAndHasErrors()) Me._OnErrorKind = onErrorKind Me._LabelOpt = labelOpt Me._LabelExpressionOpt = labelExpressionOpt Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _OnErrorKind As OnErrorStatementKind Public ReadOnly Property OnErrorKind As OnErrorStatementKind Get Return _OnErrorKind End Get End Property Private ReadOnly _LabelOpt As LabelSymbol Public ReadOnly Property LabelOpt As LabelSymbol Get Return _LabelOpt End Get End Property Private ReadOnly _LabelExpressionOpt As BoundExpression Public ReadOnly Property LabelExpressionOpt As BoundExpression Get Return _LabelExpressionOpt End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitOnErrorStatement(Me) End Function Public Function Update(onErrorKind As OnErrorStatementKind, labelOpt As LabelSymbol, labelExpressionOpt As BoundExpression) As BoundOnErrorStatement If onErrorKind <> Me.OnErrorKind OrElse labelOpt IsNot Me.LabelOpt OrElse labelExpressionOpt IsNot Me.LabelExpressionOpt Then Dim result = New BoundOnErrorStatement(Me.Syntax, onErrorKind, labelOpt, labelExpressionOpt, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundUnstructuredExceptionHandlingStatement Inherits BoundStatement Public Sub New(syntax As SyntaxNode, containsOnError As Boolean, containsResume As Boolean, resumeWithoutLabelOpt As StatementSyntax, trackLineNumber As Boolean, body As BoundBlock, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.UnstructuredExceptionHandlingStatement, syntax, hasErrors OrElse body.NonNullAndHasErrors()) Debug.Assert(body IsNot Nothing, "Field 'body' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._ContainsOnError = containsOnError Me._ContainsResume = containsResume Me._ResumeWithoutLabelOpt = resumeWithoutLabelOpt Me._TrackLineNumber = trackLineNumber Me._Body = body Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _ContainsOnError As Boolean Public ReadOnly Property ContainsOnError As Boolean Get Return _ContainsOnError End Get End Property Private ReadOnly _ContainsResume As Boolean Public ReadOnly Property ContainsResume As Boolean Get Return _ContainsResume End Get End Property Private ReadOnly _ResumeWithoutLabelOpt As StatementSyntax Public ReadOnly Property ResumeWithoutLabelOpt As StatementSyntax Get Return _ResumeWithoutLabelOpt End Get End Property Private ReadOnly _TrackLineNumber As Boolean Public ReadOnly Property TrackLineNumber As Boolean Get Return _TrackLineNumber End Get End Property Private ReadOnly _Body As BoundBlock Public ReadOnly Property Body As BoundBlock Get Return _Body End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitUnstructuredExceptionHandlingStatement(Me) End Function Public Function Update(containsOnError As Boolean, containsResume As Boolean, resumeWithoutLabelOpt As StatementSyntax, trackLineNumber As Boolean, body As BoundBlock) As BoundUnstructuredExceptionHandlingStatement If containsOnError <> Me.ContainsOnError OrElse containsResume <> Me.ContainsResume OrElse resumeWithoutLabelOpt IsNot Me.ResumeWithoutLabelOpt OrElse trackLineNumber <> Me.TrackLineNumber OrElse body IsNot Me.Body Then Dim result = New BoundUnstructuredExceptionHandlingStatement(Me.Syntax, containsOnError, containsResume, resumeWithoutLabelOpt, trackLineNumber, body, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundUnstructuredExceptionHandlingCatchFilter Inherits BoundExpression Public Sub New(syntax As SyntaxNode, activeHandlerLocal As BoundLocal, resumeTargetLocal As BoundLocal, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.UnstructuredExceptionHandlingCatchFilter, syntax, type, hasErrors OrElse activeHandlerLocal.NonNullAndHasErrors() OrElse resumeTargetLocal.NonNullAndHasErrors()) Debug.Assert(activeHandlerLocal IsNot Nothing, "Field 'activeHandlerLocal' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(resumeTargetLocal IsNot Nothing, "Field 'resumeTargetLocal' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._ActiveHandlerLocal = activeHandlerLocal Me._ResumeTargetLocal = resumeTargetLocal Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _ActiveHandlerLocal As BoundLocal Public ReadOnly Property ActiveHandlerLocal As BoundLocal Get Return _ActiveHandlerLocal End Get End Property Private ReadOnly _ResumeTargetLocal As BoundLocal Public ReadOnly Property ResumeTargetLocal As BoundLocal Get Return _ResumeTargetLocal End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitUnstructuredExceptionHandlingCatchFilter(Me) End Function Public Function Update(activeHandlerLocal As BoundLocal, resumeTargetLocal As BoundLocal, type As TypeSymbol) As BoundUnstructuredExceptionHandlingCatchFilter If activeHandlerLocal IsNot Me.ActiveHandlerLocal OrElse resumeTargetLocal IsNot Me.ResumeTargetLocal OrElse type IsNot Me.Type Then Dim result = New BoundUnstructuredExceptionHandlingCatchFilter(Me.Syntax, activeHandlerLocal, resumeTargetLocal, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundUnstructuredExceptionOnErrorSwitch Inherits BoundStatement Public Sub New(syntax As SyntaxNode, value As BoundExpression, jumps As ImmutableArray(Of BoundGotoStatement), Optional hasErrors As Boolean = False) MyBase.New(BoundKind.UnstructuredExceptionOnErrorSwitch, syntax, hasErrors OrElse value.NonNullAndHasErrors() OrElse jumps.NonNullAndHasErrors()) Debug.Assert(value IsNot Nothing, "Field 'value' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(Not (jumps.IsDefault), "Field 'jumps' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Value = value Me._Jumps = jumps Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _Value As BoundExpression Public ReadOnly Property Value As BoundExpression Get Return _Value End Get End Property Private ReadOnly _Jumps As ImmutableArray(Of BoundGotoStatement) Public ReadOnly Property Jumps As ImmutableArray(Of BoundGotoStatement) Get Return _Jumps End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitUnstructuredExceptionOnErrorSwitch(Me) End Function Public Function Update(value As BoundExpression, jumps As ImmutableArray(Of BoundGotoStatement)) As BoundUnstructuredExceptionOnErrorSwitch If value IsNot Me.Value OrElse jumps <> Me.Jumps Then Dim result = New BoundUnstructuredExceptionOnErrorSwitch(Me.Syntax, value, jumps, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundUnstructuredExceptionResumeSwitch Inherits BoundStatement Public Sub New(syntax As SyntaxNode, resumeTargetTemporary As BoundLocal, resumeLabel As BoundLabelStatement, resumeNextLabel As BoundLabelStatement, jumps As ImmutableArray(Of BoundGotoStatement), Optional hasErrors As Boolean = False) MyBase.New(BoundKind.UnstructuredExceptionResumeSwitch, syntax, hasErrors OrElse resumeTargetTemporary.NonNullAndHasErrors() OrElse resumeLabel.NonNullAndHasErrors() OrElse resumeNextLabel.NonNullAndHasErrors() OrElse jumps.NonNullAndHasErrors()) Debug.Assert(resumeTargetTemporary IsNot Nothing, "Field 'resumeTargetTemporary' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(resumeLabel IsNot Nothing, "Field 'resumeLabel' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(resumeNextLabel IsNot Nothing, "Field 'resumeNextLabel' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(Not (jumps.IsDefault), "Field 'jumps' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._ResumeTargetTemporary = resumeTargetTemporary Me._ResumeLabel = resumeLabel Me._ResumeNextLabel = resumeNextLabel Me._Jumps = jumps Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _ResumeTargetTemporary As BoundLocal Public ReadOnly Property ResumeTargetTemporary As BoundLocal Get Return _ResumeTargetTemporary End Get End Property Private ReadOnly _ResumeLabel As BoundLabelStatement Public ReadOnly Property ResumeLabel As BoundLabelStatement Get Return _ResumeLabel End Get End Property Private ReadOnly _ResumeNextLabel As BoundLabelStatement Public ReadOnly Property ResumeNextLabel As BoundLabelStatement Get Return _ResumeNextLabel End Get End Property Private ReadOnly _Jumps As ImmutableArray(Of BoundGotoStatement) Public ReadOnly Property Jumps As ImmutableArray(Of BoundGotoStatement) Get Return _Jumps End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitUnstructuredExceptionResumeSwitch(Me) End Function Public Function Update(resumeTargetTemporary As BoundLocal, resumeLabel As BoundLabelStatement, resumeNextLabel As BoundLabelStatement, jumps As ImmutableArray(Of BoundGotoStatement)) As BoundUnstructuredExceptionResumeSwitch If resumeTargetTemporary IsNot Me.ResumeTargetTemporary OrElse resumeLabel IsNot Me.ResumeLabel OrElse resumeNextLabel IsNot Me.ResumeNextLabel OrElse jumps <> Me.Jumps Then Dim result = New BoundUnstructuredExceptionResumeSwitch(Me.Syntax, resumeTargetTemporary, resumeLabel, resumeNextLabel, jumps, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundAwaitOperator Inherits BoundExpression Public Sub New(syntax As SyntaxNode, operand As BoundExpression, awaitableInstancePlaceholder As BoundRValuePlaceholder, getAwaiter As BoundExpression, awaiterInstancePlaceholder As BoundLValuePlaceholder, isCompleted As BoundExpression, getResult As BoundExpression, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.AwaitOperator, syntax, type, hasErrors OrElse operand.NonNullAndHasErrors() OrElse awaitableInstancePlaceholder.NonNullAndHasErrors() OrElse getAwaiter.NonNullAndHasErrors() OrElse awaiterInstancePlaceholder.NonNullAndHasErrors() OrElse isCompleted.NonNullAndHasErrors() OrElse getResult.NonNullAndHasErrors()) Debug.Assert(operand IsNot Nothing, "Field 'operand' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(awaitableInstancePlaceholder IsNot Nothing, "Field 'awaitableInstancePlaceholder' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(getAwaiter IsNot Nothing, "Field 'getAwaiter' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(awaiterInstancePlaceholder IsNot Nothing, "Field 'awaiterInstancePlaceholder' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(isCompleted IsNot Nothing, "Field 'isCompleted' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(getResult IsNot Nothing, "Field 'getResult' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Operand = operand Me._AwaitableInstancePlaceholder = awaitableInstancePlaceholder Me._GetAwaiter = getAwaiter Me._AwaiterInstancePlaceholder = awaiterInstancePlaceholder Me._IsCompleted = isCompleted Me._GetResult = getResult Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _Operand As BoundExpression Public ReadOnly Property Operand As BoundExpression Get Return _Operand End Get End Property Private ReadOnly _AwaitableInstancePlaceholder As BoundRValuePlaceholder Public ReadOnly Property AwaitableInstancePlaceholder As BoundRValuePlaceholder Get Return _AwaitableInstancePlaceholder End Get End Property Private ReadOnly _GetAwaiter As BoundExpression Public ReadOnly Property GetAwaiter As BoundExpression Get Return _GetAwaiter End Get End Property Private ReadOnly _AwaiterInstancePlaceholder As BoundLValuePlaceholder Public ReadOnly Property AwaiterInstancePlaceholder As BoundLValuePlaceholder Get Return _AwaiterInstancePlaceholder End Get End Property Private ReadOnly _IsCompleted As BoundExpression Public ReadOnly Property IsCompleted As BoundExpression Get Return _IsCompleted End Get End Property Private ReadOnly _GetResult As BoundExpression Public ReadOnly Property GetResult As BoundExpression Get Return _GetResult End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitAwaitOperator(Me) End Function Public Function Update(operand As BoundExpression, awaitableInstancePlaceholder As BoundRValuePlaceholder, getAwaiter As BoundExpression, awaiterInstancePlaceholder As BoundLValuePlaceholder, isCompleted As BoundExpression, getResult As BoundExpression, type As TypeSymbol) As BoundAwaitOperator If operand IsNot Me.Operand OrElse awaitableInstancePlaceholder IsNot Me.AwaitableInstancePlaceholder OrElse getAwaiter IsNot Me.GetAwaiter OrElse awaiterInstancePlaceholder IsNot Me.AwaiterInstancePlaceholder OrElse isCompleted IsNot Me.IsCompleted OrElse getResult IsNot Me.GetResult OrElse type IsNot Me.Type Then Dim result = New BoundAwaitOperator(Me.Syntax, operand, awaitableInstancePlaceholder, getAwaiter, awaiterInstancePlaceholder, isCompleted, getResult, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundSpillSequence Inherits BoundExpression Public Sub New(syntax As SyntaxNode, locals As ImmutableArray(Of LocalSymbol), spillFields As ImmutableArray(Of FieldSymbol), statements As ImmutableArray(Of BoundStatement), valueOpt As BoundExpression, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.SpillSequence, syntax, type, hasErrors OrElse statements.NonNullAndHasErrors() OrElse valueOpt.NonNullAndHasErrors()) Debug.Assert(Not (locals.IsDefault), "Field 'locals' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(Not (spillFields.IsDefault), "Field 'spillFields' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(Not (statements.IsDefault), "Field 'statements' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Locals = locals Me._SpillFields = spillFields Me._Statements = statements Me._ValueOpt = valueOpt Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _Locals As ImmutableArray(Of LocalSymbol) Public ReadOnly Property Locals As ImmutableArray(Of LocalSymbol) Get Return _Locals End Get End Property Private ReadOnly _SpillFields As ImmutableArray(Of FieldSymbol) Public ReadOnly Property SpillFields As ImmutableArray(Of FieldSymbol) Get Return _SpillFields End Get End Property Private ReadOnly _Statements As ImmutableArray(Of BoundStatement) Public ReadOnly Property Statements As ImmutableArray(Of BoundStatement) Get Return _Statements End Get End Property Private ReadOnly _ValueOpt As BoundExpression Public ReadOnly Property ValueOpt As BoundExpression Get Return _ValueOpt End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitSpillSequence(Me) End Function Public Function Update(locals As ImmutableArray(Of LocalSymbol), spillFields As ImmutableArray(Of FieldSymbol), statements As ImmutableArray(Of BoundStatement), valueOpt As BoundExpression, type As TypeSymbol) As BoundSpillSequence If locals <> Me.Locals OrElse spillFields <> Me.SpillFields OrElse statements <> Me.Statements OrElse valueOpt IsNot Me.ValueOpt OrElse type IsNot Me.Type Then Dim result = New BoundSpillSequence(Me.Syntax, locals, spillFields, statements, valueOpt, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundStopStatement Inherits BoundStatement Public Sub New(syntax As SyntaxNode, hasErrors As Boolean) MyBase.New(BoundKind.StopStatement, syntax, hasErrors) End Sub Public Sub New(syntax As SyntaxNode) MyBase.New(BoundKind.StopStatement, syntax) End Sub <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitStopStatement(Me) End Function End Class Partial Friend NotInheritable Class BoundEndStatement Inherits BoundStatement Public Sub New(syntax As SyntaxNode, hasErrors As Boolean) MyBase.New(BoundKind.EndStatement, syntax, hasErrors) End Sub Public Sub New(syntax As SyntaxNode) MyBase.New(BoundKind.EndStatement, syntax) End Sub <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitEndStatement(Me) End Function End Class Partial Friend NotInheritable Class BoundMidResult Inherits BoundExpression Public Sub New(syntax As SyntaxNode, original As BoundExpression, start As BoundExpression, lengthOpt As BoundExpression, source As BoundExpression, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.MidResult, syntax, type, hasErrors OrElse original.NonNullAndHasErrors() OrElse start.NonNullAndHasErrors() OrElse lengthOpt.NonNullAndHasErrors() OrElse source.NonNullAndHasErrors()) Debug.Assert(original IsNot Nothing, "Field 'original' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(start IsNot Nothing, "Field 'start' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(source IsNot Nothing, "Field 'source' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Original = original Me._Start = start Me._LengthOpt = lengthOpt Me._Source = source Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _Original As BoundExpression Public ReadOnly Property Original As BoundExpression Get Return _Original End Get End Property Private ReadOnly _Start As BoundExpression Public ReadOnly Property Start As BoundExpression Get Return _Start End Get End Property Private ReadOnly _LengthOpt As BoundExpression Public ReadOnly Property LengthOpt As BoundExpression Get Return _LengthOpt End Get End Property Private ReadOnly _Source As BoundExpression Public ReadOnly Property Source As BoundExpression Get Return _Source End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitMidResult(Me) End Function Public Function Update(original As BoundExpression, start As BoundExpression, lengthOpt As BoundExpression, source As BoundExpression, type As TypeSymbol) As BoundMidResult If original IsNot Me.Original OrElse start IsNot Me.Start OrElse lengthOpt IsNot Me.LengthOpt OrElse source IsNot Me.Source OrElse type IsNot Me.Type Then Dim result = New BoundMidResult(Me.Syntax, original, start, lengthOpt, source, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundConditionalAccess Inherits BoundExpression Public Sub New(syntax As SyntaxNode, receiver As BoundExpression, placeholder As BoundRValuePlaceholder, accessExpression As BoundExpression, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.ConditionalAccess, syntax, type, hasErrors OrElse receiver.NonNullAndHasErrors() OrElse placeholder.NonNullAndHasErrors() OrElse accessExpression.NonNullAndHasErrors()) Debug.Assert(receiver IsNot Nothing, "Field 'receiver' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(placeholder IsNot Nothing, "Field 'placeholder' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(accessExpression IsNot Nothing, "Field 'accessExpression' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Receiver = receiver Me._Placeholder = placeholder Me._AccessExpression = accessExpression End Sub Private ReadOnly _Receiver As BoundExpression Public ReadOnly Property Receiver As BoundExpression Get Return _Receiver End Get End Property Private ReadOnly _Placeholder As BoundRValuePlaceholder Public ReadOnly Property Placeholder As BoundRValuePlaceholder Get Return _Placeholder End Get End Property Private ReadOnly _AccessExpression As BoundExpression Public ReadOnly Property AccessExpression As BoundExpression Get Return _AccessExpression End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitConditionalAccess(Me) End Function Public Function Update(receiver As BoundExpression, placeholder As BoundRValuePlaceholder, accessExpression As BoundExpression, type As TypeSymbol) As BoundConditionalAccess If receiver IsNot Me.Receiver OrElse placeholder IsNot Me.Placeholder OrElse accessExpression IsNot Me.AccessExpression OrElse type IsNot Me.Type Then Dim result = New BoundConditionalAccess(Me.Syntax, receiver, placeholder, accessExpression, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundConditionalAccessReceiverPlaceholder Inherits BoundRValuePlaceholderBase Public Sub New(syntax As SyntaxNode, placeholderId As Integer, capture As Boolean, type As TypeSymbol, hasErrors As Boolean) MyBase.New(BoundKind.ConditionalAccessReceiverPlaceholder, syntax, type, hasErrors) Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._PlaceholderId = placeholderId Me._Capture = capture Validate() End Sub Private Partial Sub Validate() End Sub Public Sub New(syntax As SyntaxNode, placeholderId As Integer, capture As Boolean, type As TypeSymbol) MyBase.New(BoundKind.ConditionalAccessReceiverPlaceholder, syntax, type) Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._PlaceholderId = placeholderId Me._Capture = capture Validate() End Sub Private ReadOnly _PlaceholderId As Integer Public ReadOnly Property PlaceholderId As Integer Get Return _PlaceholderId End Get End Property Private ReadOnly _Capture As Boolean Public ReadOnly Property Capture As Boolean Get Return _Capture End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitConditionalAccessReceiverPlaceholder(Me) End Function Public Function Update(placeholderId As Integer, capture As Boolean, type As TypeSymbol) As BoundConditionalAccessReceiverPlaceholder If placeholderId <> Me.PlaceholderId OrElse capture <> Me.Capture OrElse type IsNot Me.Type Then Dim result = New BoundConditionalAccessReceiverPlaceholder(Me.Syntax, placeholderId, capture, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundLoweredConditionalAccess Inherits BoundExpression Public Sub New(syntax As SyntaxNode, receiver As BoundExpression, captureReceiver As Boolean, placeholderId As Integer, whenNotNull As BoundExpression, whenNullOpt As BoundExpression, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.LoweredConditionalAccess, syntax, type, hasErrors OrElse receiver.NonNullAndHasErrors() OrElse whenNotNull.NonNullAndHasErrors() OrElse whenNullOpt.NonNullAndHasErrors()) Debug.Assert(receiver IsNot Nothing, "Field 'receiver' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(whenNotNull IsNot Nothing, "Field 'whenNotNull' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Receiver = receiver Me._CaptureReceiver = captureReceiver Me._PlaceholderId = placeholderId Me._WhenNotNull = whenNotNull Me._WhenNullOpt = whenNullOpt Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _Receiver As BoundExpression Public ReadOnly Property Receiver As BoundExpression Get Return _Receiver End Get End Property Private ReadOnly _CaptureReceiver As Boolean Public ReadOnly Property CaptureReceiver As Boolean Get Return _CaptureReceiver End Get End Property Private ReadOnly _PlaceholderId As Integer Public ReadOnly Property PlaceholderId As Integer Get Return _PlaceholderId End Get End Property Private ReadOnly _WhenNotNull As BoundExpression Public ReadOnly Property WhenNotNull As BoundExpression Get Return _WhenNotNull End Get End Property Private ReadOnly _WhenNullOpt As BoundExpression Public ReadOnly Property WhenNullOpt As BoundExpression Get Return _WhenNullOpt End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitLoweredConditionalAccess(Me) End Function Public Function Update(receiver As BoundExpression, captureReceiver As Boolean, placeholderId As Integer, whenNotNull As BoundExpression, whenNullOpt As BoundExpression, type As TypeSymbol) As BoundLoweredConditionalAccess If receiver IsNot Me.Receiver OrElse captureReceiver <> Me.CaptureReceiver OrElse placeholderId <> Me.PlaceholderId OrElse whenNotNull IsNot Me.WhenNotNull OrElse whenNullOpt IsNot Me.WhenNullOpt OrElse type IsNot Me.Type Then Dim result = New BoundLoweredConditionalAccess(Me.Syntax, receiver, captureReceiver, placeholderId, whenNotNull, whenNullOpt, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundComplexConditionalAccessReceiver Inherits BoundExpression Public Sub New(syntax As SyntaxNode, valueTypeReceiver As BoundExpression, referenceTypeReceiver As BoundExpression, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.ComplexConditionalAccessReceiver, syntax, type, hasErrors OrElse valueTypeReceiver.NonNullAndHasErrors() OrElse referenceTypeReceiver.NonNullAndHasErrors()) Debug.Assert(valueTypeReceiver IsNot Nothing, "Field 'valueTypeReceiver' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(referenceTypeReceiver IsNot Nothing, "Field 'referenceTypeReceiver' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._ValueTypeReceiver = valueTypeReceiver Me._ReferenceTypeReceiver = referenceTypeReceiver Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _ValueTypeReceiver As BoundExpression Public ReadOnly Property ValueTypeReceiver As BoundExpression Get Return _ValueTypeReceiver End Get End Property Private ReadOnly _ReferenceTypeReceiver As BoundExpression Public ReadOnly Property ReferenceTypeReceiver As BoundExpression Get Return _ReferenceTypeReceiver End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitComplexConditionalAccessReceiver(Me) End Function Public Function Update(valueTypeReceiver As BoundExpression, referenceTypeReceiver As BoundExpression, type As TypeSymbol) As BoundComplexConditionalAccessReceiver If valueTypeReceiver IsNot Me.ValueTypeReceiver OrElse referenceTypeReceiver IsNot Me.ReferenceTypeReceiver OrElse type IsNot Me.Type Then Dim result = New BoundComplexConditionalAccessReceiver(Me.Syntax, valueTypeReceiver, referenceTypeReceiver, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundNameOfOperator Inherits BoundExpression Public Sub New(syntax As SyntaxNode, argument As BoundExpression, constantValueOpt As ConstantValue, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.NameOfOperator, syntax, type, hasErrors OrElse argument.NonNullAndHasErrors()) Debug.Assert(argument IsNot Nothing, "Field 'argument' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Argument = argument Me._ConstantValueOpt = constantValueOpt Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _Argument As BoundExpression Public ReadOnly Property Argument As BoundExpression Get Return _Argument End Get End Property Private ReadOnly _ConstantValueOpt As ConstantValue Public Overrides ReadOnly Property ConstantValueOpt As ConstantValue Get Return _ConstantValueOpt End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitNameOfOperator(Me) End Function Public Function Update(argument As BoundExpression, constantValueOpt As ConstantValue, type As TypeSymbol) As BoundNameOfOperator If argument IsNot Me.Argument OrElse constantValueOpt IsNot Me.ConstantValueOpt OrElse type IsNot Me.Type Then Dim result = New BoundNameOfOperator(Me.Syntax, argument, constantValueOpt, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundTypeAsValueExpression Inherits BoundExpression Public Sub New(syntax As SyntaxNode, expression As BoundTypeExpression, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.TypeAsValueExpression, syntax, type, hasErrors OrElse expression.NonNullAndHasErrors()) Debug.Assert(expression IsNot Nothing, "Field 'expression' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Expression = expression Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _Expression As BoundTypeExpression Public ReadOnly Property Expression As BoundTypeExpression Get Return _Expression End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitTypeAsValueExpression(Me) End Function Public Function Update(expression As BoundTypeExpression, type As TypeSymbol) As BoundTypeAsValueExpression If expression IsNot Me.Expression OrElse type IsNot Me.Type Then Dim result = New BoundTypeAsValueExpression(Me.Syntax, expression, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundInterpolatedStringExpression Inherits BoundExpression Public Sub New(syntax As SyntaxNode, contents As ImmutableArray(Of BoundNode), constructionOpt As BoundExpression, type As TypeSymbol, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.InterpolatedStringExpression, syntax, type, hasErrors OrElse contents.NonNullAndHasErrors() OrElse constructionOpt.NonNullAndHasErrors()) Debug.Assert(Not (contents.IsDefault), "Field 'contents' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Debug.Assert(type IsNot Nothing, "Field 'type' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Contents = contents Me._ConstructionOpt = constructionOpt Validate() End Sub Private Partial Sub Validate() End Sub Private ReadOnly _Contents As ImmutableArray(Of BoundNode) Public ReadOnly Property Contents As ImmutableArray(Of BoundNode) Get Return _Contents End Get End Property Private ReadOnly _ConstructionOpt As BoundExpression Public ReadOnly Property ConstructionOpt As BoundExpression Get Return _ConstructionOpt End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitInterpolatedStringExpression(Me) End Function Public Function Update(contents As ImmutableArray(Of BoundNode), constructionOpt As BoundExpression, type As TypeSymbol) As BoundInterpolatedStringExpression If contents <> Me.Contents OrElse constructionOpt IsNot Me.ConstructionOpt OrElse type IsNot Me.Type Then Dim result = New BoundInterpolatedStringExpression(Me.Syntax, contents, constructionOpt, type, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Partial Friend NotInheritable Class BoundInterpolation Inherits BoundNode Public Sub New(syntax As SyntaxNode, expression As BoundExpression, alignmentOpt As BoundExpression, formatStringOpt As BoundLiteral, Optional hasErrors As Boolean = False) MyBase.New(BoundKind.Interpolation, syntax, hasErrors OrElse expression.NonNullAndHasErrors() OrElse alignmentOpt.NonNullAndHasErrors() OrElse formatStringOpt.NonNullAndHasErrors()) Debug.Assert(expression IsNot Nothing, "Field 'expression' cannot be null (use Null=""allow"" in BoundNodes.xml to remove this check)") Me._Expression = expression Me._AlignmentOpt = alignmentOpt Me._FormatStringOpt = formatStringOpt End Sub Private ReadOnly _Expression As BoundExpression Public ReadOnly Property Expression As BoundExpression Get Return _Expression End Get End Property Private ReadOnly _AlignmentOpt As BoundExpression Public ReadOnly Property AlignmentOpt As BoundExpression Get Return _AlignmentOpt End Get End Property Private ReadOnly _FormatStringOpt As BoundLiteral Public ReadOnly Property FormatStringOpt As BoundLiteral Get Return _FormatStringOpt End Get End Property <DebuggerStepThrough> Public Overrides Function Accept(visitor as BoundTreeVisitor) As BoundNode Return visitor.VisitInterpolation(Me) End Function Public Function Update(expression As BoundExpression, alignmentOpt As BoundExpression, formatStringOpt As BoundLiteral) As BoundInterpolation If expression IsNot Me.Expression OrElse alignmentOpt IsNot Me.AlignmentOpt OrElse formatStringOpt IsNot Me.FormatStringOpt Then Dim result = New BoundInterpolation(Me.Syntax, expression, alignmentOpt, formatStringOpt, Me.HasErrors) result.CopyAttributes(Me) Return result End If Return Me End Function End Class Friend MustInherit Partial Class BoundTreeVisitor(Of A, R) <MethodImpl(MethodImplOptions.NoInlining), DebuggerStepThrough> Friend Function VisitInternal(node As BoundNode, arg As A) As R Select Case node.Kind Case BoundKind.TypeArguments Return VisitTypeArguments(CType(node, BoundTypeArguments), arg) Case BoundKind.OmittedArgument Return VisitOmittedArgument(CType(node, BoundOmittedArgument), arg) Case BoundKind.LValueToRValueWrapper Return VisitLValueToRValueWrapper(CType(node, BoundLValueToRValueWrapper), arg) Case BoundKind.WithLValueExpressionPlaceholder Return VisitWithLValueExpressionPlaceholder(CType(node, BoundWithLValueExpressionPlaceholder), arg) Case BoundKind.WithRValueExpressionPlaceholder Return VisitWithRValueExpressionPlaceholder(CType(node, BoundWithRValueExpressionPlaceholder), arg) Case BoundKind.RValuePlaceholder Return VisitRValuePlaceholder(CType(node, BoundRValuePlaceholder), arg) Case BoundKind.LValuePlaceholder Return VisitLValuePlaceholder(CType(node, BoundLValuePlaceholder), arg) Case BoundKind.Dup Return VisitDup(CType(node, BoundDup), arg) Case BoundKind.BadExpression Return VisitBadExpression(CType(node, BoundBadExpression), arg) Case BoundKind.BadStatement Return VisitBadStatement(CType(node, BoundBadStatement), arg) Case BoundKind.Parenthesized Return VisitParenthesized(CType(node, BoundParenthesized), arg) Case BoundKind.BadVariable Return VisitBadVariable(CType(node, BoundBadVariable), arg) Case BoundKind.ArrayAccess Return VisitArrayAccess(CType(node, BoundArrayAccess), arg) Case BoundKind.ArrayLength Return VisitArrayLength(CType(node, BoundArrayLength), arg) Case BoundKind.[GetType] Return VisitGetType(CType(node, BoundGetType), arg) Case BoundKind.FieldInfo Return VisitFieldInfo(CType(node, BoundFieldInfo), arg) Case BoundKind.MethodInfo Return VisitMethodInfo(CType(node, BoundMethodInfo), arg) Case BoundKind.TypeExpression Return VisitTypeExpression(CType(node, BoundTypeExpression), arg) Case BoundKind.TypeOrValueExpression Return VisitTypeOrValueExpression(CType(node, BoundTypeOrValueExpression), arg) Case BoundKind.NamespaceExpression Return VisitNamespaceExpression(CType(node, BoundNamespaceExpression), arg) Case BoundKind.MethodDefIndex Return VisitMethodDefIndex(CType(node, BoundMethodDefIndex), arg) Case BoundKind.MaximumMethodDefIndex Return VisitMaximumMethodDefIndex(CType(node, BoundMaximumMethodDefIndex), arg) Case BoundKind.InstrumentationPayloadRoot Return VisitInstrumentationPayloadRoot(CType(node, BoundInstrumentationPayloadRoot), arg) Case BoundKind.ModuleVersionId Return VisitModuleVersionId(CType(node, BoundModuleVersionId), arg) Case BoundKind.ModuleVersionIdString Return VisitModuleVersionIdString(CType(node, BoundModuleVersionIdString), arg) Case BoundKind.SourceDocumentIndex Return VisitSourceDocumentIndex(CType(node, BoundSourceDocumentIndex), arg) Case BoundKind.UnaryOperator Return VisitUnaryOperator(CType(node, BoundUnaryOperator), arg) Case BoundKind.UserDefinedUnaryOperator Return VisitUserDefinedUnaryOperator(CType(node, BoundUserDefinedUnaryOperator), arg) Case BoundKind.NullableIsTrueOperator Return VisitNullableIsTrueOperator(CType(node, BoundNullableIsTrueOperator), arg) Case BoundKind.BinaryOperator Return VisitBinaryOperator(CType(node, BoundBinaryOperator), arg) Case BoundKind.UserDefinedBinaryOperator Return VisitUserDefinedBinaryOperator(CType(node, BoundUserDefinedBinaryOperator), arg) Case BoundKind.UserDefinedShortCircuitingOperator Return VisitUserDefinedShortCircuitingOperator(CType(node, BoundUserDefinedShortCircuitingOperator), arg) Case BoundKind.CompoundAssignmentTargetPlaceholder Return VisitCompoundAssignmentTargetPlaceholder(CType(node, BoundCompoundAssignmentTargetPlaceholder), arg) Case BoundKind.AssignmentOperator Return VisitAssignmentOperator(CType(node, BoundAssignmentOperator), arg) Case BoundKind.ReferenceAssignment Return VisitReferenceAssignment(CType(node, BoundReferenceAssignment), arg) Case BoundKind.AddressOfOperator Return VisitAddressOfOperator(CType(node, BoundAddressOfOperator), arg) Case BoundKind.TernaryConditionalExpression Return VisitTernaryConditionalExpression(CType(node, BoundTernaryConditionalExpression), arg) Case BoundKind.BinaryConditionalExpression Return VisitBinaryConditionalExpression(CType(node, BoundBinaryConditionalExpression), arg) Case BoundKind.Conversion Return VisitConversion(CType(node, BoundConversion), arg) Case BoundKind.RelaxationLambda Return VisitRelaxationLambda(CType(node, BoundRelaxationLambda), arg) Case BoundKind.ConvertedTupleElements Return VisitConvertedTupleElements(CType(node, BoundConvertedTupleElements), arg) Case BoundKind.UserDefinedConversion Return VisitUserDefinedConversion(CType(node, BoundUserDefinedConversion), arg) Case BoundKind.[DirectCast] Return VisitDirectCast(CType(node, BoundDirectCast), arg) Case BoundKind.[TryCast] Return VisitTryCast(CType(node, BoundTryCast), arg) Case BoundKind.[TypeOf] Return VisitTypeOf(CType(node, BoundTypeOf), arg) Case BoundKind.SequencePoint Return VisitSequencePoint(CType(node, BoundSequencePoint), arg) Case BoundKind.SequencePointExpression Return VisitSequencePointExpression(CType(node, BoundSequencePointExpression), arg) Case BoundKind.SequencePointWithSpan Return VisitSequencePointWithSpan(CType(node, BoundSequencePointWithSpan), arg) Case BoundKind.NoOpStatement Return VisitNoOpStatement(CType(node, BoundNoOpStatement), arg) Case BoundKind.MethodGroup Return VisitMethodGroup(CType(node, BoundMethodGroup), arg) Case BoundKind.PropertyGroup Return VisitPropertyGroup(CType(node, BoundPropertyGroup), arg) Case BoundKind.ReturnStatement Return VisitReturnStatement(CType(node, BoundReturnStatement), arg) Case BoundKind.YieldStatement Return VisitYieldStatement(CType(node, BoundYieldStatement), arg) Case BoundKind.ThrowStatement Return VisitThrowStatement(CType(node, BoundThrowStatement), arg) Case BoundKind.RedimStatement Return VisitRedimStatement(CType(node, BoundRedimStatement), arg) Case BoundKind.RedimClause Return VisitRedimClause(CType(node, BoundRedimClause), arg) Case BoundKind.EraseStatement Return VisitEraseStatement(CType(node, BoundEraseStatement), arg) Case BoundKind.[Call] Return VisitCall(CType(node, BoundCall), arg) Case BoundKind.Attribute Return VisitAttribute(CType(node, BoundAttribute), arg) Case BoundKind.LateMemberAccess Return VisitLateMemberAccess(CType(node, BoundLateMemberAccess), arg) Case BoundKind.LateInvocation Return VisitLateInvocation(CType(node, BoundLateInvocation), arg) Case BoundKind.LateAddressOfOperator Return VisitLateAddressOfOperator(CType(node, BoundLateAddressOfOperator), arg) Case BoundKind.TupleLiteral Return VisitTupleLiteral(CType(node, BoundTupleLiteral), arg) Case BoundKind.ConvertedTupleLiteral Return VisitConvertedTupleLiteral(CType(node, BoundConvertedTupleLiteral), arg) Case BoundKind.ObjectCreationExpression Return VisitObjectCreationExpression(CType(node, BoundObjectCreationExpression), arg) Case BoundKind.NoPiaObjectCreationExpression Return VisitNoPiaObjectCreationExpression(CType(node, BoundNoPiaObjectCreationExpression), arg) Case BoundKind.AnonymousTypeCreationExpression Return VisitAnonymousTypeCreationExpression(CType(node, BoundAnonymousTypeCreationExpression), arg) Case BoundKind.AnonymousTypePropertyAccess Return VisitAnonymousTypePropertyAccess(CType(node, BoundAnonymousTypePropertyAccess), arg) Case BoundKind.AnonymousTypeFieldInitializer Return VisitAnonymousTypeFieldInitializer(CType(node, BoundAnonymousTypeFieldInitializer), arg) Case BoundKind.ObjectInitializerExpression Return VisitObjectInitializerExpression(CType(node, BoundObjectInitializerExpression), arg) Case BoundKind.CollectionInitializerExpression Return VisitCollectionInitializerExpression(CType(node, BoundCollectionInitializerExpression), arg) Case BoundKind.NewT Return VisitNewT(CType(node, BoundNewT), arg) Case BoundKind.DelegateCreationExpression Return VisitDelegateCreationExpression(CType(node, BoundDelegateCreationExpression), arg) Case BoundKind.ArrayCreation Return VisitArrayCreation(CType(node, BoundArrayCreation), arg) Case BoundKind.ArrayLiteral Return VisitArrayLiteral(CType(node, BoundArrayLiteral), arg) Case BoundKind.ArrayInitialization Return VisitArrayInitialization(CType(node, BoundArrayInitialization), arg) Case BoundKind.FieldAccess Return VisitFieldAccess(CType(node, BoundFieldAccess), arg) Case BoundKind.PropertyAccess Return VisitPropertyAccess(CType(node, BoundPropertyAccess), arg) Case BoundKind.EventAccess Return VisitEventAccess(CType(node, BoundEventAccess), arg) Case BoundKind.Block Return VisitBlock(CType(node, BoundBlock), arg) Case BoundKind.StateMachineScope Return VisitStateMachineScope(CType(node, BoundStateMachineScope), arg) Case BoundKind.LocalDeclaration Return VisitLocalDeclaration(CType(node, BoundLocalDeclaration), arg) Case BoundKind.AsNewLocalDeclarations Return VisitAsNewLocalDeclarations(CType(node, BoundAsNewLocalDeclarations), arg) Case BoundKind.DimStatement Return VisitDimStatement(CType(node, BoundDimStatement), arg) Case BoundKind.Initializer Return VisitInitializer(CType(node, BoundInitializer), arg) Case BoundKind.FieldInitializer Return VisitFieldInitializer(CType(node, BoundFieldInitializer), arg) Case BoundKind.PropertyInitializer Return VisitPropertyInitializer(CType(node, BoundPropertyInitializer), arg) Case BoundKind.ParameterEqualsValue Return VisitParameterEqualsValue(CType(node, BoundParameterEqualsValue), arg) Case BoundKind.GlobalStatementInitializer Return VisitGlobalStatementInitializer(CType(node, BoundGlobalStatementInitializer), arg) Case BoundKind.Sequence Return VisitSequence(CType(node, BoundSequence), arg) Case BoundKind.ExpressionStatement Return VisitExpressionStatement(CType(node, BoundExpressionStatement), arg) Case BoundKind.IfStatement Return VisitIfStatement(CType(node, BoundIfStatement), arg) Case BoundKind.SelectStatement Return VisitSelectStatement(CType(node, BoundSelectStatement), arg) Case BoundKind.CaseBlock Return VisitCaseBlock(CType(node, BoundCaseBlock), arg) Case BoundKind.CaseStatement Return VisitCaseStatement(CType(node, BoundCaseStatement), arg) Case BoundKind.SimpleCaseClause Return VisitSimpleCaseClause(CType(node, BoundSimpleCaseClause), arg) Case BoundKind.RangeCaseClause Return VisitRangeCaseClause(CType(node, BoundRangeCaseClause), arg) Case BoundKind.RelationalCaseClause Return VisitRelationalCaseClause(CType(node, BoundRelationalCaseClause), arg) Case BoundKind.DoLoopStatement Return VisitDoLoopStatement(CType(node, BoundDoLoopStatement), arg) Case BoundKind.WhileStatement Return VisitWhileStatement(CType(node, BoundWhileStatement), arg) Case BoundKind.ForToUserDefinedOperators Return VisitForToUserDefinedOperators(CType(node, BoundForToUserDefinedOperators), arg) Case BoundKind.ForToStatement Return VisitForToStatement(CType(node, BoundForToStatement), arg) Case BoundKind.ForEachStatement Return VisitForEachStatement(CType(node, BoundForEachStatement), arg) Case BoundKind.ExitStatement Return VisitExitStatement(CType(node, BoundExitStatement), arg) Case BoundKind.ContinueStatement Return VisitContinueStatement(CType(node, BoundContinueStatement), arg) Case BoundKind.TryStatement Return VisitTryStatement(CType(node, BoundTryStatement), arg) Case BoundKind.CatchBlock Return VisitCatchBlock(CType(node, BoundCatchBlock), arg) Case BoundKind.Literal Return VisitLiteral(CType(node, BoundLiteral), arg) Case BoundKind.MeReference Return VisitMeReference(CType(node, BoundMeReference), arg) Case BoundKind.ValueTypeMeReference Return VisitValueTypeMeReference(CType(node, BoundValueTypeMeReference), arg) Case BoundKind.MyBaseReference Return VisitMyBaseReference(CType(node, BoundMyBaseReference), arg) Case BoundKind.MyClassReference Return VisitMyClassReference(CType(node, BoundMyClassReference), arg) Case BoundKind.PreviousSubmissionReference Return VisitPreviousSubmissionReference(CType(node, BoundPreviousSubmissionReference), arg) Case BoundKind.HostObjectMemberReference Return VisitHostObjectMemberReference(CType(node, BoundHostObjectMemberReference), arg) Case BoundKind.Local Return VisitLocal(CType(node, BoundLocal), arg) Case BoundKind.PseudoVariable Return VisitPseudoVariable(CType(node, BoundPseudoVariable), arg) Case BoundKind.Parameter Return VisitParameter(CType(node, BoundParameter), arg) Case BoundKind.ByRefArgumentPlaceholder Return VisitByRefArgumentPlaceholder(CType(node, BoundByRefArgumentPlaceholder), arg) Case BoundKind.ByRefArgumentWithCopyBack Return VisitByRefArgumentWithCopyBack(CType(node, BoundByRefArgumentWithCopyBack), arg) Case BoundKind.LateBoundArgumentSupportingAssignmentWithCapture Return VisitLateBoundArgumentSupportingAssignmentWithCapture(CType(node, BoundLateBoundArgumentSupportingAssignmentWithCapture), arg) Case BoundKind.LabelStatement Return VisitLabelStatement(CType(node, BoundLabelStatement), arg) Case BoundKind.Label Return VisitLabel(CType(node, BoundLabel), arg) Case BoundKind.GotoStatement Return VisitGotoStatement(CType(node, BoundGotoStatement), arg) Case BoundKind.StatementList Return VisitStatementList(CType(node, BoundStatementList), arg) Case BoundKind.ConditionalGoto Return VisitConditionalGoto(CType(node, BoundConditionalGoto), arg) Case BoundKind.WithStatement Return VisitWithStatement(CType(node, BoundWithStatement), arg) Case BoundKind.UnboundLambda Return VisitUnboundLambda(CType(node, UnboundLambda), arg) Case BoundKind.Lambda Return VisitLambda(CType(node, BoundLambda), arg) Case BoundKind.QueryExpression Return VisitQueryExpression(CType(node, BoundQueryExpression), arg) Case BoundKind.QuerySource Return VisitQuerySource(CType(node, BoundQuerySource), arg) Case BoundKind.ToQueryableCollectionConversion Return VisitToQueryableCollectionConversion(CType(node, BoundToQueryableCollectionConversion), arg) Case BoundKind.QueryableSource Return VisitQueryableSource(CType(node, BoundQueryableSource), arg) Case BoundKind.QueryClause Return VisitQueryClause(CType(node, BoundQueryClause), arg) Case BoundKind.Ordering Return VisitOrdering(CType(node, BoundOrdering), arg) Case BoundKind.QueryLambda Return VisitQueryLambda(CType(node, BoundQueryLambda), arg) Case BoundKind.RangeVariableAssignment Return VisitRangeVariableAssignment(CType(node, BoundRangeVariableAssignment), arg) Case BoundKind.GroupTypeInferenceLambda Return VisitGroupTypeInferenceLambda(CType(node, GroupTypeInferenceLambda), arg) Case BoundKind.AggregateClause Return VisitAggregateClause(CType(node, BoundAggregateClause), arg) Case BoundKind.GroupAggregation Return VisitGroupAggregation(CType(node, BoundGroupAggregation), arg) Case BoundKind.RangeVariable Return VisitRangeVariable(CType(node, BoundRangeVariable), arg) Case BoundKind.AddHandlerStatement Return VisitAddHandlerStatement(CType(node, BoundAddHandlerStatement), arg) Case BoundKind.RemoveHandlerStatement Return VisitRemoveHandlerStatement(CType(node, BoundRemoveHandlerStatement), arg) Case BoundKind.RaiseEventStatement Return VisitRaiseEventStatement(CType(node, BoundRaiseEventStatement), arg) Case BoundKind.UsingStatement Return VisitUsingStatement(CType(node, BoundUsingStatement), arg) Case BoundKind.SyncLockStatement Return VisitSyncLockStatement(CType(node, BoundSyncLockStatement), arg) Case BoundKind.XmlName Return VisitXmlName(CType(node, BoundXmlName), arg) Case BoundKind.XmlNamespace Return VisitXmlNamespace(CType(node, BoundXmlNamespace), arg) Case BoundKind.XmlDocument Return VisitXmlDocument(CType(node, BoundXmlDocument), arg) Case BoundKind.XmlDeclaration Return VisitXmlDeclaration(CType(node, BoundXmlDeclaration), arg) Case BoundKind.XmlProcessingInstruction Return VisitXmlProcessingInstruction(CType(node, BoundXmlProcessingInstruction), arg) Case BoundKind.XmlComment Return VisitXmlComment(CType(node, BoundXmlComment), arg) Case BoundKind.XmlAttribute Return VisitXmlAttribute(CType(node, BoundXmlAttribute), arg) Case BoundKind.XmlElement Return VisitXmlElement(CType(node, BoundXmlElement), arg) Case BoundKind.XmlMemberAccess Return VisitXmlMemberAccess(CType(node, BoundXmlMemberAccess), arg) Case BoundKind.XmlEmbeddedExpression Return VisitXmlEmbeddedExpression(CType(node, BoundXmlEmbeddedExpression), arg) Case BoundKind.XmlCData Return VisitXmlCData(CType(node, BoundXmlCData), arg) Case BoundKind.ResumeStatement Return VisitResumeStatement(CType(node, BoundResumeStatement), arg) Case BoundKind.OnErrorStatement Return VisitOnErrorStatement(CType(node, BoundOnErrorStatement), arg) Case BoundKind.UnstructuredExceptionHandlingStatement Return VisitUnstructuredExceptionHandlingStatement(CType(node, BoundUnstructuredExceptionHandlingStatement), arg) Case BoundKind.UnstructuredExceptionHandlingCatchFilter Return VisitUnstructuredExceptionHandlingCatchFilter(CType(node, BoundUnstructuredExceptionHandlingCatchFilter), arg) Case BoundKind.UnstructuredExceptionOnErrorSwitch Return VisitUnstructuredExceptionOnErrorSwitch(CType(node, BoundUnstructuredExceptionOnErrorSwitch), arg) Case BoundKind.UnstructuredExceptionResumeSwitch Return VisitUnstructuredExceptionResumeSwitch(CType(node, BoundUnstructuredExceptionResumeSwitch), arg) Case BoundKind.AwaitOperator Return VisitAwaitOperator(CType(node, BoundAwaitOperator), arg) Case BoundKind.SpillSequence Return VisitSpillSequence(CType(node, BoundSpillSequence), arg) Case BoundKind.StopStatement Return VisitStopStatement(CType(node, BoundStopStatement), arg) Case BoundKind.EndStatement Return VisitEndStatement(CType(node, BoundEndStatement), arg) Case BoundKind.MidResult Return VisitMidResult(CType(node, BoundMidResult), arg) Case BoundKind.ConditionalAccess Return VisitConditionalAccess(CType(node, BoundConditionalAccess), arg) Case BoundKind.ConditionalAccessReceiverPlaceholder Return VisitConditionalAccessReceiverPlaceholder(CType(node, BoundConditionalAccessReceiverPlaceholder), arg) Case BoundKind.LoweredConditionalAccess Return VisitLoweredConditionalAccess(CType(node, BoundLoweredConditionalAccess), arg) Case BoundKind.ComplexConditionalAccessReceiver Return VisitComplexConditionalAccessReceiver(CType(node, BoundComplexConditionalAccessReceiver), arg) Case BoundKind.NameOfOperator Return VisitNameOfOperator(CType(node, BoundNameOfOperator), arg) Case BoundKind.TypeAsValueExpression Return VisitTypeAsValueExpression(CType(node, BoundTypeAsValueExpression), arg) Case BoundKind.InterpolatedStringExpression Return VisitInterpolatedStringExpression(CType(node, BoundInterpolatedStringExpression), arg) Case BoundKind.Interpolation Return VisitInterpolation(CType(node, BoundInterpolation), arg) End Select Return DefaultVisit(node, arg) End Function End Class Friend MustInherit Partial Class BoundTreeVisitor(Of A, R) Public Overridable Function VisitTypeArguments(node As BoundTypeArguments, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitOmittedArgument(node As BoundOmittedArgument, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitLValueToRValueWrapper(node As BoundLValueToRValueWrapper, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitWithLValueExpressionPlaceholder(node As BoundWithLValueExpressionPlaceholder, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitWithRValueExpressionPlaceholder(node As BoundWithRValueExpressionPlaceholder, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitRValuePlaceholder(node As BoundRValuePlaceholder, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitLValuePlaceholder(node As BoundLValuePlaceholder, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitDup(node As BoundDup, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitBadExpression(node As BoundBadExpression, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitBadStatement(node As BoundBadStatement, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitParenthesized(node As BoundParenthesized, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitBadVariable(node As BoundBadVariable, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitArrayAccess(node As BoundArrayAccess, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitArrayLength(node As BoundArrayLength, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitGetType(node As BoundGetType, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitFieldInfo(node As BoundFieldInfo, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitMethodInfo(node As BoundMethodInfo, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitTypeExpression(node As BoundTypeExpression, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitTypeOrValueExpression(node As BoundTypeOrValueExpression, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitNamespaceExpression(node As BoundNamespaceExpression, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitMethodDefIndex(node As BoundMethodDefIndex, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitMaximumMethodDefIndex(node As BoundMaximumMethodDefIndex, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitInstrumentationPayloadRoot(node As BoundInstrumentationPayloadRoot, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitModuleVersionId(node As BoundModuleVersionId, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitModuleVersionIdString(node As BoundModuleVersionIdString, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitSourceDocumentIndex(node As BoundSourceDocumentIndex, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitUnaryOperator(node As BoundUnaryOperator, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitUserDefinedUnaryOperator(node As BoundUserDefinedUnaryOperator, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitNullableIsTrueOperator(node As BoundNullableIsTrueOperator, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitBinaryOperator(node As BoundBinaryOperator, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitUserDefinedBinaryOperator(node As BoundUserDefinedBinaryOperator, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitUserDefinedShortCircuitingOperator(node As BoundUserDefinedShortCircuitingOperator, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitCompoundAssignmentTargetPlaceholder(node As BoundCompoundAssignmentTargetPlaceholder, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitAssignmentOperator(node As BoundAssignmentOperator, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitReferenceAssignment(node As BoundReferenceAssignment, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitAddressOfOperator(node As BoundAddressOfOperator, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitTernaryConditionalExpression(node As BoundTernaryConditionalExpression, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitBinaryConditionalExpression(node As BoundBinaryConditionalExpression, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitConversion(node As BoundConversion, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitRelaxationLambda(node As BoundRelaxationLambda, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitConvertedTupleElements(node As BoundConvertedTupleElements, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitUserDefinedConversion(node As BoundUserDefinedConversion, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitDirectCast(node As BoundDirectCast, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitTryCast(node As BoundTryCast, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitTypeOf(node As BoundTypeOf, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitSequencePoint(node As BoundSequencePoint, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitSequencePointExpression(node As BoundSequencePointExpression, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitSequencePointWithSpan(node As BoundSequencePointWithSpan, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitNoOpStatement(node As BoundNoOpStatement, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitMethodGroup(node As BoundMethodGroup, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitPropertyGroup(node As BoundPropertyGroup, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitReturnStatement(node As BoundReturnStatement, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitYieldStatement(node As BoundYieldStatement, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitThrowStatement(node As BoundThrowStatement, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitRedimStatement(node As BoundRedimStatement, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitRedimClause(node As BoundRedimClause, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitEraseStatement(node As BoundEraseStatement, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitCall(node As BoundCall, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitAttribute(node As BoundAttribute, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitLateMemberAccess(node As BoundLateMemberAccess, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitLateInvocation(node As BoundLateInvocation, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitLateAddressOfOperator(node As BoundLateAddressOfOperator, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitTupleLiteral(node As BoundTupleLiteral, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitConvertedTupleLiteral(node As BoundConvertedTupleLiteral, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitObjectCreationExpression(node As BoundObjectCreationExpression, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitNoPiaObjectCreationExpression(node As BoundNoPiaObjectCreationExpression, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitAnonymousTypeCreationExpression(node As BoundAnonymousTypeCreationExpression, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitAnonymousTypePropertyAccess(node As BoundAnonymousTypePropertyAccess, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitAnonymousTypeFieldInitializer(node As BoundAnonymousTypeFieldInitializer, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitObjectInitializerExpression(node As BoundObjectInitializerExpression, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitCollectionInitializerExpression(node As BoundCollectionInitializerExpression, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitNewT(node As BoundNewT, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitDelegateCreationExpression(node As BoundDelegateCreationExpression, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitArrayCreation(node As BoundArrayCreation, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitArrayLiteral(node As BoundArrayLiteral, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitArrayInitialization(node As BoundArrayInitialization, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitFieldAccess(node As BoundFieldAccess, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitPropertyAccess(node As BoundPropertyAccess, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitEventAccess(node As BoundEventAccess, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitBlock(node As BoundBlock, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitStateMachineScope(node As BoundStateMachineScope, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitLocalDeclaration(node As BoundLocalDeclaration, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitAsNewLocalDeclarations(node As BoundAsNewLocalDeclarations, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitDimStatement(node As BoundDimStatement, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitInitializer(node As BoundInitializer, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitFieldInitializer(node As BoundFieldInitializer, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitPropertyInitializer(node As BoundPropertyInitializer, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitParameterEqualsValue(node As BoundParameterEqualsValue, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitGlobalStatementInitializer(node As BoundGlobalStatementInitializer, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitSequence(node As BoundSequence, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitExpressionStatement(node As BoundExpressionStatement, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitIfStatement(node As BoundIfStatement, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitSelectStatement(node As BoundSelectStatement, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitCaseBlock(node As BoundCaseBlock, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitCaseStatement(node As BoundCaseStatement, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitSimpleCaseClause(node As BoundSimpleCaseClause, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitRangeCaseClause(node As BoundRangeCaseClause, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitRelationalCaseClause(node As BoundRelationalCaseClause, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitDoLoopStatement(node As BoundDoLoopStatement, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitWhileStatement(node As BoundWhileStatement, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitForToUserDefinedOperators(node As BoundForToUserDefinedOperators, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitForToStatement(node As BoundForToStatement, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitForEachStatement(node As BoundForEachStatement, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitExitStatement(node As BoundExitStatement, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitContinueStatement(node As BoundContinueStatement, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitTryStatement(node As BoundTryStatement, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitCatchBlock(node As BoundCatchBlock, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitLiteral(node As BoundLiteral, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitMeReference(node As BoundMeReference, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitValueTypeMeReference(node As BoundValueTypeMeReference, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitMyBaseReference(node As BoundMyBaseReference, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitMyClassReference(node As BoundMyClassReference, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitPreviousSubmissionReference(node As BoundPreviousSubmissionReference, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitHostObjectMemberReference(node As BoundHostObjectMemberReference, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitLocal(node As BoundLocal, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitPseudoVariable(node As BoundPseudoVariable, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitParameter(node As BoundParameter, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitByRefArgumentPlaceholder(node As BoundByRefArgumentPlaceholder, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitByRefArgumentWithCopyBack(node As BoundByRefArgumentWithCopyBack, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitLateBoundArgumentSupportingAssignmentWithCapture(node As BoundLateBoundArgumentSupportingAssignmentWithCapture, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitLabelStatement(node As BoundLabelStatement, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitLabel(node As BoundLabel, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitGotoStatement(node As BoundGotoStatement, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitStatementList(node As BoundStatementList, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitConditionalGoto(node As BoundConditionalGoto, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitWithStatement(node As BoundWithStatement, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitUnboundLambda(node As UnboundLambda, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitLambda(node As BoundLambda, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitQueryExpression(node As BoundQueryExpression, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitQuerySource(node As BoundQuerySource, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitToQueryableCollectionConversion(node As BoundToQueryableCollectionConversion, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitQueryableSource(node As BoundQueryableSource, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitQueryClause(node As BoundQueryClause, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitOrdering(node As BoundOrdering, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitQueryLambda(node As BoundQueryLambda, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitRangeVariableAssignment(node As BoundRangeVariableAssignment, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitGroupTypeInferenceLambda(node As GroupTypeInferenceLambda, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitAggregateClause(node As BoundAggregateClause, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitGroupAggregation(node As BoundGroupAggregation, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitRangeVariable(node As BoundRangeVariable, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitAddHandlerStatement(node As BoundAddHandlerStatement, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitRemoveHandlerStatement(node As BoundRemoveHandlerStatement, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitRaiseEventStatement(node As BoundRaiseEventStatement, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitUsingStatement(node As BoundUsingStatement, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitSyncLockStatement(node As BoundSyncLockStatement, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitXmlName(node As BoundXmlName, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitXmlNamespace(node As BoundXmlNamespace, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitXmlDocument(node As BoundXmlDocument, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitXmlDeclaration(node As BoundXmlDeclaration, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitXmlProcessingInstruction(node As BoundXmlProcessingInstruction, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitXmlComment(node As BoundXmlComment, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitXmlAttribute(node As BoundXmlAttribute, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitXmlElement(node As BoundXmlElement, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitXmlMemberAccess(node As BoundXmlMemberAccess, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitXmlEmbeddedExpression(node As BoundXmlEmbeddedExpression, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitXmlCData(node As BoundXmlCData, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitResumeStatement(node As BoundResumeStatement, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitOnErrorStatement(node As BoundOnErrorStatement, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitUnstructuredExceptionHandlingStatement(node As BoundUnstructuredExceptionHandlingStatement, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitUnstructuredExceptionHandlingCatchFilter(node As BoundUnstructuredExceptionHandlingCatchFilter, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitUnstructuredExceptionOnErrorSwitch(node As BoundUnstructuredExceptionOnErrorSwitch, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitUnstructuredExceptionResumeSwitch(node As BoundUnstructuredExceptionResumeSwitch, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitAwaitOperator(node As BoundAwaitOperator, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitSpillSequence(node As BoundSpillSequence, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitStopStatement(node As BoundStopStatement, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitEndStatement(node As BoundEndStatement, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitMidResult(node As BoundMidResult, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitConditionalAccess(node As BoundConditionalAccess, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitConditionalAccessReceiverPlaceholder(node As BoundConditionalAccessReceiverPlaceholder, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitLoweredConditionalAccess(node As BoundLoweredConditionalAccess, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitComplexConditionalAccessReceiver(node As BoundComplexConditionalAccessReceiver, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitNameOfOperator(node As BoundNameOfOperator, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitTypeAsValueExpression(node As BoundTypeAsValueExpression, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitInterpolatedStringExpression(node As BoundInterpolatedStringExpression, arg As A) As R Return Me.DefaultVisit(node, arg) End Function Public Overridable Function VisitInterpolation(node As BoundInterpolation, arg As A) As R Return Me.DefaultVisit(node, arg) End Function End Class Friend MustInherit Partial Class BoundTreeVisitor Public Overridable Function VisitTypeArguments(node As BoundTypeArguments) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitOmittedArgument(node As BoundOmittedArgument) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitLValueToRValueWrapper(node As BoundLValueToRValueWrapper) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitWithLValueExpressionPlaceholder(node As BoundWithLValueExpressionPlaceholder) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitWithRValueExpressionPlaceholder(node As BoundWithRValueExpressionPlaceholder) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitRValuePlaceholder(node As BoundRValuePlaceholder) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitLValuePlaceholder(node As BoundLValuePlaceholder) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitDup(node As BoundDup) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitBadExpression(node As BoundBadExpression) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitBadStatement(node As BoundBadStatement) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitParenthesized(node As BoundParenthesized) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitBadVariable(node As BoundBadVariable) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitArrayAccess(node As BoundArrayAccess) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitArrayLength(node As BoundArrayLength) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitGetType(node As BoundGetType) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitFieldInfo(node As BoundFieldInfo) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitMethodInfo(node As BoundMethodInfo) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitTypeExpression(node As BoundTypeExpression) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitTypeOrValueExpression(node As BoundTypeOrValueExpression) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitNamespaceExpression(node As BoundNamespaceExpression) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitMethodDefIndex(node As BoundMethodDefIndex) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitMaximumMethodDefIndex(node As BoundMaximumMethodDefIndex) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitInstrumentationPayloadRoot(node As BoundInstrumentationPayloadRoot) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitModuleVersionId(node As BoundModuleVersionId) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitModuleVersionIdString(node As BoundModuleVersionIdString) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitSourceDocumentIndex(node As BoundSourceDocumentIndex) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitUnaryOperator(node As BoundUnaryOperator) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitUserDefinedUnaryOperator(node As BoundUserDefinedUnaryOperator) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitNullableIsTrueOperator(node As BoundNullableIsTrueOperator) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitBinaryOperator(node As BoundBinaryOperator) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitUserDefinedBinaryOperator(node As BoundUserDefinedBinaryOperator) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitUserDefinedShortCircuitingOperator(node As BoundUserDefinedShortCircuitingOperator) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitCompoundAssignmentTargetPlaceholder(node As BoundCompoundAssignmentTargetPlaceholder) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitAssignmentOperator(node As BoundAssignmentOperator) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitReferenceAssignment(node As BoundReferenceAssignment) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitAddressOfOperator(node As BoundAddressOfOperator) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitTernaryConditionalExpression(node As BoundTernaryConditionalExpression) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitBinaryConditionalExpression(node As BoundBinaryConditionalExpression) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitConversion(node As BoundConversion) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitRelaxationLambda(node As BoundRelaxationLambda) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitConvertedTupleElements(node As BoundConvertedTupleElements) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitUserDefinedConversion(node As BoundUserDefinedConversion) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitDirectCast(node As BoundDirectCast) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitTryCast(node As BoundTryCast) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitTypeOf(node As BoundTypeOf) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitSequencePoint(node As BoundSequencePoint) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitSequencePointExpression(node As BoundSequencePointExpression) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitSequencePointWithSpan(node As BoundSequencePointWithSpan) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitNoOpStatement(node As BoundNoOpStatement) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitMethodGroup(node As BoundMethodGroup) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitPropertyGroup(node As BoundPropertyGroup) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitReturnStatement(node As BoundReturnStatement) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitYieldStatement(node As BoundYieldStatement) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitThrowStatement(node As BoundThrowStatement) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitRedimStatement(node As BoundRedimStatement) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitRedimClause(node As BoundRedimClause) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitEraseStatement(node As BoundEraseStatement) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitCall(node As BoundCall) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitAttribute(node As BoundAttribute) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitLateMemberAccess(node As BoundLateMemberAccess) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitLateInvocation(node As BoundLateInvocation) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitLateAddressOfOperator(node As BoundLateAddressOfOperator) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitTupleLiteral(node As BoundTupleLiteral) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitConvertedTupleLiteral(node As BoundConvertedTupleLiteral) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitObjectCreationExpression(node As BoundObjectCreationExpression) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitNoPiaObjectCreationExpression(node As BoundNoPiaObjectCreationExpression) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitAnonymousTypeCreationExpression(node As BoundAnonymousTypeCreationExpression) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitAnonymousTypePropertyAccess(node As BoundAnonymousTypePropertyAccess) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitAnonymousTypeFieldInitializer(node As BoundAnonymousTypeFieldInitializer) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitObjectInitializerExpression(node As BoundObjectInitializerExpression) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitCollectionInitializerExpression(node As BoundCollectionInitializerExpression) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitNewT(node As BoundNewT) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitDelegateCreationExpression(node As BoundDelegateCreationExpression) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitArrayCreation(node As BoundArrayCreation) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitArrayLiteral(node As BoundArrayLiteral) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitArrayInitialization(node As BoundArrayInitialization) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitFieldAccess(node As BoundFieldAccess) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitPropertyAccess(node As BoundPropertyAccess) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitEventAccess(node As BoundEventAccess) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitBlock(node As BoundBlock) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitStateMachineScope(node As BoundStateMachineScope) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitLocalDeclaration(node As BoundLocalDeclaration) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitAsNewLocalDeclarations(node As BoundAsNewLocalDeclarations) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitDimStatement(node As BoundDimStatement) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitInitializer(node As BoundInitializer) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitFieldInitializer(node As BoundFieldInitializer) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitPropertyInitializer(node As BoundPropertyInitializer) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitParameterEqualsValue(node As BoundParameterEqualsValue) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitGlobalStatementInitializer(node As BoundGlobalStatementInitializer) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitSequence(node As BoundSequence) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitExpressionStatement(node As BoundExpressionStatement) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitIfStatement(node As BoundIfStatement) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitSelectStatement(node As BoundSelectStatement) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitCaseBlock(node As BoundCaseBlock) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitCaseStatement(node As BoundCaseStatement) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitSimpleCaseClause(node As BoundSimpleCaseClause) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitRangeCaseClause(node As BoundRangeCaseClause) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitRelationalCaseClause(node As BoundRelationalCaseClause) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitDoLoopStatement(node As BoundDoLoopStatement) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitWhileStatement(node As BoundWhileStatement) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitForToUserDefinedOperators(node As BoundForToUserDefinedOperators) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitForToStatement(node As BoundForToStatement) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitForEachStatement(node As BoundForEachStatement) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitExitStatement(node As BoundExitStatement) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitContinueStatement(node As BoundContinueStatement) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitTryStatement(node As BoundTryStatement) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitCatchBlock(node As BoundCatchBlock) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitLiteral(node As BoundLiteral) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitMeReference(node As BoundMeReference) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitValueTypeMeReference(node As BoundValueTypeMeReference) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitMyBaseReference(node As BoundMyBaseReference) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitMyClassReference(node As BoundMyClassReference) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitPreviousSubmissionReference(node As BoundPreviousSubmissionReference) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitHostObjectMemberReference(node As BoundHostObjectMemberReference) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitLocal(node As BoundLocal) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitPseudoVariable(node As BoundPseudoVariable) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitParameter(node As BoundParameter) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitByRefArgumentPlaceholder(node As BoundByRefArgumentPlaceholder) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitByRefArgumentWithCopyBack(node As BoundByRefArgumentWithCopyBack) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitLateBoundArgumentSupportingAssignmentWithCapture(node As BoundLateBoundArgumentSupportingAssignmentWithCapture) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitLabelStatement(node As BoundLabelStatement) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitLabel(node As BoundLabel) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitGotoStatement(node As BoundGotoStatement) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitStatementList(node As BoundStatementList) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitConditionalGoto(node As BoundConditionalGoto) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitWithStatement(node As BoundWithStatement) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitUnboundLambda(node As UnboundLambda) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitLambda(node As BoundLambda) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitQueryExpression(node As BoundQueryExpression) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitQuerySource(node As BoundQuerySource) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitToQueryableCollectionConversion(node As BoundToQueryableCollectionConversion) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitQueryableSource(node As BoundQueryableSource) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitQueryClause(node As BoundQueryClause) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitOrdering(node As BoundOrdering) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitQueryLambda(node As BoundQueryLambda) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitRangeVariableAssignment(node As BoundRangeVariableAssignment) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitGroupTypeInferenceLambda(node As GroupTypeInferenceLambda) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitAggregateClause(node As BoundAggregateClause) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitGroupAggregation(node As BoundGroupAggregation) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitRangeVariable(node As BoundRangeVariable) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitAddHandlerStatement(node As BoundAddHandlerStatement) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitRemoveHandlerStatement(node As BoundRemoveHandlerStatement) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitRaiseEventStatement(node As BoundRaiseEventStatement) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitUsingStatement(node As BoundUsingStatement) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitSyncLockStatement(node As BoundSyncLockStatement) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitXmlName(node As BoundXmlName) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitXmlNamespace(node As BoundXmlNamespace) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitXmlDocument(node As BoundXmlDocument) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitXmlDeclaration(node As BoundXmlDeclaration) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitXmlProcessingInstruction(node As BoundXmlProcessingInstruction) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitXmlComment(node As BoundXmlComment) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitXmlAttribute(node As BoundXmlAttribute) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitXmlElement(node As BoundXmlElement) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitXmlMemberAccess(node As BoundXmlMemberAccess) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitXmlEmbeddedExpression(node As BoundXmlEmbeddedExpression) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitXmlCData(node As BoundXmlCData) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitResumeStatement(node As BoundResumeStatement) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitOnErrorStatement(node As BoundOnErrorStatement) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitUnstructuredExceptionHandlingStatement(node As BoundUnstructuredExceptionHandlingStatement) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitUnstructuredExceptionHandlingCatchFilter(node As BoundUnstructuredExceptionHandlingCatchFilter) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitUnstructuredExceptionOnErrorSwitch(node As BoundUnstructuredExceptionOnErrorSwitch) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitUnstructuredExceptionResumeSwitch(node As BoundUnstructuredExceptionResumeSwitch) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitAwaitOperator(node As BoundAwaitOperator) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitSpillSequence(node As BoundSpillSequence) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitStopStatement(node As BoundStopStatement) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitEndStatement(node As BoundEndStatement) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitMidResult(node As BoundMidResult) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitConditionalAccess(node As BoundConditionalAccess) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitConditionalAccessReceiverPlaceholder(node As BoundConditionalAccessReceiverPlaceholder) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitLoweredConditionalAccess(node As BoundLoweredConditionalAccess) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitComplexConditionalAccessReceiver(node As BoundComplexConditionalAccessReceiver) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitNameOfOperator(node As BoundNameOfOperator) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitTypeAsValueExpression(node As BoundTypeAsValueExpression) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitInterpolatedStringExpression(node As BoundInterpolatedStringExpression) As BoundNode Return Me.DefaultVisit(node) End Function Public Overridable Function VisitInterpolation(node As BoundInterpolation) As BoundNode Return Me.DefaultVisit(node) End Function End Class Friend MustInherit Partial Class BoundTreeWalker Inherits BoundTreeVisitor Public Overrides Function VisitTypeArguments(node As BoundTypeArguments) As BoundNode Return Nothing End Function Public Overrides Function VisitOmittedArgument(node As BoundOmittedArgument) As BoundNode Return Nothing End Function Public Overrides Function VisitLValueToRValueWrapper(node As BoundLValueToRValueWrapper) As BoundNode Me.Visit(node.UnderlyingLValue) Return Nothing End Function Public Overrides Function VisitWithLValueExpressionPlaceholder(node As BoundWithLValueExpressionPlaceholder) As BoundNode Return Nothing End Function Public Overrides Function VisitWithRValueExpressionPlaceholder(node As BoundWithRValueExpressionPlaceholder) As BoundNode Return Nothing End Function Public Overrides Function VisitRValuePlaceholder(node As BoundRValuePlaceholder) As BoundNode Return Nothing End Function Public Overrides Function VisitLValuePlaceholder(node As BoundLValuePlaceholder) As BoundNode Return Nothing End Function Public Overrides Function VisitDup(node As BoundDup) As BoundNode Return Nothing End Function Public Overrides Function VisitBadExpression(node As BoundBadExpression) As BoundNode Me.VisitList(node.ChildBoundNodes) Return Nothing End Function Public Overrides Function VisitBadStatement(node As BoundBadStatement) As BoundNode Me.VisitList(node.ChildBoundNodes) Return Nothing End Function Public Overrides Function VisitParenthesized(node As BoundParenthesized) As BoundNode Me.Visit(node.Expression) Return Nothing End Function Public Overrides Function VisitBadVariable(node As BoundBadVariable) As BoundNode Me.Visit(node.Expression) Return Nothing End Function Public Overrides Function VisitArrayAccess(node As BoundArrayAccess) As BoundNode Me.Visit(node.Expression) Me.VisitList(node.Indices) Return Nothing End Function Public Overrides Function VisitArrayLength(node As BoundArrayLength) As BoundNode Me.Visit(node.Expression) Return Nothing End Function Public Overrides Function VisitGetType(node As BoundGetType) As BoundNode Me.Visit(node.SourceType) Return Nothing End Function Public Overrides Function VisitFieldInfo(node As BoundFieldInfo) As BoundNode Return Nothing End Function Public Overrides Function VisitMethodInfo(node As BoundMethodInfo) As BoundNode Return Nothing End Function Public Overrides Function VisitTypeExpression(node As BoundTypeExpression) As BoundNode Return Nothing End Function Public Overrides Function VisitTypeOrValueExpression(node As BoundTypeOrValueExpression) As BoundNode Return Nothing End Function Public Overrides Function VisitNamespaceExpression(node As BoundNamespaceExpression) As BoundNode Me.Visit(node.UnevaluatedReceiverOpt) Return Nothing End Function Public Overrides Function VisitMethodDefIndex(node As BoundMethodDefIndex) As BoundNode Return Nothing End Function Public Overrides Function VisitMaximumMethodDefIndex(node As BoundMaximumMethodDefIndex) As BoundNode Return Nothing End Function Public Overrides Function VisitInstrumentationPayloadRoot(node As BoundInstrumentationPayloadRoot) As BoundNode Return Nothing End Function Public Overrides Function VisitModuleVersionId(node As BoundModuleVersionId) As BoundNode Return Nothing End Function Public Overrides Function VisitModuleVersionIdString(node As BoundModuleVersionIdString) As BoundNode Return Nothing End Function Public Overrides Function VisitSourceDocumentIndex(node As BoundSourceDocumentIndex) As BoundNode Return Nothing End Function Public Overrides Function VisitUnaryOperator(node As BoundUnaryOperator) As BoundNode Me.Visit(node.Operand) Return Nothing End Function Public Overrides Function VisitUserDefinedUnaryOperator(node As BoundUserDefinedUnaryOperator) As BoundNode Me.Visit(node.UnderlyingExpression) Return Nothing End Function Public Overrides Function VisitNullableIsTrueOperator(node As BoundNullableIsTrueOperator) As BoundNode Me.Visit(node.Operand) Return Nothing End Function Public Overrides Function VisitBinaryOperator(node As BoundBinaryOperator) As BoundNode Me.Visit(node.Left) Me.Visit(node.Right) Return Nothing End Function Public Overrides Function VisitUserDefinedBinaryOperator(node As BoundUserDefinedBinaryOperator) As BoundNode Me.Visit(node.UnderlyingExpression) Return Nothing End Function Public Overrides Function VisitUserDefinedShortCircuitingOperator(node As BoundUserDefinedShortCircuitingOperator) As BoundNode Me.Visit(node.LeftOperand) Me.Visit(node.LeftOperandPlaceholder) Me.Visit(node.LeftTest) Me.Visit(node.BitwiseOperator) Return Nothing End Function Public Overrides Function VisitCompoundAssignmentTargetPlaceholder(node As BoundCompoundAssignmentTargetPlaceholder) As BoundNode Return Nothing End Function Public Overrides Function VisitAssignmentOperator(node As BoundAssignmentOperator) As BoundNode Me.Visit(node.Left) Me.Visit(node.LeftOnTheRightOpt) Me.Visit(node.Right) Return Nothing End Function Public Overrides Function VisitReferenceAssignment(node As BoundReferenceAssignment) As BoundNode Me.Visit(node.ByRefLocal) Me.Visit(node.LValue) Return Nothing End Function Public Overrides Function VisitAddressOfOperator(node As BoundAddressOfOperator) As BoundNode Me.Visit(node.MethodGroup) Return Nothing End Function Public Overrides Function VisitTernaryConditionalExpression(node As BoundTernaryConditionalExpression) As BoundNode Me.Visit(node.Condition) Me.Visit(node.WhenTrue) Me.Visit(node.WhenFalse) Return Nothing End Function Public Overrides Function VisitBinaryConditionalExpression(node As BoundBinaryConditionalExpression) As BoundNode Me.Visit(node.TestExpression) Me.Visit(node.ElseExpression) Return Nothing End Function Public Overrides Function VisitConversion(node As BoundConversion) As BoundNode Me.Visit(node.Operand) Me.Visit(node.ExtendedInfoOpt) Return Nothing End Function Public Overrides Function VisitRelaxationLambda(node As BoundRelaxationLambda) As BoundNode Me.Visit(node.Lambda) Me.Visit(node.ReceiverPlaceholderOpt) Return Nothing End Function Public Overrides Function VisitConvertedTupleElements(node As BoundConvertedTupleElements) As BoundNode Me.VisitList(node.ElementPlaceholders) Me.VisitList(node.ConvertedElements) Return Nothing End Function Public Overrides Function VisitUserDefinedConversion(node As BoundUserDefinedConversion) As BoundNode Me.Visit(node.UnderlyingExpression) Return Nothing End Function Public Overrides Function VisitDirectCast(node As BoundDirectCast) As BoundNode Me.Visit(node.Operand) Me.Visit(node.RelaxationLambdaOpt) Return Nothing End Function Public Overrides Function VisitTryCast(node As BoundTryCast) As BoundNode Me.Visit(node.Operand) Me.Visit(node.RelaxationLambdaOpt) Return Nothing End Function Public Overrides Function VisitTypeOf(node As BoundTypeOf) As BoundNode Me.Visit(node.Operand) Return Nothing End Function Public Overrides Function VisitSequencePoint(node As BoundSequencePoint) As BoundNode Me.Visit(node.StatementOpt) Return Nothing End Function Public Overrides Function VisitSequencePointExpression(node As BoundSequencePointExpression) As BoundNode Me.Visit(node.Expression) Return Nothing End Function Public Overrides Function VisitSequencePointWithSpan(node As BoundSequencePointWithSpan) As BoundNode Me.Visit(node.StatementOpt) Return Nothing End Function Public Overrides Function VisitNoOpStatement(node As BoundNoOpStatement) As BoundNode Return Nothing End Function Public Overrides Function VisitMethodGroup(node As BoundMethodGroup) As BoundNode Me.Visit(node.TypeArgumentsOpt) Me.Visit(node.ReceiverOpt) Return Nothing End Function Public Overrides Function VisitPropertyGroup(node As BoundPropertyGroup) As BoundNode Me.Visit(node.ReceiverOpt) Return Nothing End Function Public Overrides Function VisitReturnStatement(node As BoundReturnStatement) As BoundNode Me.Visit(node.ExpressionOpt) Return Nothing End Function Public Overrides Function VisitYieldStatement(node As BoundYieldStatement) As BoundNode Me.Visit(node.Expression) Return Nothing End Function Public Overrides Function VisitThrowStatement(node As BoundThrowStatement) As BoundNode Me.Visit(node.ExpressionOpt) Return Nothing End Function Public Overrides Function VisitRedimStatement(node As BoundRedimStatement) As BoundNode Me.VisitList(node.Clauses) Return Nothing End Function Public Overrides Function VisitRedimClause(node As BoundRedimClause) As BoundNode Me.Visit(node.Operand) Me.VisitList(node.Indices) Return Nothing End Function Public Overrides Function VisitEraseStatement(node As BoundEraseStatement) As BoundNode Me.VisitList(node.Clauses) Return Nothing End Function Public Overrides Function VisitCall(node As BoundCall) As BoundNode Me.Visit(node.ReceiverOpt) Me.VisitList(node.Arguments) Return Nothing End Function Public Overrides Function VisitAttribute(node As BoundAttribute) As BoundNode Me.VisitList(node.ConstructorArguments) Me.VisitList(node.NamedArguments) Return Nothing End Function Public Overrides Function VisitLateMemberAccess(node As BoundLateMemberAccess) As BoundNode Me.Visit(node.ReceiverOpt) Me.Visit(node.TypeArgumentsOpt) Return Nothing End Function Public Overrides Function VisitLateInvocation(node As BoundLateInvocation) As BoundNode Me.Visit(node.Member) Me.VisitList(node.ArgumentsOpt) Return Nothing End Function Public Overrides Function VisitLateAddressOfOperator(node As BoundLateAddressOfOperator) As BoundNode Me.Visit(node.MemberAccess) Return Nothing End Function Public Overrides Function VisitTupleLiteral(node As BoundTupleLiteral) As BoundNode Me.VisitList(node.Arguments) Return Nothing End Function Public Overrides Function VisitConvertedTupleLiteral(node As BoundConvertedTupleLiteral) As BoundNode Me.VisitList(node.Arguments) Return Nothing End Function Public Overrides Function VisitObjectCreationExpression(node As BoundObjectCreationExpression) As BoundNode Me.VisitList(node.Arguments) Me.Visit(node.InitializerOpt) Return Nothing End Function Public Overrides Function VisitNoPiaObjectCreationExpression(node As BoundNoPiaObjectCreationExpression) As BoundNode Me.Visit(node.InitializerOpt) Return Nothing End Function Public Overrides Function VisitAnonymousTypeCreationExpression(node As BoundAnonymousTypeCreationExpression) As BoundNode Me.VisitList(node.Declarations) Me.VisitList(node.Arguments) Return Nothing End Function Public Overrides Function VisitAnonymousTypePropertyAccess(node As BoundAnonymousTypePropertyAccess) As BoundNode Return Nothing End Function Public Overrides Function VisitAnonymousTypeFieldInitializer(node As BoundAnonymousTypeFieldInitializer) As BoundNode Me.Visit(node.Value) Return Nothing End Function Public Overrides Function VisitObjectInitializerExpression(node As BoundObjectInitializerExpression) As BoundNode Me.Visit(node.PlaceholderOpt) Me.VisitList(node.Initializers) Return Nothing End Function Public Overrides Function VisitCollectionInitializerExpression(node As BoundCollectionInitializerExpression) As BoundNode Me.Visit(node.PlaceholderOpt) Me.VisitList(node.Initializers) Return Nothing End Function Public Overrides Function VisitNewT(node As BoundNewT) As BoundNode Me.Visit(node.InitializerOpt) Return Nothing End Function Public Overrides Function VisitDelegateCreationExpression(node As BoundDelegateCreationExpression) As BoundNode Me.Visit(node.ReceiverOpt) Me.Visit(node.RelaxationLambdaOpt) Me.Visit(node.RelaxationReceiverPlaceholderOpt) Return Nothing End Function Public Overrides Function VisitArrayCreation(node As BoundArrayCreation) As BoundNode Me.VisitList(node.Bounds) Me.Visit(node.InitializerOpt) Return Nothing End Function Public Overrides Function VisitArrayLiteral(node As BoundArrayLiteral) As BoundNode Me.VisitList(node.Bounds) Me.Visit(node.Initializer) Return Nothing End Function Public Overrides Function VisitArrayInitialization(node As BoundArrayInitialization) As BoundNode Me.VisitList(node.Initializers) Return Nothing End Function Public Overrides Function VisitFieldAccess(node As BoundFieldAccess) As BoundNode Me.Visit(node.ReceiverOpt) Return Nothing End Function Public Overrides Function VisitPropertyAccess(node As BoundPropertyAccess) As BoundNode Me.Visit(node.ReceiverOpt) Me.VisitList(node.Arguments) Return Nothing End Function Public Overrides Function VisitEventAccess(node As BoundEventAccess) As BoundNode Me.Visit(node.ReceiverOpt) Return Nothing End Function Public Overrides Function VisitBlock(node As BoundBlock) As BoundNode Me.VisitList(node.Statements) Return Nothing End Function Public Overrides Function VisitStateMachineScope(node As BoundStateMachineScope) As BoundNode Me.Visit(node.Statement) Return Nothing End Function Public Overrides Function VisitLocalDeclaration(node As BoundLocalDeclaration) As BoundNode Me.Visit(node.DeclarationInitializerOpt) Me.Visit(node.IdentifierInitializerOpt) Return Nothing End Function Public Overrides Function VisitAsNewLocalDeclarations(node As BoundAsNewLocalDeclarations) As BoundNode Me.VisitList(node.LocalDeclarations) Me.Visit(node.Initializer) Return Nothing End Function Public Overrides Function VisitDimStatement(node As BoundDimStatement) As BoundNode Me.VisitList(node.LocalDeclarations) Me.Visit(node.InitializerOpt) Return Nothing End Function Public Overrides Function VisitInitializer(node As BoundInitializer) As BoundNode Return Nothing End Function Public Overrides Function VisitFieldInitializer(node As BoundFieldInitializer) As BoundNode Me.Visit(node.MemberAccessExpressionOpt) Me.Visit(node.InitialValue) Return Nothing End Function Public Overrides Function VisitPropertyInitializer(node As BoundPropertyInitializer) As BoundNode Me.Visit(node.MemberAccessExpressionOpt) Me.Visit(node.InitialValue) Return Nothing End Function Public Overrides Function VisitParameterEqualsValue(node As BoundParameterEqualsValue) As BoundNode Me.Visit(node.Value) Return Nothing End Function Public Overrides Function VisitGlobalStatementInitializer(node As BoundGlobalStatementInitializer) As BoundNode Me.Visit(node.Statement) Return Nothing End Function Public Overrides Function VisitSequence(node As BoundSequence) As BoundNode Me.VisitList(node.SideEffects) Me.Visit(node.ValueOpt) Return Nothing End Function Public Overrides Function VisitExpressionStatement(node As BoundExpressionStatement) As BoundNode Me.Visit(node.Expression) Return Nothing End Function Public Overrides Function VisitIfStatement(node As BoundIfStatement) As BoundNode Me.Visit(node.Condition) Me.Visit(node.Consequence) Me.Visit(node.AlternativeOpt) Return Nothing End Function Public Overrides Function VisitSelectStatement(node As BoundSelectStatement) As BoundNode Me.Visit(node.ExpressionStatement) Me.Visit(node.ExprPlaceholderOpt) Me.VisitList(node.CaseBlocks) Return Nothing End Function Public Overrides Function VisitCaseBlock(node As BoundCaseBlock) As BoundNode Me.Visit(node.CaseStatement) Me.Visit(node.Body) Return Nothing End Function Public Overrides Function VisitCaseStatement(node As BoundCaseStatement) As BoundNode Me.VisitList(node.CaseClauses) Me.Visit(node.ConditionOpt) Return Nothing End Function Public Overrides Function VisitSimpleCaseClause(node As BoundSimpleCaseClause) As BoundNode Me.Visit(node.ValueOpt) Me.Visit(node.ConditionOpt) Return Nothing End Function Public Overrides Function VisitRangeCaseClause(node As BoundRangeCaseClause) As BoundNode Me.Visit(node.LowerBoundOpt) Me.Visit(node.UpperBoundOpt) Me.Visit(node.LowerBoundConditionOpt) Me.Visit(node.UpperBoundConditionOpt) Return Nothing End Function Public Overrides Function VisitRelationalCaseClause(node As BoundRelationalCaseClause) As BoundNode Me.Visit(node.ValueOpt) Me.Visit(node.ConditionOpt) Return Nothing End Function Public Overrides Function VisitDoLoopStatement(node As BoundDoLoopStatement) As BoundNode Me.Visit(node.TopConditionOpt) Me.Visit(node.BottomConditionOpt) Me.Visit(node.Body) Return Nothing End Function Public Overrides Function VisitWhileStatement(node As BoundWhileStatement) As BoundNode Me.Visit(node.Condition) Me.Visit(node.Body) Return Nothing End Function Public Overrides Function VisitForToUserDefinedOperators(node As BoundForToUserDefinedOperators) As BoundNode Me.Visit(node.LeftOperandPlaceholder) Me.Visit(node.RightOperandPlaceholder) Me.Visit(node.Addition) Me.Visit(node.Subtraction) Me.Visit(node.LessThanOrEqual) Me.Visit(node.GreaterThanOrEqual) Return Nothing End Function Public Overrides Function VisitForToStatement(node As BoundForToStatement) As BoundNode Me.Visit(node.InitialValue) Me.Visit(node.LimitValue) Me.Visit(node.StepValue) Me.Visit(node.OperatorsOpt) Me.Visit(node.ControlVariable) Me.Visit(node.Body) Me.VisitList(node.NextVariablesOpt) Return Nothing End Function Public Overrides Function VisitForEachStatement(node As BoundForEachStatement) As BoundNode Me.Visit(node.Collection) Me.Visit(node.ControlVariable) Me.Visit(node.Body) Me.VisitList(node.NextVariablesOpt) Return Nothing End Function Public Overrides Function VisitExitStatement(node As BoundExitStatement) As BoundNode Return Nothing End Function Public Overrides Function VisitContinueStatement(node As BoundContinueStatement) As BoundNode Return Nothing End Function Public Overrides Function VisitTryStatement(node As BoundTryStatement) As BoundNode Me.Visit(node.TryBlock) Me.VisitList(node.CatchBlocks) Me.Visit(node.FinallyBlockOpt) Return Nothing End Function Public Overrides Function VisitCatchBlock(node As BoundCatchBlock) As BoundNode Me.Visit(node.ExceptionSourceOpt) Me.Visit(node.ErrorLineNumberOpt) Me.Visit(node.ExceptionFilterOpt) Me.Visit(node.Body) Return Nothing End Function Public Overrides Function VisitLiteral(node As BoundLiteral) As BoundNode Return Nothing End Function Public Overrides Function VisitMeReference(node As BoundMeReference) As BoundNode Return Nothing End Function Public Overrides Function VisitValueTypeMeReference(node As BoundValueTypeMeReference) As BoundNode Return Nothing End Function Public Overrides Function VisitMyBaseReference(node As BoundMyBaseReference) As BoundNode Return Nothing End Function Public Overrides Function VisitMyClassReference(node As BoundMyClassReference) As BoundNode Return Nothing End Function Public Overrides Function VisitPreviousSubmissionReference(node As BoundPreviousSubmissionReference) As BoundNode Return Nothing End Function Public Overrides Function VisitHostObjectMemberReference(node As BoundHostObjectMemberReference) As BoundNode Return Nothing End Function Public Overrides Function VisitLocal(node As BoundLocal) As BoundNode Return Nothing End Function Public Overrides Function VisitPseudoVariable(node As BoundPseudoVariable) As BoundNode Return Nothing End Function Public Overrides Function VisitParameter(node As BoundParameter) As BoundNode Return Nothing End Function Public Overrides Function VisitByRefArgumentPlaceholder(node As BoundByRefArgumentPlaceholder) As BoundNode Return Nothing End Function Public Overrides Function VisitByRefArgumentWithCopyBack(node As BoundByRefArgumentWithCopyBack) As BoundNode Me.Visit(node.OriginalArgument) Me.Visit(node.InConversion) Me.Visit(node.InPlaceholder) Me.Visit(node.OutConversion) Me.Visit(node.OutPlaceholder) Return Nothing End Function Public Overrides Function VisitLateBoundArgumentSupportingAssignmentWithCapture(node As BoundLateBoundArgumentSupportingAssignmentWithCapture) As BoundNode Me.Visit(node.OriginalArgument) Return Nothing End Function Public Overrides Function VisitLabelStatement(node As BoundLabelStatement) As BoundNode Return Nothing End Function Public Overrides Function VisitLabel(node As BoundLabel) As BoundNode Return Nothing End Function Public Overrides Function VisitGotoStatement(node As BoundGotoStatement) As BoundNode Me.Visit(node.LabelExpressionOpt) Return Nothing End Function Public Overrides Function VisitStatementList(node As BoundStatementList) As BoundNode Me.VisitList(node.Statements) Return Nothing End Function Public Overrides Function VisitConditionalGoto(node As BoundConditionalGoto) As BoundNode Me.Visit(node.Condition) Return Nothing End Function Public Overrides Function VisitWithStatement(node As BoundWithStatement) As BoundNode Me.Visit(node.OriginalExpression) Me.Visit(node.Body) Return Nothing End Function Public Overrides Function VisitUnboundLambda(node As UnboundLambda) As BoundNode Return Nothing End Function Public Overrides Function VisitLambda(node As BoundLambda) As BoundNode Me.Visit(node.Body) Return Nothing End Function Public Overrides Function VisitQueryExpression(node As BoundQueryExpression) As BoundNode Me.Visit(node.LastOperator) Return Nothing End Function Public Overrides Function VisitQuerySource(node As BoundQuerySource) As BoundNode Me.Visit(node.Expression) Return Nothing End Function Public Overrides Function VisitToQueryableCollectionConversion(node As BoundToQueryableCollectionConversion) As BoundNode Me.Visit(node.ConversionCall) Return Nothing End Function Public Overrides Function VisitQueryableSource(node As BoundQueryableSource) As BoundNode Me.Visit(node.Source) Return Nothing End Function Public Overrides Function VisitQueryClause(node As BoundQueryClause) As BoundNode Me.Visit(node.UnderlyingExpression) Return Nothing End Function Public Overrides Function VisitOrdering(node As BoundOrdering) As BoundNode Me.Visit(node.UnderlyingExpression) Return Nothing End Function Public Overrides Function VisitQueryLambda(node As BoundQueryLambda) As BoundNode Me.Visit(node.Expression) Return Nothing End Function Public Overrides Function VisitRangeVariableAssignment(node As BoundRangeVariableAssignment) As BoundNode Me.Visit(node.Value) Return Nothing End Function Public Overrides Function VisitGroupTypeInferenceLambda(node As GroupTypeInferenceLambda) As BoundNode Return Nothing End Function Public Overrides Function VisitAggregateClause(node As BoundAggregateClause) As BoundNode Me.Visit(node.CapturedGroupOpt) Me.Visit(node.GroupPlaceholderOpt) Me.Visit(node.UnderlyingExpression) Return Nothing End Function Public Overrides Function VisitGroupAggregation(node As BoundGroupAggregation) As BoundNode Me.Visit(node.Group) Return Nothing End Function Public Overrides Function VisitRangeVariable(node As BoundRangeVariable) As BoundNode Return Nothing End Function Public Overrides Function VisitAddHandlerStatement(node As BoundAddHandlerStatement) As BoundNode Me.Visit(node.EventAccess) Me.Visit(node.Handler) Return Nothing End Function Public Overrides Function VisitRemoveHandlerStatement(node As BoundRemoveHandlerStatement) As BoundNode Me.Visit(node.EventAccess) Me.Visit(node.Handler) Return Nothing End Function Public Overrides Function VisitRaiseEventStatement(node As BoundRaiseEventStatement) As BoundNode Me.Visit(node.EventInvocation) Return Nothing End Function Public Overrides Function VisitUsingStatement(node As BoundUsingStatement) As BoundNode Me.VisitList(node.ResourceList) Me.Visit(node.ResourceExpressionOpt) Me.Visit(node.Body) Return Nothing End Function Public Overrides Function VisitSyncLockStatement(node As BoundSyncLockStatement) As BoundNode Me.Visit(node.LockExpression) Me.Visit(node.Body) Return Nothing End Function Public Overrides Function VisitXmlName(node As BoundXmlName) As BoundNode Me.Visit(node.XmlNamespace) Me.Visit(node.LocalName) Return Nothing End Function Public Overrides Function VisitXmlNamespace(node As BoundXmlNamespace) As BoundNode Me.Visit(node.XmlNamespace) Return Nothing End Function Public Overrides Function VisitXmlDocument(node As BoundXmlDocument) As BoundNode Me.Visit(node.Declaration) Me.VisitList(node.ChildNodes) Return Nothing End Function Public Overrides Function VisitXmlDeclaration(node As BoundXmlDeclaration) As BoundNode Me.Visit(node.Version) Me.Visit(node.Encoding) Me.Visit(node.Standalone) Return Nothing End Function Public Overrides Function VisitXmlProcessingInstruction(node As BoundXmlProcessingInstruction) As BoundNode Me.Visit(node.Target) Me.Visit(node.Data) Return Nothing End Function Public Overrides Function VisitXmlComment(node As BoundXmlComment) As BoundNode Me.Visit(node.Value) Return Nothing End Function Public Overrides Function VisitXmlAttribute(node As BoundXmlAttribute) As BoundNode Me.Visit(node.Name) Me.Visit(node.Value) Return Nothing End Function Public Overrides Function VisitXmlElement(node As BoundXmlElement) As BoundNode Me.Visit(node.Argument) Me.VisitList(node.ChildNodes) Return Nothing End Function Public Overrides Function VisitXmlMemberAccess(node As BoundXmlMemberAccess) As BoundNode Me.Visit(node.MemberAccess) Return Nothing End Function Public Overrides Function VisitXmlEmbeddedExpression(node As BoundXmlEmbeddedExpression) As BoundNode Me.Visit(node.Expression) Return Nothing End Function Public Overrides Function VisitXmlCData(node As BoundXmlCData) As BoundNode Me.Visit(node.Value) Return Nothing End Function Public Overrides Function VisitResumeStatement(node As BoundResumeStatement) As BoundNode Me.Visit(node.LabelExpressionOpt) Return Nothing End Function Public Overrides Function VisitOnErrorStatement(node As BoundOnErrorStatement) As BoundNode Me.Visit(node.LabelExpressionOpt) Return Nothing End Function Public Overrides Function VisitUnstructuredExceptionHandlingStatement(node As BoundUnstructuredExceptionHandlingStatement) As BoundNode Me.Visit(node.Body) Return Nothing End Function Public Overrides Function VisitUnstructuredExceptionHandlingCatchFilter(node As BoundUnstructuredExceptionHandlingCatchFilter) As BoundNode Me.Visit(node.ActiveHandlerLocal) Me.Visit(node.ResumeTargetLocal) Return Nothing End Function Public Overrides Function VisitUnstructuredExceptionOnErrorSwitch(node As BoundUnstructuredExceptionOnErrorSwitch) As BoundNode Me.Visit(node.Value) Me.VisitList(node.Jumps) Return Nothing End Function Public Overrides Function VisitUnstructuredExceptionResumeSwitch(node As BoundUnstructuredExceptionResumeSwitch) As BoundNode Me.Visit(node.ResumeTargetTemporary) Me.Visit(node.ResumeLabel) Me.Visit(node.ResumeNextLabel) Me.VisitList(node.Jumps) Return Nothing End Function Public Overrides Function VisitAwaitOperator(node As BoundAwaitOperator) As BoundNode Me.Visit(node.Operand) Me.Visit(node.AwaitableInstancePlaceholder) Me.Visit(node.GetAwaiter) Me.Visit(node.AwaiterInstancePlaceholder) Me.Visit(node.IsCompleted) Me.Visit(node.GetResult) Return Nothing End Function Public Overrides Function VisitSpillSequence(node As BoundSpillSequence) As BoundNode Me.VisitList(node.Statements) Me.Visit(node.ValueOpt) Return Nothing End Function Public Overrides Function VisitStopStatement(node As BoundStopStatement) As BoundNode Return Nothing End Function Public Overrides Function VisitEndStatement(node As BoundEndStatement) As BoundNode Return Nothing End Function Public Overrides Function VisitMidResult(node As BoundMidResult) As BoundNode Me.Visit(node.Original) Me.Visit(node.Start) Me.Visit(node.LengthOpt) Me.Visit(node.Source) Return Nothing End Function Public Overrides Function VisitConditionalAccess(node As BoundConditionalAccess) As BoundNode Me.Visit(node.Receiver) Me.Visit(node.Placeholder) Me.Visit(node.AccessExpression) Return Nothing End Function Public Overrides Function VisitConditionalAccessReceiverPlaceholder(node As BoundConditionalAccessReceiverPlaceholder) As BoundNode Return Nothing End Function Public Overrides Function VisitLoweredConditionalAccess(node As BoundLoweredConditionalAccess) As BoundNode Me.Visit(node.Receiver) Me.Visit(node.WhenNotNull) Me.Visit(node.WhenNullOpt) Return Nothing End Function Public Overrides Function VisitComplexConditionalAccessReceiver(node As BoundComplexConditionalAccessReceiver) As BoundNode Me.Visit(node.ValueTypeReceiver) Me.Visit(node.ReferenceTypeReceiver) Return Nothing End Function Public Overrides Function VisitNameOfOperator(node As BoundNameOfOperator) As BoundNode Me.Visit(node.Argument) Return Nothing End Function Public Overrides Function VisitTypeAsValueExpression(node As BoundTypeAsValueExpression) As BoundNode Me.Visit(node.Expression) Return Nothing End Function Public Overrides Function VisitInterpolatedStringExpression(node As BoundInterpolatedStringExpression) As BoundNode Me.VisitList(node.Contents) Return Nothing End Function Public Overrides Function VisitInterpolation(node As BoundInterpolation) As BoundNode Me.Visit(node.Expression) Me.Visit(node.AlignmentOpt) Me.Visit(node.FormatStringOpt) Return Nothing End Function End Class Friend MustInherit Partial Class BoundTreeRewriter Inherits BoundTreeVisitor Public Overrides Function VisitTypeArguments(node As BoundTypeArguments) As BoundNode Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(node.Arguments) End Function Public Overrides Function VisitOmittedArgument(node As BoundOmittedArgument) As BoundNode Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(type) End Function Public Overrides Function VisitLValueToRValueWrapper(node As BoundLValueToRValueWrapper) As BoundNode Dim underlyingLValue As BoundExpression = DirectCast(Me.Visit(node.UnderlyingLValue), BoundExpression) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(underlyingLValue, type) End Function Public Overrides Function VisitWithLValueExpressionPlaceholder(node As BoundWithLValueExpressionPlaceholder) As BoundNode Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(type) End Function Public Overrides Function VisitWithRValueExpressionPlaceholder(node As BoundWithRValueExpressionPlaceholder) As BoundNode Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(type) End Function Public Overrides Function VisitRValuePlaceholder(node As BoundRValuePlaceholder) As BoundNode Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(type) End Function Public Overrides Function VisitLValuePlaceholder(node As BoundLValuePlaceholder) As BoundNode Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(type) End Function Public Overrides Function VisitDup(node As BoundDup) As BoundNode Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(node.IsReference, type) End Function Public Overrides Function VisitBadExpression(node As BoundBadExpression) As BoundNode Dim childBoundNodes As ImmutableArray(Of BoundExpression) = Me.VisitList(node.ChildBoundNodes) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(node.ResultKind, node.Symbols, childBoundNodes, type) End Function Public Overrides Function VisitBadStatement(node As BoundBadStatement) As BoundNode Dim childBoundNodes As ImmutableArray(Of BoundNode) = Me.VisitList(node.ChildBoundNodes) Return node.Update(childBoundNodes) End Function Public Overrides Function VisitParenthesized(node As BoundParenthesized) As BoundNode Dim expression As BoundExpression = DirectCast(Me.Visit(node.Expression), BoundExpression) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(expression, type) End Function Public Overrides Function VisitBadVariable(node As BoundBadVariable) As BoundNode Dim expression As BoundExpression = DirectCast(Me.Visit(node.Expression), BoundExpression) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(expression, node.IsLValue, type) End Function Public Overrides Function VisitArrayAccess(node As BoundArrayAccess) As BoundNode Dim expression As BoundExpression = DirectCast(Me.Visit(node.Expression), BoundExpression) Dim indices As ImmutableArray(Of BoundExpression) = Me.VisitList(node.Indices) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(expression, indices, node.IsLValue, type) End Function Public Overrides Function VisitArrayLength(node As BoundArrayLength) As BoundNode Dim expression As BoundExpression = DirectCast(Me.Visit(node.Expression), BoundExpression) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(expression, type) End Function Public Overrides Function VisitGetType(node As BoundGetType) As BoundNode Dim sourceType As BoundTypeExpression = DirectCast(Me.Visit(node.SourceType), BoundTypeExpression) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(sourceType, node.GetTypeFromHandle, type) End Function Public Overrides Function VisitFieldInfo(node As BoundFieldInfo) As BoundNode Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(node.Field, type) End Function Public Overrides Function VisitMethodInfo(node As BoundMethodInfo) As BoundNode Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(node.Method, node.GetMethodFromHandle, type) End Function Public Overrides Function VisitTypeExpression(node As BoundTypeExpression) As BoundNode Dim unevaluatedReceiverOpt As BoundExpression = node.UnevaluatedReceiverOpt Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(unevaluatedReceiverOpt, node.AliasOpt, type) End Function Public Overrides Function VisitTypeOrValueExpression(node As BoundTypeOrValueExpression) As BoundNode Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(node.Data, type) End Function Public Overrides Function VisitNamespaceExpression(node As BoundNamespaceExpression) As BoundNode Dim unevaluatedReceiverOpt As BoundExpression = DirectCast(Me.Visit(node.UnevaluatedReceiverOpt), BoundExpression) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(unevaluatedReceiverOpt, node.AliasOpt, node.NamespaceSymbol) End Function Public Overrides Function VisitMethodDefIndex(node As BoundMethodDefIndex) As BoundNode Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(node.Method, type) End Function Public Overrides Function VisitMaximumMethodDefIndex(node As BoundMaximumMethodDefIndex) As BoundNode Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(type) End Function Public Overrides Function VisitInstrumentationPayloadRoot(node As BoundInstrumentationPayloadRoot) As BoundNode Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(node.AnalysisKind, node.IsLValue, type) End Function Public Overrides Function VisitModuleVersionId(node As BoundModuleVersionId) As BoundNode Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(node.IsLValue, type) End Function Public Overrides Function VisitModuleVersionIdString(node As BoundModuleVersionIdString) As BoundNode Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(type) End Function Public Overrides Function VisitSourceDocumentIndex(node As BoundSourceDocumentIndex) As BoundNode Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(node.Document, type) End Function Public Overrides Function VisitUnaryOperator(node As BoundUnaryOperator) As BoundNode Dim operand As BoundExpression = DirectCast(Me.Visit(node.Operand), BoundExpression) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(node.OperatorKind, operand, node.Checked, node.ConstantValueOpt, type) End Function Public Overrides Function VisitUserDefinedUnaryOperator(node As BoundUserDefinedUnaryOperator) As BoundNode Dim underlyingExpression As BoundExpression = DirectCast(Me.Visit(node.UnderlyingExpression), BoundExpression) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(node.OperatorKind, underlyingExpression, type) End Function Public Overrides Function VisitNullableIsTrueOperator(node As BoundNullableIsTrueOperator) As BoundNode Dim operand As BoundExpression = DirectCast(Me.Visit(node.Operand), BoundExpression) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(operand, type) End Function Public Overrides Function VisitBinaryOperator(node As BoundBinaryOperator) As BoundNode Dim left As BoundExpression = DirectCast(Me.Visit(node.Left), BoundExpression) Dim right As BoundExpression = DirectCast(Me.Visit(node.Right), BoundExpression) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(node.OperatorKind, left, right, node.Checked, node.ConstantValueOpt, type) End Function Public Overrides Function VisitUserDefinedBinaryOperator(node As BoundUserDefinedBinaryOperator) As BoundNode Dim underlyingExpression As BoundExpression = DirectCast(Me.Visit(node.UnderlyingExpression), BoundExpression) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(node.OperatorKind, underlyingExpression, node.Checked, type) End Function Public Overrides Function VisitUserDefinedShortCircuitingOperator(node As BoundUserDefinedShortCircuitingOperator) As BoundNode Dim leftOperand As BoundExpression = DirectCast(Me.Visit(node.LeftOperand), BoundExpression) Dim leftOperandPlaceholder As BoundRValuePlaceholder = DirectCast(Me.Visit(node.LeftOperandPlaceholder), BoundRValuePlaceholder) Dim leftTest As BoundExpression = DirectCast(Me.Visit(node.LeftTest), BoundExpression) Dim bitwiseOperator As BoundUserDefinedBinaryOperator = DirectCast(Me.Visit(node.BitwiseOperator), BoundUserDefinedBinaryOperator) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(leftOperand, leftOperandPlaceholder, leftTest, bitwiseOperator, type) End Function Public Overrides Function VisitCompoundAssignmentTargetPlaceholder(node As BoundCompoundAssignmentTargetPlaceholder) As BoundNode Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(type) End Function Public Overrides Function VisitAssignmentOperator(node As BoundAssignmentOperator) As BoundNode Dim left As BoundExpression = DirectCast(Me.Visit(node.Left), BoundExpression) Dim leftOnTheRightOpt As BoundCompoundAssignmentTargetPlaceholder = DirectCast(Me.Visit(node.LeftOnTheRightOpt), BoundCompoundAssignmentTargetPlaceholder) Dim right As BoundExpression = DirectCast(Me.Visit(node.Right), BoundExpression) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(left, leftOnTheRightOpt, right, node.SuppressObjectClone, type) End Function Public Overrides Function VisitReferenceAssignment(node As BoundReferenceAssignment) As BoundNode Dim byRefLocal As BoundLocal = DirectCast(Me.Visit(node.ByRefLocal), BoundLocal) Dim lValue As BoundExpression = DirectCast(Me.Visit(node.LValue), BoundExpression) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(byRefLocal, lValue, node.IsLValue, type) End Function Public Overrides Function VisitAddressOfOperator(node As BoundAddressOfOperator) As BoundNode Dim methodGroup As BoundMethodGroup = DirectCast(Me.Visit(node.MethodGroup), BoundMethodGroup) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(node.Binder, node.WithDependencies, methodGroup) End Function Public Overrides Function VisitTernaryConditionalExpression(node As BoundTernaryConditionalExpression) As BoundNode Dim condition As BoundExpression = DirectCast(Me.Visit(node.Condition), BoundExpression) Dim whenTrue As BoundExpression = DirectCast(Me.Visit(node.WhenTrue), BoundExpression) Dim whenFalse As BoundExpression = DirectCast(Me.Visit(node.WhenFalse), BoundExpression) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(condition, whenTrue, whenFalse, node.ConstantValueOpt, type) End Function Public Overrides Function VisitBinaryConditionalExpression(node As BoundBinaryConditionalExpression) As BoundNode Dim testExpression As BoundExpression = DirectCast(Me.Visit(node.TestExpression), BoundExpression) Dim convertedTestExpression As BoundExpression = node.ConvertedTestExpression Dim testExpressionPlaceholder As BoundRValuePlaceholder = node.TestExpressionPlaceholder Dim elseExpression As BoundExpression = DirectCast(Me.Visit(node.ElseExpression), BoundExpression) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(testExpression, convertedTestExpression, testExpressionPlaceholder, elseExpression, node.ConstantValueOpt, type) End Function Public Overrides Function VisitConversion(node As BoundConversion) As BoundNode Dim operand As BoundExpression = DirectCast(Me.Visit(node.Operand), BoundExpression) Dim extendedInfoOpt As BoundExtendedConversionInfo = DirectCast(Me.Visit(node.ExtendedInfoOpt), BoundExtendedConversionInfo) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(operand, node.ConversionKind, node.Checked, node.ExplicitCastInCode, node.ConstantValueOpt, extendedInfoOpt, type) End Function Public Overrides Function VisitRelaxationLambda(node As BoundRelaxationLambda) As BoundNode Dim lambda As BoundLambda = DirectCast(Me.Visit(node.Lambda), BoundLambda) Dim receiverPlaceholderOpt As BoundRValuePlaceholder = DirectCast(Me.Visit(node.ReceiverPlaceholderOpt), BoundRValuePlaceholder) Return node.Update(lambda, receiverPlaceholderOpt) End Function Public Overrides Function VisitConvertedTupleElements(node As BoundConvertedTupleElements) As BoundNode Dim elementPlaceholders As ImmutableArray(Of BoundRValuePlaceholder) = Me.VisitList(node.ElementPlaceholders) Dim convertedElements As ImmutableArray(Of BoundExpression) = Me.VisitList(node.ConvertedElements) Return node.Update(elementPlaceholders, convertedElements) End Function Public Overrides Function VisitUserDefinedConversion(node As BoundUserDefinedConversion) As BoundNode Dim underlyingExpression As BoundExpression = DirectCast(Me.Visit(node.UnderlyingExpression), BoundExpression) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(underlyingExpression, node.InOutConversionFlags, type) End Function Public Overrides Function VisitDirectCast(node As BoundDirectCast) As BoundNode Dim operand As BoundExpression = DirectCast(Me.Visit(node.Operand), BoundExpression) Dim relaxationLambdaOpt As BoundLambda = DirectCast(Me.Visit(node.RelaxationLambdaOpt), BoundLambda) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(operand, node.ConversionKind, node.SuppressVirtualCalls, node.ConstantValueOpt, relaxationLambdaOpt, type) End Function Public Overrides Function VisitTryCast(node As BoundTryCast) As BoundNode Dim operand As BoundExpression = DirectCast(Me.Visit(node.Operand), BoundExpression) Dim relaxationLambdaOpt As BoundLambda = DirectCast(Me.Visit(node.RelaxationLambdaOpt), BoundLambda) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(operand, node.ConversionKind, node.ConstantValueOpt, relaxationLambdaOpt, type) End Function Public Overrides Function VisitTypeOf(node As BoundTypeOf) As BoundNode Dim operand As BoundExpression = DirectCast(Me.Visit(node.Operand), BoundExpression) Dim targetType as TypeSymbol = Me.VisitType(node.TargetType) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(operand, node.IsTypeOfIsNotExpression, targetType, type) End Function Public Overrides Function VisitSequencePoint(node As BoundSequencePoint) As BoundNode Dim statementOpt As BoundStatement = DirectCast(Me.Visit(node.StatementOpt), BoundStatement) Return node.Update(statementOpt) End Function Public Overrides Function VisitSequencePointExpression(node As BoundSequencePointExpression) As BoundNode Dim expression As BoundExpression = DirectCast(Me.Visit(node.Expression), BoundExpression) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(expression, type) End Function Public Overrides Function VisitSequencePointWithSpan(node As BoundSequencePointWithSpan) As BoundNode Dim statementOpt As BoundStatement = DirectCast(Me.Visit(node.StatementOpt), BoundStatement) Return node.Update(statementOpt, node.Span) End Function Public Overrides Function VisitNoOpStatement(node As BoundNoOpStatement) As BoundNode Return node End Function Public Overrides Function VisitMethodGroup(node As BoundMethodGroup) As BoundNode Dim typeArgumentsOpt As BoundTypeArguments = DirectCast(Me.Visit(node.TypeArgumentsOpt), BoundTypeArguments) Dim receiverOpt As BoundExpression = DirectCast(Me.Visit(node.ReceiverOpt), BoundExpression) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(typeArgumentsOpt, node.Methods, node.PendingExtensionMethodsOpt, node.ResultKind, receiverOpt, node.QualificationKind) End Function Public Overrides Function VisitPropertyGroup(node As BoundPropertyGroup) As BoundNode Dim receiverOpt As BoundExpression = DirectCast(Me.Visit(node.ReceiverOpt), BoundExpression) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(node.Properties, node.ResultKind, receiverOpt, node.QualificationKind) End Function Public Overrides Function VisitReturnStatement(node As BoundReturnStatement) As BoundNode Dim expressionOpt As BoundExpression = DirectCast(Me.Visit(node.ExpressionOpt), BoundExpression) Return node.Update(expressionOpt, node.FunctionLocalOpt, node.ExitLabelOpt) End Function Public Overrides Function VisitYieldStatement(node As BoundYieldStatement) As BoundNode Dim expression As BoundExpression = DirectCast(Me.Visit(node.Expression), BoundExpression) Return node.Update(expression) End Function Public Overrides Function VisitThrowStatement(node As BoundThrowStatement) As BoundNode Dim expressionOpt As BoundExpression = DirectCast(Me.Visit(node.ExpressionOpt), BoundExpression) Return node.Update(expressionOpt) End Function Public Overrides Function VisitRedimStatement(node As BoundRedimStatement) As BoundNode Dim clauses As ImmutableArray(Of BoundRedimClause) = Me.VisitList(node.Clauses) Return node.Update(clauses) End Function Public Overrides Function VisitRedimClause(node As BoundRedimClause) As BoundNode Dim operand As BoundExpression = DirectCast(Me.Visit(node.Operand), BoundExpression) Dim indices As ImmutableArray(Of BoundExpression) = Me.VisitList(node.Indices) Return node.Update(operand, indices, node.ArrayTypeOpt, node.Preserve) End Function Public Overrides Function VisitEraseStatement(node As BoundEraseStatement) As BoundNode Dim clauses As ImmutableArray(Of BoundAssignmentOperator) = Me.VisitList(node.Clauses) Return node.Update(clauses) End Function Public Overrides Function VisitCall(node As BoundCall) As BoundNode Dim methodGroupOpt As BoundMethodGroup = node.MethodGroupOpt Dim receiverOpt As BoundExpression = DirectCast(Me.Visit(node.ReceiverOpt), BoundExpression) Dim arguments As ImmutableArray(Of BoundExpression) = Me.VisitList(node.Arguments) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(node.Method, methodGroupOpt, receiverOpt, arguments, node.DefaultArguments, node.ConstantValueOpt, node.IsLValue, node.SuppressObjectClone, type) End Function Public Overrides Function VisitAttribute(node As BoundAttribute) As BoundNode Dim constructorArguments As ImmutableArray(Of BoundExpression) = Me.VisitList(node.ConstructorArguments) Dim namedArguments As ImmutableArray(Of BoundExpression) = Me.VisitList(node.NamedArguments) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(node.Constructor, constructorArguments, node.ConstructorDefaultArguments, namedArguments, node.ResultKind, type) End Function Public Overrides Function VisitLateMemberAccess(node As BoundLateMemberAccess) As BoundNode Dim receiverOpt As BoundExpression = DirectCast(Me.Visit(node.ReceiverOpt), BoundExpression) Dim typeArgumentsOpt As BoundTypeArguments = DirectCast(Me.Visit(node.TypeArgumentsOpt), BoundTypeArguments) Dim containerTypeOpt as TypeSymbol = Me.VisitType(node.ContainerTypeOpt) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(node.NameOpt, containerTypeOpt, receiverOpt, typeArgumentsOpt, node.AccessKind, type) End Function Public Overrides Function VisitLateInvocation(node As BoundLateInvocation) As BoundNode Dim member As BoundExpression = DirectCast(Me.Visit(node.Member), BoundExpression) Dim argumentsOpt As ImmutableArray(Of BoundExpression) = Me.VisitList(node.ArgumentsOpt) Dim methodOrPropertyGroupOpt As BoundMethodOrPropertyGroup = node.MethodOrPropertyGroupOpt Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(member, argumentsOpt, node.ArgumentNamesOpt, node.AccessKind, methodOrPropertyGroupOpt, type) End Function Public Overrides Function VisitLateAddressOfOperator(node As BoundLateAddressOfOperator) As BoundNode Dim memberAccess As BoundLateMemberAccess = DirectCast(Me.Visit(node.MemberAccess), BoundLateMemberAccess) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(node.Binder, memberAccess, type) End Function Public Overrides Function VisitTupleLiteral(node As BoundTupleLiteral) As BoundNode Dim arguments As ImmutableArray(Of BoundExpression) = Me.VisitList(node.Arguments) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(node.InferredType, node.ArgumentNamesOpt, node.InferredNamesOpt, arguments, type) End Function Public Overrides Function VisitConvertedTupleLiteral(node As BoundConvertedTupleLiteral) As BoundNode Dim arguments As ImmutableArray(Of BoundExpression) = Me.VisitList(node.Arguments) Dim naturalTypeOpt as TypeSymbol = Me.VisitType(node.NaturalTypeOpt) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(naturalTypeOpt, arguments, type) End Function Public Overrides Function VisitObjectCreationExpression(node As BoundObjectCreationExpression) As BoundNode Dim methodGroupOpt As BoundMethodGroup = node.MethodGroupOpt Dim arguments As ImmutableArray(Of BoundExpression) = Me.VisitList(node.Arguments) Dim initializerOpt As BoundObjectInitializerExpressionBase = DirectCast(Me.Visit(node.InitializerOpt), BoundObjectInitializerExpressionBase) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(node.ConstructorOpt, methodGroupOpt, arguments, node.DefaultArguments, initializerOpt, type) End Function Public Overrides Function VisitNoPiaObjectCreationExpression(node As BoundNoPiaObjectCreationExpression) As BoundNode Dim initializerOpt As BoundObjectInitializerExpressionBase = DirectCast(Me.Visit(node.InitializerOpt), BoundObjectInitializerExpressionBase) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(node.GuidString, initializerOpt, type) End Function Public Overrides Function VisitAnonymousTypeCreationExpression(node As BoundAnonymousTypeCreationExpression) As BoundNode Dim declarations As ImmutableArray(Of BoundAnonymousTypePropertyAccess) = Me.VisitList(node.Declarations) Dim arguments As ImmutableArray(Of BoundExpression) = Me.VisitList(node.Arguments) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(node.BinderOpt, declarations, arguments, type) End Function Public Overrides Function VisitAnonymousTypePropertyAccess(node As BoundAnonymousTypePropertyAccess) As BoundNode Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(node.Binder, node.PropertyIndex, type) End Function Public Overrides Function VisitAnonymousTypeFieldInitializer(node As BoundAnonymousTypeFieldInitializer) As BoundNode Dim value As BoundExpression = DirectCast(Me.Visit(node.Value), BoundExpression) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(node.Binder, value, type) End Function Public Overrides Function VisitObjectInitializerExpression(node As BoundObjectInitializerExpression) As BoundNode Dim placeholderOpt As BoundWithLValueExpressionPlaceholder = DirectCast(Me.Visit(node.PlaceholderOpt), BoundWithLValueExpressionPlaceholder) Dim initializers As ImmutableArray(Of BoundExpression) = Me.VisitList(node.Initializers) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(node.CreateTemporaryLocalForInitialization, placeholderOpt, initializers, type) End Function Public Overrides Function VisitCollectionInitializerExpression(node As BoundCollectionInitializerExpression) As BoundNode Dim placeholderOpt As BoundWithLValueExpressionPlaceholder = DirectCast(Me.Visit(node.PlaceholderOpt), BoundWithLValueExpressionPlaceholder) Dim initializers As ImmutableArray(Of BoundExpression) = Me.VisitList(node.Initializers) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(placeholderOpt, initializers, type) End Function Public Overrides Function VisitNewT(node As BoundNewT) As BoundNode Dim initializerOpt As BoundObjectInitializerExpressionBase = DirectCast(Me.Visit(node.InitializerOpt), BoundObjectInitializerExpressionBase) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(initializerOpt, type) End Function Public Overrides Function VisitDelegateCreationExpression(node As BoundDelegateCreationExpression) As BoundNode Dim receiverOpt As BoundExpression = DirectCast(Me.Visit(node.ReceiverOpt), BoundExpression) Dim relaxationLambdaOpt As BoundLambda = DirectCast(Me.Visit(node.RelaxationLambdaOpt), BoundLambda) Dim relaxationReceiverPlaceholderOpt As BoundRValuePlaceholder = DirectCast(Me.Visit(node.RelaxationReceiverPlaceholderOpt), BoundRValuePlaceholder) Dim methodGroupOpt As BoundMethodGroup = node.MethodGroupOpt Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(receiverOpt, node.Method, relaxationLambdaOpt, relaxationReceiverPlaceholderOpt, methodGroupOpt, type) End Function Public Overrides Function VisitArrayCreation(node As BoundArrayCreation) As BoundNode Dim bounds As ImmutableArray(Of BoundExpression) = Me.VisitList(node.Bounds) Dim initializerOpt As BoundArrayInitialization = DirectCast(Me.Visit(node.InitializerOpt), BoundArrayInitialization) Dim arrayLiteralOpt As BoundArrayLiteral = node.ArrayLiteralOpt Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(node.IsParamArrayArgument, bounds, initializerOpt, arrayLiteralOpt, node.ArrayLiteralConversion, type) End Function Public Overrides Function VisitArrayLiteral(node As BoundArrayLiteral) As BoundNode Dim bounds As ImmutableArray(Of BoundExpression) = Me.VisitList(node.Bounds) Dim initializer As BoundArrayInitialization = DirectCast(Me.Visit(node.Initializer), BoundArrayInitialization) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(node.HasDominantType, node.NumberOfCandidates, node.InferredType, bounds, initializer, node.Binder) End Function Public Overrides Function VisitArrayInitialization(node As BoundArrayInitialization) As BoundNode Dim initializers As ImmutableArray(Of BoundExpression) = Me.VisitList(node.Initializers) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(initializers, type) End Function Public Overrides Function VisitFieldAccess(node As BoundFieldAccess) As BoundNode Dim receiverOpt As BoundExpression = DirectCast(Me.Visit(node.ReceiverOpt), BoundExpression) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(receiverOpt, node.FieldSymbol, node.IsLValue, node.SuppressVirtualCalls, node.ConstantsInProgressOpt, type) End Function Public Overrides Function VisitPropertyAccess(node As BoundPropertyAccess) As BoundNode Dim propertyGroupOpt As BoundPropertyGroup = node.PropertyGroupOpt Dim receiverOpt As BoundExpression = DirectCast(Me.Visit(node.ReceiverOpt), BoundExpression) Dim arguments As ImmutableArray(Of BoundExpression) = Me.VisitList(node.Arguments) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(node.PropertySymbol, propertyGroupOpt, node.AccessKind, node.IsWriteable, node.IsLValue, receiverOpt, arguments, node.DefaultArguments, type) End Function Public Overrides Function VisitEventAccess(node As BoundEventAccess) As BoundNode Dim receiverOpt As BoundExpression = DirectCast(Me.Visit(node.ReceiverOpt), BoundExpression) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(receiverOpt, node.EventSymbol, type) End Function Public Overrides Function VisitBlock(node As BoundBlock) As BoundNode Dim statements As ImmutableArray(Of BoundStatement) = Me.VisitList(node.Statements) Return node.Update(node.StatementListSyntax, node.Locals, statements) End Function Public Overrides Function VisitStateMachineScope(node As BoundStateMachineScope) As BoundNode Dim statement As BoundStatement = DirectCast(Me.Visit(node.Statement), BoundStatement) Return node.Update(node.Fields, statement) End Function Public Overrides Function VisitLocalDeclaration(node As BoundLocalDeclaration) As BoundNode Dim declarationInitializerOpt As BoundExpression = DirectCast(Me.Visit(node.DeclarationInitializerOpt), BoundExpression) Dim identifierInitializerOpt As BoundArrayCreation = DirectCast(Me.Visit(node.IdentifierInitializerOpt), BoundArrayCreation) Return node.Update(node.LocalSymbol, declarationInitializerOpt, identifierInitializerOpt, node.InitializedByAsNew) End Function Public Overrides Function VisitAsNewLocalDeclarations(node As BoundAsNewLocalDeclarations) As BoundNode Dim localDeclarations As ImmutableArray(Of BoundLocalDeclaration) = Me.VisitList(node.LocalDeclarations) Dim initializer As BoundExpression = DirectCast(Me.Visit(node.Initializer), BoundExpression) Return node.Update(localDeclarations, initializer, node.Binder) End Function Public Overrides Function VisitDimStatement(node As BoundDimStatement) As BoundNode Dim localDeclarations As ImmutableArray(Of BoundLocalDeclarationBase) = Me.VisitList(node.LocalDeclarations) Dim initializerOpt As BoundExpression = DirectCast(Me.Visit(node.InitializerOpt), BoundExpression) Return node.Update(localDeclarations, initializerOpt) End Function Public Overrides Function VisitInitializer(node As BoundInitializer) As BoundNode Return node End Function Public Overrides Function VisitFieldInitializer(node As BoundFieldInitializer) As BoundNode Dim memberAccessExpressionOpt As BoundExpression = DirectCast(Me.Visit(node.MemberAccessExpressionOpt), BoundExpression) Dim initialValue As BoundExpression = DirectCast(Me.Visit(node.InitialValue), BoundExpression) Return node.Update(node.InitializedFields, memberAccessExpressionOpt, initialValue, node.BinderOpt) End Function Public Overrides Function VisitPropertyInitializer(node As BoundPropertyInitializer) As BoundNode Dim memberAccessExpressionOpt As BoundExpression = DirectCast(Me.Visit(node.MemberAccessExpressionOpt), BoundExpression) Dim initialValue As BoundExpression = DirectCast(Me.Visit(node.InitialValue), BoundExpression) Return node.Update(node.InitializedProperties, memberAccessExpressionOpt, initialValue, node.BinderOpt) End Function Public Overrides Function VisitParameterEqualsValue(node As BoundParameterEqualsValue) As BoundNode Dim value As BoundExpression = DirectCast(Me.Visit(node.Value), BoundExpression) Return node.Update(node.Parameter, value) End Function Public Overrides Function VisitGlobalStatementInitializer(node As BoundGlobalStatementInitializer) As BoundNode Dim statement As BoundStatement = DirectCast(Me.Visit(node.Statement), BoundStatement) Return node.Update(statement) End Function Public Overrides Function VisitSequence(node As BoundSequence) As BoundNode Dim sideEffects As ImmutableArray(Of BoundExpression) = Me.VisitList(node.SideEffects) Dim valueOpt As BoundExpression = DirectCast(Me.Visit(node.ValueOpt), BoundExpression) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(node.Locals, sideEffects, valueOpt, type) End Function Public Overrides Function VisitExpressionStatement(node As BoundExpressionStatement) As BoundNode Dim expression As BoundExpression = DirectCast(Me.Visit(node.Expression), BoundExpression) Return node.Update(expression) End Function Public Overrides Function VisitIfStatement(node As BoundIfStatement) As BoundNode Dim condition As BoundExpression = DirectCast(Me.Visit(node.Condition), BoundExpression) Dim consequence As BoundStatement = DirectCast(Me.Visit(node.Consequence), BoundStatement) Dim alternativeOpt As BoundStatement = DirectCast(Me.Visit(node.AlternativeOpt), BoundStatement) Return node.Update(condition, consequence, alternativeOpt) End Function Public Overrides Function VisitSelectStatement(node As BoundSelectStatement) As BoundNode Dim expressionStatement As BoundExpressionStatement = DirectCast(Me.Visit(node.ExpressionStatement), BoundExpressionStatement) Dim exprPlaceholderOpt As BoundRValuePlaceholder = DirectCast(Me.Visit(node.ExprPlaceholderOpt), BoundRValuePlaceholder) Dim caseBlocks As ImmutableArray(Of BoundCaseBlock) = Me.VisitList(node.CaseBlocks) Return node.Update(expressionStatement, exprPlaceholderOpt, caseBlocks, node.RecommendSwitchTable, node.ExitLabel) End Function Public Overrides Function VisitCaseBlock(node As BoundCaseBlock) As BoundNode Dim caseStatement As BoundCaseStatement = DirectCast(Me.Visit(node.CaseStatement), BoundCaseStatement) Dim body As BoundBlock = DirectCast(Me.Visit(node.Body), BoundBlock) Return node.Update(caseStatement, body) End Function Public Overrides Function VisitCaseStatement(node As BoundCaseStatement) As BoundNode Dim caseClauses As ImmutableArray(Of BoundCaseClause) = Me.VisitList(node.CaseClauses) Dim conditionOpt As BoundExpression = DirectCast(Me.Visit(node.ConditionOpt), BoundExpression) Return node.Update(caseClauses, conditionOpt) End Function Public Overrides Function VisitSimpleCaseClause(node As BoundSimpleCaseClause) As BoundNode Dim valueOpt As BoundExpression = DirectCast(Me.Visit(node.ValueOpt), BoundExpression) Dim conditionOpt As BoundExpression = DirectCast(Me.Visit(node.ConditionOpt), BoundExpression) Return node.Update(valueOpt, conditionOpt) End Function Public Overrides Function VisitRangeCaseClause(node As BoundRangeCaseClause) As BoundNode Dim lowerBoundOpt As BoundExpression = DirectCast(Me.Visit(node.LowerBoundOpt), BoundExpression) Dim upperBoundOpt As BoundExpression = DirectCast(Me.Visit(node.UpperBoundOpt), BoundExpression) Dim lowerBoundConditionOpt As BoundExpression = DirectCast(Me.Visit(node.LowerBoundConditionOpt), BoundExpression) Dim upperBoundConditionOpt As BoundExpression = DirectCast(Me.Visit(node.UpperBoundConditionOpt), BoundExpression) Return node.Update(lowerBoundOpt, upperBoundOpt, lowerBoundConditionOpt, upperBoundConditionOpt) End Function Public Overrides Function VisitRelationalCaseClause(node As BoundRelationalCaseClause) As BoundNode Dim valueOpt As BoundExpression = DirectCast(Me.Visit(node.ValueOpt), BoundExpression) Dim conditionOpt As BoundExpression = DirectCast(Me.Visit(node.ConditionOpt), BoundExpression) Return node.Update(node.OperatorKind, valueOpt, conditionOpt) End Function Public Overrides Function VisitDoLoopStatement(node As BoundDoLoopStatement) As BoundNode Dim topConditionOpt As BoundExpression = DirectCast(Me.Visit(node.TopConditionOpt), BoundExpression) Dim bottomConditionOpt As BoundExpression = DirectCast(Me.Visit(node.BottomConditionOpt), BoundExpression) Dim body As BoundStatement = DirectCast(Me.Visit(node.Body), BoundStatement) Return node.Update(topConditionOpt, bottomConditionOpt, node.TopConditionIsUntil, node.BottomConditionIsUntil, body, node.ContinueLabel, node.ExitLabel) End Function Public Overrides Function VisitWhileStatement(node As BoundWhileStatement) As BoundNode Dim condition As BoundExpression = DirectCast(Me.Visit(node.Condition), BoundExpression) Dim body As BoundStatement = DirectCast(Me.Visit(node.Body), BoundStatement) Return node.Update(condition, body, node.ContinueLabel, node.ExitLabel) End Function Public Overrides Function VisitForToUserDefinedOperators(node As BoundForToUserDefinedOperators) As BoundNode Dim leftOperandPlaceholder As BoundRValuePlaceholder = DirectCast(Me.Visit(node.LeftOperandPlaceholder), BoundRValuePlaceholder) Dim rightOperandPlaceholder As BoundRValuePlaceholder = DirectCast(Me.Visit(node.RightOperandPlaceholder), BoundRValuePlaceholder) Dim addition As BoundUserDefinedBinaryOperator = DirectCast(Me.Visit(node.Addition), BoundUserDefinedBinaryOperator) Dim subtraction As BoundUserDefinedBinaryOperator = DirectCast(Me.Visit(node.Subtraction), BoundUserDefinedBinaryOperator) Dim lessThanOrEqual As BoundExpression = DirectCast(Me.Visit(node.LessThanOrEqual), BoundExpression) Dim greaterThanOrEqual As BoundExpression = DirectCast(Me.Visit(node.GreaterThanOrEqual), BoundExpression) Return node.Update(leftOperandPlaceholder, rightOperandPlaceholder, addition, subtraction, lessThanOrEqual, greaterThanOrEqual) End Function Public Overrides Function VisitForToStatement(node As BoundForToStatement) As BoundNode Dim initialValue As BoundExpression = DirectCast(Me.Visit(node.InitialValue), BoundExpression) Dim limitValue As BoundExpression = DirectCast(Me.Visit(node.LimitValue), BoundExpression) Dim stepValue As BoundExpression = DirectCast(Me.Visit(node.StepValue), BoundExpression) Dim operatorsOpt As BoundForToUserDefinedOperators = DirectCast(Me.Visit(node.OperatorsOpt), BoundForToUserDefinedOperators) Dim controlVariable As BoundExpression = DirectCast(Me.Visit(node.ControlVariable), BoundExpression) Dim body As BoundStatement = DirectCast(Me.Visit(node.Body), BoundStatement) Dim nextVariablesOpt As ImmutableArray(Of BoundExpression) = Me.VisitList(node.NextVariablesOpt) Return node.Update(initialValue, limitValue, stepValue, node.Checked, operatorsOpt, node.DeclaredOrInferredLocalOpt, controlVariable, body, nextVariablesOpt, node.ContinueLabel, node.ExitLabel) End Function Public Overrides Function VisitForEachStatement(node As BoundForEachStatement) As BoundNode Dim collection As BoundExpression = DirectCast(Me.Visit(node.Collection), BoundExpression) Dim controlVariable As BoundExpression = DirectCast(Me.Visit(node.ControlVariable), BoundExpression) Dim body As BoundStatement = DirectCast(Me.Visit(node.Body), BoundStatement) Dim nextVariablesOpt As ImmutableArray(Of BoundExpression) = Me.VisitList(node.NextVariablesOpt) Return node.Update(collection, node.EnumeratorInfo, node.DeclaredOrInferredLocalOpt, controlVariable, body, nextVariablesOpt, node.ContinueLabel, node.ExitLabel) End Function Public Overrides Function VisitExitStatement(node As BoundExitStatement) As BoundNode Return node End Function Public Overrides Function VisitContinueStatement(node As BoundContinueStatement) As BoundNode Return node End Function Public Overrides Function VisitTryStatement(node As BoundTryStatement) As BoundNode Dim tryBlock As BoundBlock = DirectCast(Me.Visit(node.TryBlock), BoundBlock) Dim catchBlocks As ImmutableArray(Of BoundCatchBlock) = Me.VisitList(node.CatchBlocks) Dim finallyBlockOpt As BoundBlock = DirectCast(Me.Visit(node.FinallyBlockOpt), BoundBlock) Return node.Update(tryBlock, catchBlocks, finallyBlockOpt, node.ExitLabelOpt) End Function Public Overrides Function VisitCatchBlock(node As BoundCatchBlock) As BoundNode Dim exceptionSourceOpt As BoundExpression = DirectCast(Me.Visit(node.ExceptionSourceOpt), BoundExpression) Dim errorLineNumberOpt As BoundExpression = DirectCast(Me.Visit(node.ErrorLineNumberOpt), BoundExpression) Dim exceptionFilterOpt As BoundExpression = DirectCast(Me.Visit(node.ExceptionFilterOpt), BoundExpression) Dim body As BoundBlock = DirectCast(Me.Visit(node.Body), BoundBlock) Return node.Update(node.LocalOpt, exceptionSourceOpt, errorLineNumberOpt, exceptionFilterOpt, body, node.IsSynthesizedAsyncCatchAll) End Function Public Overrides Function VisitLiteral(node As BoundLiteral) As BoundNode Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(node.Value, type) End Function Public Overrides Function VisitMeReference(node As BoundMeReference) As BoundNode Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(type) End Function Public Overrides Function VisitValueTypeMeReference(node As BoundValueTypeMeReference) As BoundNode Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(type) End Function Public Overrides Function VisitMyBaseReference(node As BoundMyBaseReference) As BoundNode Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(type) End Function Public Overrides Function VisitMyClassReference(node As BoundMyClassReference) As BoundNode Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(type) End Function Public Overrides Function VisitPreviousSubmissionReference(node As BoundPreviousSubmissionReference) As BoundNode Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(node.SourceType, type) End Function Public Overrides Function VisitHostObjectMemberReference(node As BoundHostObjectMemberReference) As BoundNode Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(type) End Function Public Overrides Function VisitLocal(node As BoundLocal) As BoundNode Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(node.LocalSymbol, node.IsLValue, type) End Function Public Overrides Function VisitPseudoVariable(node As BoundPseudoVariable) As BoundNode Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(node.LocalSymbol, node.IsLValue, node.EmitExpressions, type) End Function Public Overrides Function VisitParameter(node As BoundParameter) As BoundNode Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(node.ParameterSymbol, node.IsLValue, node.SuppressVirtualCalls, type) End Function Public Overrides Function VisitByRefArgumentPlaceholder(node As BoundByRefArgumentPlaceholder) As BoundNode Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(node.IsOut, type) End Function Public Overrides Function VisitByRefArgumentWithCopyBack(node As BoundByRefArgumentWithCopyBack) As BoundNode Dim originalArgument As BoundExpression = DirectCast(Me.Visit(node.OriginalArgument), BoundExpression) Dim inConversion As BoundExpression = DirectCast(Me.Visit(node.InConversion), BoundExpression) Dim inPlaceholder As BoundByRefArgumentPlaceholder = DirectCast(Me.Visit(node.InPlaceholder), BoundByRefArgumentPlaceholder) Dim outConversion As BoundExpression = DirectCast(Me.Visit(node.OutConversion), BoundExpression) Dim outPlaceholder As BoundRValuePlaceholder = DirectCast(Me.Visit(node.OutPlaceholder), BoundRValuePlaceholder) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(originalArgument, inConversion, inPlaceholder, outConversion, outPlaceholder, type) End Function Public Overrides Function VisitLateBoundArgumentSupportingAssignmentWithCapture(node As BoundLateBoundArgumentSupportingAssignmentWithCapture) As BoundNode Dim originalArgument As BoundExpression = DirectCast(Me.Visit(node.OriginalArgument), BoundExpression) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(originalArgument, node.LocalSymbol, type) End Function Public Overrides Function VisitLabelStatement(node As BoundLabelStatement) As BoundNode Return node End Function Public Overrides Function VisitLabel(node As BoundLabel) As BoundNode Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(node.Label, type) End Function Public Overrides Function VisitGotoStatement(node As BoundGotoStatement) As BoundNode Dim labelExpressionOpt As BoundLabel = DirectCast(Me.Visit(node.LabelExpressionOpt), BoundLabel) Return node.Update(node.Label, labelExpressionOpt) End Function Public Overrides Function VisitStatementList(node As BoundStatementList) As BoundNode Dim statements As ImmutableArray(Of BoundStatement) = Me.VisitList(node.Statements) Return node.Update(statements) End Function Public Overrides Function VisitConditionalGoto(node As BoundConditionalGoto) As BoundNode Dim condition As BoundExpression = DirectCast(Me.Visit(node.Condition), BoundExpression) Return node.Update(condition, node.JumpIfTrue, node.Label) End Function Public Overrides Function VisitWithStatement(node As BoundWithStatement) As BoundNode Dim originalExpression As BoundExpression = DirectCast(Me.Visit(node.OriginalExpression), BoundExpression) Dim body As BoundBlock = DirectCast(Me.Visit(node.Body), BoundBlock) Return node.Update(originalExpression, body, node.Binder) End Function Public Overrides Function VisitUnboundLambda(node As UnboundLambda) As BoundNode Dim returnType as TypeSymbol = Me.VisitType(node.ReturnType) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(node.Binder, node.Flags, node.Parameters, returnType, node.BindingCache) End Function Public Overrides Function VisitLambda(node As BoundLambda) As BoundNode Dim body As BoundBlock = DirectCast(Me.Visit(node.Body), BoundBlock) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(node.LambdaSymbol, body, node.Diagnostics, node.LambdaBinderOpt, node.DelegateRelaxation, node.MethodConversionKind) End Function Public Overrides Function VisitQueryExpression(node As BoundQueryExpression) As BoundNode Dim lastOperator As BoundQueryClauseBase = DirectCast(Me.Visit(node.LastOperator), BoundQueryClauseBase) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(lastOperator, type) End Function Public Overrides Function VisitQuerySource(node As BoundQuerySource) As BoundNode Dim expression As BoundExpression = DirectCast(Me.Visit(node.Expression), BoundExpression) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(expression, type) End Function Public Overrides Function VisitToQueryableCollectionConversion(node As BoundToQueryableCollectionConversion) As BoundNode Dim conversionCall As BoundCall = DirectCast(Me.Visit(node.ConversionCall), BoundCall) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(conversionCall, type) End Function Public Overrides Function VisitQueryableSource(node As BoundQueryableSource) As BoundNode Dim source As BoundQueryPart = DirectCast(Me.Visit(node.Source), BoundQueryPart) Dim compoundVariableType as TypeSymbol = Me.VisitType(node.CompoundVariableType) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(source, node.RangeVariableOpt, node.RangeVariables, compoundVariableType, node.Binders, type) End Function Public Overrides Function VisitQueryClause(node As BoundQueryClause) As BoundNode Dim underlyingExpression As BoundExpression = DirectCast(Me.Visit(node.UnderlyingExpression), BoundExpression) Dim compoundVariableType as TypeSymbol = Me.VisitType(node.CompoundVariableType) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(underlyingExpression, node.RangeVariables, compoundVariableType, node.Binders, type) End Function Public Overrides Function VisitOrdering(node As BoundOrdering) As BoundNode Dim underlyingExpression As BoundExpression = DirectCast(Me.Visit(node.UnderlyingExpression), BoundExpression) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(underlyingExpression, type) End Function Public Overrides Function VisitQueryLambda(node As BoundQueryLambda) As BoundNode Dim expression As BoundExpression = DirectCast(Me.Visit(node.Expression), BoundExpression) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(node.LambdaSymbol, node.RangeVariables, expression, node.ExprIsOperandOfConditionalBranch) End Function Public Overrides Function VisitRangeVariableAssignment(node As BoundRangeVariableAssignment) As BoundNode Dim value As BoundExpression = DirectCast(Me.Visit(node.Value), BoundExpression) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(node.RangeVariable, value, type) End Function Public Overrides Function VisitGroupTypeInferenceLambda(node As GroupTypeInferenceLambda) As BoundNode Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(node.Binder, node.Parameters, node.Compilation) End Function Public Overrides Function VisitAggregateClause(node As BoundAggregateClause) As BoundNode Dim capturedGroupOpt As BoundQueryClauseBase = DirectCast(Me.Visit(node.CapturedGroupOpt), BoundQueryClauseBase) Dim groupPlaceholderOpt As BoundRValuePlaceholder = DirectCast(Me.Visit(node.GroupPlaceholderOpt), BoundRValuePlaceholder) Dim underlyingExpression As BoundExpression = DirectCast(Me.Visit(node.UnderlyingExpression), BoundExpression) Dim compoundVariableType as TypeSymbol = Me.VisitType(node.CompoundVariableType) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(capturedGroupOpt, groupPlaceholderOpt, underlyingExpression, node.RangeVariables, compoundVariableType, node.Binders, type) End Function Public Overrides Function VisitGroupAggregation(node As BoundGroupAggregation) As BoundNode Dim group As BoundExpression = DirectCast(Me.Visit(node.Group), BoundExpression) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(group, type) End Function Public Overrides Function VisitRangeVariable(node As BoundRangeVariable) As BoundNode Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(node.RangeVariable, type) End Function Public Overrides Function VisitAddHandlerStatement(node As BoundAddHandlerStatement) As BoundNode Dim eventAccess As BoundExpression = DirectCast(Me.Visit(node.EventAccess), BoundExpression) Dim handler As BoundExpression = DirectCast(Me.Visit(node.Handler), BoundExpression) Return node.Update(eventAccess, handler) End Function Public Overrides Function VisitRemoveHandlerStatement(node As BoundRemoveHandlerStatement) As BoundNode Dim eventAccess As BoundExpression = DirectCast(Me.Visit(node.EventAccess), BoundExpression) Dim handler As BoundExpression = DirectCast(Me.Visit(node.Handler), BoundExpression) Return node.Update(eventAccess, handler) End Function Public Overrides Function VisitRaiseEventStatement(node As BoundRaiseEventStatement) As BoundNode Dim eventInvocation As BoundExpression = DirectCast(Me.Visit(node.EventInvocation), BoundExpression) Return node.Update(node.EventSymbol, eventInvocation) End Function Public Overrides Function VisitUsingStatement(node As BoundUsingStatement) As BoundNode Dim resourceList As ImmutableArray(Of BoundLocalDeclarationBase) = Me.VisitList(node.ResourceList) Dim resourceExpressionOpt As BoundExpression = DirectCast(Me.Visit(node.ResourceExpressionOpt), BoundExpression) Dim body As BoundBlock = DirectCast(Me.Visit(node.Body), BoundBlock) Return node.Update(resourceList, resourceExpressionOpt, body, node.UsingInfo, node.Locals) End Function Public Overrides Function VisitSyncLockStatement(node As BoundSyncLockStatement) As BoundNode Dim lockExpression As BoundExpression = DirectCast(Me.Visit(node.LockExpression), BoundExpression) Dim body As BoundBlock = DirectCast(Me.Visit(node.Body), BoundBlock) Return node.Update(lockExpression, body) End Function Public Overrides Function VisitXmlName(node As BoundXmlName) As BoundNode Dim xmlNamespace As BoundExpression = DirectCast(Me.Visit(node.XmlNamespace), BoundExpression) Dim localName As BoundExpression = DirectCast(Me.Visit(node.LocalName), BoundExpression) Dim objectCreation As BoundExpression = node.ObjectCreation Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(xmlNamespace, localName, objectCreation, type) End Function Public Overrides Function VisitXmlNamespace(node As BoundXmlNamespace) As BoundNode Dim xmlNamespace As BoundExpression = DirectCast(Me.Visit(node.XmlNamespace), BoundExpression) Dim objectCreation As BoundExpression = node.ObjectCreation Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(xmlNamespace, objectCreation, type) End Function Public Overrides Function VisitXmlDocument(node As BoundXmlDocument) As BoundNode Dim declaration As BoundExpression = DirectCast(Me.Visit(node.Declaration), BoundExpression) Dim childNodes As ImmutableArray(Of BoundExpression) = Me.VisitList(node.ChildNodes) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(declaration, childNodes, node.RewriterInfo, type) End Function Public Overrides Function VisitXmlDeclaration(node As BoundXmlDeclaration) As BoundNode Dim version As BoundExpression = DirectCast(Me.Visit(node.Version), BoundExpression) Dim encoding As BoundExpression = DirectCast(Me.Visit(node.Encoding), BoundExpression) Dim standalone As BoundExpression = DirectCast(Me.Visit(node.Standalone), BoundExpression) Dim objectCreation As BoundExpression = node.ObjectCreation Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(version, encoding, standalone, objectCreation, type) End Function Public Overrides Function VisitXmlProcessingInstruction(node As BoundXmlProcessingInstruction) As BoundNode Dim target As BoundExpression = DirectCast(Me.Visit(node.Target), BoundExpression) Dim data As BoundExpression = DirectCast(Me.Visit(node.Data), BoundExpression) Dim objectCreation As BoundExpression = node.ObjectCreation Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(target, data, objectCreation, type) End Function Public Overrides Function VisitXmlComment(node As BoundXmlComment) As BoundNode Dim value As BoundExpression = DirectCast(Me.Visit(node.Value), BoundExpression) Dim objectCreation As BoundExpression = node.ObjectCreation Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(value, objectCreation, type) End Function Public Overrides Function VisitXmlAttribute(node As BoundXmlAttribute) As BoundNode Dim name As BoundExpression = DirectCast(Me.Visit(node.Name), BoundExpression) Dim value As BoundExpression = DirectCast(Me.Visit(node.Value), BoundExpression) Dim objectCreation As BoundExpression = node.ObjectCreation Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(name, value, node.MatchesImport, objectCreation, type) End Function Public Overrides Function VisitXmlElement(node As BoundXmlElement) As BoundNode Dim argument As BoundExpression = DirectCast(Me.Visit(node.Argument), BoundExpression) Dim childNodes As ImmutableArray(Of BoundExpression) = Me.VisitList(node.ChildNodes) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(argument, childNodes, node.RewriterInfo, type) End Function Public Overrides Function VisitXmlMemberAccess(node As BoundXmlMemberAccess) As BoundNode Dim memberAccess As BoundExpression = DirectCast(Me.Visit(node.MemberAccess), BoundExpression) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(memberAccess, type) End Function Public Overrides Function VisitXmlEmbeddedExpression(node As BoundXmlEmbeddedExpression) As BoundNode Dim expression As BoundExpression = DirectCast(Me.Visit(node.Expression), BoundExpression) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(expression, type) End Function Public Overrides Function VisitXmlCData(node As BoundXmlCData) As BoundNode Dim value As BoundLiteral = DirectCast(Me.Visit(node.Value), BoundLiteral) Dim objectCreation As BoundExpression = node.ObjectCreation Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(value, objectCreation, type) End Function Public Overrides Function VisitResumeStatement(node As BoundResumeStatement) As BoundNode Dim labelExpressionOpt As BoundExpression = DirectCast(Me.Visit(node.LabelExpressionOpt), BoundExpression) Return node.Update(node.ResumeKind, node.LabelOpt, labelExpressionOpt) End Function Public Overrides Function VisitOnErrorStatement(node As BoundOnErrorStatement) As BoundNode Dim labelExpressionOpt As BoundExpression = DirectCast(Me.Visit(node.LabelExpressionOpt), BoundExpression) Return node.Update(node.OnErrorKind, node.LabelOpt, labelExpressionOpt) End Function Public Overrides Function VisitUnstructuredExceptionHandlingStatement(node As BoundUnstructuredExceptionHandlingStatement) As BoundNode Dim body As BoundBlock = DirectCast(Me.Visit(node.Body), BoundBlock) Return node.Update(node.ContainsOnError, node.ContainsResume, node.ResumeWithoutLabelOpt, node.TrackLineNumber, body) End Function Public Overrides Function VisitUnstructuredExceptionHandlingCatchFilter(node As BoundUnstructuredExceptionHandlingCatchFilter) As BoundNode Dim activeHandlerLocal As BoundLocal = DirectCast(Me.Visit(node.ActiveHandlerLocal), BoundLocal) Dim resumeTargetLocal As BoundLocal = DirectCast(Me.Visit(node.ResumeTargetLocal), BoundLocal) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(activeHandlerLocal, resumeTargetLocal, type) End Function Public Overrides Function VisitUnstructuredExceptionOnErrorSwitch(node As BoundUnstructuredExceptionOnErrorSwitch) As BoundNode Dim value As BoundExpression = DirectCast(Me.Visit(node.Value), BoundExpression) Dim jumps As ImmutableArray(Of BoundGotoStatement) = Me.VisitList(node.Jumps) Return node.Update(value, jumps) End Function Public Overrides Function VisitUnstructuredExceptionResumeSwitch(node As BoundUnstructuredExceptionResumeSwitch) As BoundNode Dim resumeTargetTemporary As BoundLocal = DirectCast(Me.Visit(node.ResumeTargetTemporary), BoundLocal) Dim resumeLabel As BoundLabelStatement = DirectCast(Me.Visit(node.ResumeLabel), BoundLabelStatement) Dim resumeNextLabel As BoundLabelStatement = DirectCast(Me.Visit(node.ResumeNextLabel), BoundLabelStatement) Dim jumps As ImmutableArray(Of BoundGotoStatement) = Me.VisitList(node.Jumps) Return node.Update(resumeTargetTemporary, resumeLabel, resumeNextLabel, jumps) End Function Public Overrides Function VisitAwaitOperator(node As BoundAwaitOperator) As BoundNode Dim operand As BoundExpression = DirectCast(Me.Visit(node.Operand), BoundExpression) Dim awaitableInstancePlaceholder As BoundRValuePlaceholder = DirectCast(Me.Visit(node.AwaitableInstancePlaceholder), BoundRValuePlaceholder) Dim getAwaiter As BoundExpression = DirectCast(Me.Visit(node.GetAwaiter), BoundExpression) Dim awaiterInstancePlaceholder As BoundLValuePlaceholder = DirectCast(Me.Visit(node.AwaiterInstancePlaceholder), BoundLValuePlaceholder) Dim isCompleted As BoundExpression = DirectCast(Me.Visit(node.IsCompleted), BoundExpression) Dim getResult As BoundExpression = DirectCast(Me.Visit(node.GetResult), BoundExpression) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(operand, awaitableInstancePlaceholder, getAwaiter, awaiterInstancePlaceholder, isCompleted, getResult, type) End Function Public Overrides Function VisitSpillSequence(node As BoundSpillSequence) As BoundNode Dim statements As ImmutableArray(Of BoundStatement) = Me.VisitList(node.Statements) Dim valueOpt As BoundExpression = DirectCast(Me.Visit(node.ValueOpt), BoundExpression) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(node.Locals, node.SpillFields, statements, valueOpt, type) End Function Public Overrides Function VisitStopStatement(node As BoundStopStatement) As BoundNode Return node End Function Public Overrides Function VisitEndStatement(node As BoundEndStatement) As BoundNode Return node End Function Public Overrides Function VisitMidResult(node As BoundMidResult) As BoundNode Dim original As BoundExpression = DirectCast(Me.Visit(node.Original), BoundExpression) Dim start As BoundExpression = DirectCast(Me.Visit(node.Start), BoundExpression) Dim lengthOpt As BoundExpression = DirectCast(Me.Visit(node.LengthOpt), BoundExpression) Dim source As BoundExpression = DirectCast(Me.Visit(node.Source), BoundExpression) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(original, start, lengthOpt, source, type) End Function Public Overrides Function VisitConditionalAccess(node As BoundConditionalAccess) As BoundNode Dim receiver As BoundExpression = DirectCast(Me.Visit(node.Receiver), BoundExpression) Dim placeholder As BoundRValuePlaceholder = DirectCast(Me.Visit(node.Placeholder), BoundRValuePlaceholder) Dim accessExpression As BoundExpression = DirectCast(Me.Visit(node.AccessExpression), BoundExpression) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(receiver, placeholder, accessExpression, type) End Function Public Overrides Function VisitConditionalAccessReceiverPlaceholder(node As BoundConditionalAccessReceiverPlaceholder) As BoundNode Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(node.PlaceholderId, node.Capture, type) End Function Public Overrides Function VisitLoweredConditionalAccess(node As BoundLoweredConditionalAccess) As BoundNode Dim receiver As BoundExpression = DirectCast(Me.Visit(node.Receiver), BoundExpression) Dim whenNotNull As BoundExpression = DirectCast(Me.Visit(node.WhenNotNull), BoundExpression) Dim whenNullOpt As BoundExpression = DirectCast(Me.Visit(node.WhenNullOpt), BoundExpression) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(receiver, node.CaptureReceiver, node.PlaceholderId, whenNotNull, whenNullOpt, type) End Function Public Overrides Function VisitComplexConditionalAccessReceiver(node As BoundComplexConditionalAccessReceiver) As BoundNode Dim valueTypeReceiver As BoundExpression = DirectCast(Me.Visit(node.ValueTypeReceiver), BoundExpression) Dim referenceTypeReceiver As BoundExpression = DirectCast(Me.Visit(node.ReferenceTypeReceiver), BoundExpression) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(valueTypeReceiver, referenceTypeReceiver, type) End Function Public Overrides Function VisitNameOfOperator(node As BoundNameOfOperator) As BoundNode Dim argument As BoundExpression = DirectCast(Me.Visit(node.Argument), BoundExpression) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(argument, node.ConstantValueOpt, type) End Function Public Overrides Function VisitTypeAsValueExpression(node As BoundTypeAsValueExpression) As BoundNode Dim expression As BoundTypeExpression = DirectCast(Me.Visit(node.Expression), BoundTypeExpression) Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(expression, type) End Function Public Overrides Function VisitInterpolatedStringExpression(node As BoundInterpolatedStringExpression) As BoundNode Dim contents As ImmutableArray(Of BoundNode) = Me.VisitList(node.Contents) Dim constructionOpt As BoundExpression = node.ConstructionOpt Dim type as TypeSymbol = Me.VisitType(node.Type) Return node.Update(contents, constructionOpt, type) End Function Public Overrides Function VisitInterpolation(node As BoundInterpolation) As BoundNode Dim expression As BoundExpression = DirectCast(Me.Visit(node.Expression), BoundExpression) Dim alignmentOpt As BoundExpression = DirectCast(Me.Visit(node.AlignmentOpt), BoundExpression) Dim formatStringOpt As BoundLiteral = DirectCast(Me.Visit(node.FormatStringOpt), BoundLiteral) Return node.Update(expression, alignmentOpt, formatStringOpt) End Function End Class Friend NotInheritable Class BoundTreeDumperNodeProducer Inherits BoundTreeVisitor(Of Object, TreeDumperNode) Private Sub New() End Sub Public Shared Function MakeTree(node As BoundNode) As TreeDumperNode Return (New BoundTreeDumperNodeProducer()).Visit(node, Nothing) End Function Public Overrides Function VisitTypeArguments(node As BoundTypeArguments, arg As Object) As TreeDumperNode Return New TreeDumperNode("typeArguments", Nothing, New TreeDumperNode() { New TreeDumperNode("arguments", node.Arguments, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitOmittedArgument(node As BoundOmittedArgument, arg As Object) As TreeDumperNode Return New TreeDumperNode("omittedArgument", Nothing, New TreeDumperNode() { New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitLValueToRValueWrapper(node As BoundLValueToRValueWrapper, arg As Object) As TreeDumperNode Return New TreeDumperNode("lValueToRValueWrapper", Nothing, New TreeDumperNode() { New TreeDumperNode("underlyingLValue", Nothing, new TreeDumperNode() {Visit(node.UnderlyingLValue, Nothing)}), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitWithLValueExpressionPlaceholder(node As BoundWithLValueExpressionPlaceholder, arg As Object) As TreeDumperNode Return New TreeDumperNode("withLValueExpressionPlaceholder", Nothing, New TreeDumperNode() { New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitWithRValueExpressionPlaceholder(node As BoundWithRValueExpressionPlaceholder, arg As Object) As TreeDumperNode Return New TreeDumperNode("withRValueExpressionPlaceholder", Nothing, New TreeDumperNode() { New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitRValuePlaceholder(node As BoundRValuePlaceholder, arg As Object) As TreeDumperNode Return New TreeDumperNode("rValuePlaceholder", Nothing, New TreeDumperNode() { New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitLValuePlaceholder(node As BoundLValuePlaceholder, arg As Object) As TreeDumperNode Return New TreeDumperNode("lValuePlaceholder", Nothing, New TreeDumperNode() { New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitDup(node As BoundDup, arg As Object) As TreeDumperNode Return New TreeDumperNode("dup", Nothing, New TreeDumperNode() { New TreeDumperNode("isReference", node.IsReference, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitBadExpression(node As BoundBadExpression, arg As Object) As TreeDumperNode Return New TreeDumperNode("badExpression", Nothing, New TreeDumperNode() { New TreeDumperNode("resultKind", node.ResultKind, Nothing), New TreeDumperNode("symbols", node.Symbols, Nothing), New TreeDumperNode("childBoundNodes", Nothing, From x In node.ChildBoundNodes Select Visit(x, Nothing)), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitBadStatement(node As BoundBadStatement, arg As Object) As TreeDumperNode Return New TreeDumperNode("badStatement", Nothing, New TreeDumperNode() { New TreeDumperNode("childBoundNodes", Nothing, From x In node.ChildBoundNodes Select Visit(x, Nothing)) }) End Function Public Overrides Function VisitParenthesized(node As BoundParenthesized, arg As Object) As TreeDumperNode Return New TreeDumperNode("parenthesized", Nothing, New TreeDumperNode() { New TreeDumperNode("expression", Nothing, new TreeDumperNode() {Visit(node.Expression, Nothing)}), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitBadVariable(node As BoundBadVariable, arg As Object) As TreeDumperNode Return New TreeDumperNode("badVariable", Nothing, New TreeDumperNode() { New TreeDumperNode("expression", Nothing, new TreeDumperNode() {Visit(node.Expression, Nothing)}), New TreeDumperNode("isLValue", node.IsLValue, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitArrayAccess(node As BoundArrayAccess, arg As Object) As TreeDumperNode Return New TreeDumperNode("arrayAccess", Nothing, New TreeDumperNode() { New TreeDumperNode("expression", Nothing, new TreeDumperNode() {Visit(node.Expression, Nothing)}), New TreeDumperNode("indices", Nothing, From x In node.Indices Select Visit(x, Nothing)), New TreeDumperNode("isLValue", node.IsLValue, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitArrayLength(node As BoundArrayLength, arg As Object) As TreeDumperNode Return New TreeDumperNode("arrayLength", Nothing, New TreeDumperNode() { New TreeDumperNode("expression", Nothing, new TreeDumperNode() {Visit(node.Expression, Nothing)}), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitGetType(node As BoundGetType, arg As Object) As TreeDumperNode Return New TreeDumperNode("[getType]", Nothing, New TreeDumperNode() { New TreeDumperNode("sourceType", Nothing, new TreeDumperNode() {Visit(node.SourceType, Nothing)}), New TreeDumperNode("getTypeFromHandle", node.GetTypeFromHandle, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitFieldInfo(node As BoundFieldInfo, arg As Object) As TreeDumperNode Return New TreeDumperNode("fieldInfo", Nothing, New TreeDumperNode() { New TreeDumperNode("field", node.Field, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitMethodInfo(node As BoundMethodInfo, arg As Object) As TreeDumperNode Return New TreeDumperNode("methodInfo", Nothing, New TreeDumperNode() { New TreeDumperNode("method", node.Method, Nothing), New TreeDumperNode("getMethodFromHandle", node.GetMethodFromHandle, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitTypeExpression(node As BoundTypeExpression, arg As Object) As TreeDumperNode Return New TreeDumperNode("typeExpression", Nothing, New TreeDumperNode() { New TreeDumperNode("unevaluatedReceiverOpt", Nothing, new TreeDumperNode() {Visit(node.UnevaluatedReceiverOpt, Nothing)}), New TreeDumperNode("aliasOpt", node.AliasOpt, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitTypeOrValueExpression(node As BoundTypeOrValueExpression, arg As Object) As TreeDumperNode Return New TreeDumperNode("typeOrValueExpression", Nothing, New TreeDumperNode() { New TreeDumperNode("data", node.Data, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitNamespaceExpression(node As BoundNamespaceExpression, arg As Object) As TreeDumperNode Return New TreeDumperNode("namespaceExpression", Nothing, New TreeDumperNode() { New TreeDumperNode("unevaluatedReceiverOpt", Nothing, new TreeDumperNode() {Visit(node.UnevaluatedReceiverOpt, Nothing)}), New TreeDumperNode("aliasOpt", node.AliasOpt, Nothing), New TreeDumperNode("namespaceSymbol", node.NamespaceSymbol, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitMethodDefIndex(node As BoundMethodDefIndex, arg As Object) As TreeDumperNode Return New TreeDumperNode("methodDefIndex", Nothing, New TreeDumperNode() { New TreeDumperNode("method", node.Method, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitMaximumMethodDefIndex(node As BoundMaximumMethodDefIndex, arg As Object) As TreeDumperNode Return New TreeDumperNode("maximumMethodDefIndex", Nothing, New TreeDumperNode() { New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitInstrumentationPayloadRoot(node As BoundInstrumentationPayloadRoot, arg As Object) As TreeDumperNode Return New TreeDumperNode("instrumentationPayloadRoot", Nothing, New TreeDumperNode() { New TreeDumperNode("analysisKind", node.AnalysisKind, Nothing), New TreeDumperNode("isLValue", node.IsLValue, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitModuleVersionId(node As BoundModuleVersionId, arg As Object) As TreeDumperNode Return New TreeDumperNode("moduleVersionId", Nothing, New TreeDumperNode() { New TreeDumperNode("isLValue", node.IsLValue, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitModuleVersionIdString(node As BoundModuleVersionIdString, arg As Object) As TreeDumperNode Return New TreeDumperNode("moduleVersionIdString", Nothing, New TreeDumperNode() { New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitSourceDocumentIndex(node As BoundSourceDocumentIndex, arg As Object) As TreeDumperNode Return New TreeDumperNode("sourceDocumentIndex", Nothing, New TreeDumperNode() { New TreeDumperNode("document", node.Document, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitUnaryOperator(node As BoundUnaryOperator, arg As Object) As TreeDumperNode Return New TreeDumperNode("unaryOperator", Nothing, New TreeDumperNode() { New TreeDumperNode("operatorKind", node.OperatorKind, Nothing), New TreeDumperNode("operand", Nothing, new TreeDumperNode() {Visit(node.Operand, Nothing)}), New TreeDumperNode("checked", node.Checked, Nothing), New TreeDumperNode("constantValueOpt", node.ConstantValueOpt, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitUserDefinedUnaryOperator(node As BoundUserDefinedUnaryOperator, arg As Object) As TreeDumperNode Return New TreeDumperNode("userDefinedUnaryOperator", Nothing, New TreeDumperNode() { New TreeDumperNode("operatorKind", node.OperatorKind, Nothing), New TreeDumperNode("underlyingExpression", Nothing, new TreeDumperNode() {Visit(node.UnderlyingExpression, Nothing)}), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitNullableIsTrueOperator(node As BoundNullableIsTrueOperator, arg As Object) As TreeDumperNode Return New TreeDumperNode("nullableIsTrueOperator", Nothing, New TreeDumperNode() { New TreeDumperNode("operand", Nothing, new TreeDumperNode() {Visit(node.Operand, Nothing)}), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitBinaryOperator(node As BoundBinaryOperator, arg As Object) As TreeDumperNode Return New TreeDumperNode("binaryOperator", Nothing, New TreeDumperNode() { New TreeDumperNode("operatorKind", node.OperatorKind, Nothing), New TreeDumperNode("left", Nothing, new TreeDumperNode() {Visit(node.Left, Nothing)}), New TreeDumperNode("right", Nothing, new TreeDumperNode() {Visit(node.Right, Nothing)}), New TreeDumperNode("checked", node.Checked, Nothing), New TreeDumperNode("constantValueOpt", node.ConstantValueOpt, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitUserDefinedBinaryOperator(node As BoundUserDefinedBinaryOperator, arg As Object) As TreeDumperNode Return New TreeDumperNode("userDefinedBinaryOperator", Nothing, New TreeDumperNode() { New TreeDumperNode("operatorKind", node.OperatorKind, Nothing), New TreeDumperNode("underlyingExpression", Nothing, new TreeDumperNode() {Visit(node.UnderlyingExpression, Nothing)}), New TreeDumperNode("checked", node.Checked, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitUserDefinedShortCircuitingOperator(node As BoundUserDefinedShortCircuitingOperator, arg As Object) As TreeDumperNode Return New TreeDumperNode("userDefinedShortCircuitingOperator", Nothing, New TreeDumperNode() { New TreeDumperNode("leftOperand", Nothing, new TreeDumperNode() {Visit(node.LeftOperand, Nothing)}), New TreeDumperNode("leftOperandPlaceholder", Nothing, new TreeDumperNode() {Visit(node.LeftOperandPlaceholder, Nothing)}), New TreeDumperNode("leftTest", Nothing, new TreeDumperNode() {Visit(node.LeftTest, Nothing)}), New TreeDumperNode("bitwiseOperator", Nothing, new TreeDumperNode() {Visit(node.BitwiseOperator, Nothing)}), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitCompoundAssignmentTargetPlaceholder(node As BoundCompoundAssignmentTargetPlaceholder, arg As Object) As TreeDumperNode Return New TreeDumperNode("compoundAssignmentTargetPlaceholder", Nothing, New TreeDumperNode() { New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitAssignmentOperator(node As BoundAssignmentOperator, arg As Object) As TreeDumperNode Return New TreeDumperNode("assignmentOperator", Nothing, New TreeDumperNode() { New TreeDumperNode("left", Nothing, new TreeDumperNode() {Visit(node.Left, Nothing)}), New TreeDumperNode("leftOnTheRightOpt", Nothing, new TreeDumperNode() {Visit(node.LeftOnTheRightOpt, Nothing)}), New TreeDumperNode("right", Nothing, new TreeDumperNode() {Visit(node.Right, Nothing)}), New TreeDumperNode("suppressObjectClone", node.SuppressObjectClone, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitReferenceAssignment(node As BoundReferenceAssignment, arg As Object) As TreeDumperNode Return New TreeDumperNode("referenceAssignment", Nothing, New TreeDumperNode() { New TreeDumperNode("byRefLocal", Nothing, new TreeDumperNode() {Visit(node.ByRefLocal, Nothing)}), New TreeDumperNode("lValue", Nothing, new TreeDumperNode() {Visit(node.LValue, Nothing)}), New TreeDumperNode("isLValue", node.IsLValue, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitAddressOfOperator(node As BoundAddressOfOperator, arg As Object) As TreeDumperNode Return New TreeDumperNode("addressOfOperator", Nothing, New TreeDumperNode() { New TreeDumperNode("binder", node.Binder, Nothing), New TreeDumperNode("withDependencies", node.WithDependencies, Nothing), New TreeDumperNode("methodGroup", Nothing, new TreeDumperNode() {Visit(node.MethodGroup, Nothing)}), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitTernaryConditionalExpression(node As BoundTernaryConditionalExpression, arg As Object) As TreeDumperNode Return New TreeDumperNode("ternaryConditionalExpression", Nothing, New TreeDumperNode() { New TreeDumperNode("condition", Nothing, new TreeDumperNode() {Visit(node.Condition, Nothing)}), New TreeDumperNode("whenTrue", Nothing, new TreeDumperNode() {Visit(node.WhenTrue, Nothing)}), New TreeDumperNode("whenFalse", Nothing, new TreeDumperNode() {Visit(node.WhenFalse, Nothing)}), New TreeDumperNode("constantValueOpt", node.ConstantValueOpt, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitBinaryConditionalExpression(node As BoundBinaryConditionalExpression, arg As Object) As TreeDumperNode Return New TreeDumperNode("binaryConditionalExpression", Nothing, New TreeDumperNode() { New TreeDumperNode("testExpression", Nothing, new TreeDumperNode() {Visit(node.TestExpression, Nothing)}), New TreeDumperNode("convertedTestExpression", Nothing, new TreeDumperNode() {Visit(node.ConvertedTestExpression, Nothing)}), New TreeDumperNode("testExpressionPlaceholder", Nothing, new TreeDumperNode() {Visit(node.TestExpressionPlaceholder, Nothing)}), New TreeDumperNode("elseExpression", Nothing, new TreeDumperNode() {Visit(node.ElseExpression, Nothing)}), New TreeDumperNode("constantValueOpt", node.ConstantValueOpt, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitConversion(node As BoundConversion, arg As Object) As TreeDumperNode Return New TreeDumperNode("conversion", Nothing, New TreeDumperNode() { New TreeDumperNode("operand", Nothing, new TreeDumperNode() {Visit(node.Operand, Nothing)}), New TreeDumperNode("conversionKind", node.ConversionKind, Nothing), New TreeDumperNode("checked", node.Checked, Nothing), New TreeDumperNode("explicitCastInCode", node.ExplicitCastInCode, Nothing), New TreeDumperNode("constantValueOpt", node.ConstantValueOpt, Nothing), New TreeDumperNode("extendedInfoOpt", Nothing, new TreeDumperNode() {Visit(node.ExtendedInfoOpt, Nothing)}), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitRelaxationLambda(node As BoundRelaxationLambda, arg As Object) As TreeDumperNode Return New TreeDumperNode("relaxationLambda", Nothing, New TreeDumperNode() { New TreeDumperNode("lambda", Nothing, new TreeDumperNode() {Visit(node.Lambda, Nothing)}), New TreeDumperNode("receiverPlaceholderOpt", Nothing, new TreeDumperNode() {Visit(node.ReceiverPlaceholderOpt, Nothing)}) }) End Function Public Overrides Function VisitConvertedTupleElements(node As BoundConvertedTupleElements, arg As Object) As TreeDumperNode Return New TreeDumperNode("convertedTupleElements", Nothing, New TreeDumperNode() { New TreeDumperNode("elementPlaceholders", Nothing, From x In node.ElementPlaceholders Select Visit(x, Nothing)), New TreeDumperNode("convertedElements", Nothing, From x In node.ConvertedElements Select Visit(x, Nothing)) }) End Function Public Overrides Function VisitUserDefinedConversion(node As BoundUserDefinedConversion, arg As Object) As TreeDumperNode Return New TreeDumperNode("userDefinedConversion", Nothing, New TreeDumperNode() { New TreeDumperNode("underlyingExpression", Nothing, new TreeDumperNode() {Visit(node.UnderlyingExpression, Nothing)}), New TreeDumperNode("inOutConversionFlags", node.InOutConversionFlags, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitDirectCast(node As BoundDirectCast, arg As Object) As TreeDumperNode Return New TreeDumperNode("[directCast]", Nothing, New TreeDumperNode() { New TreeDumperNode("operand", Nothing, new TreeDumperNode() {Visit(node.Operand, Nothing)}), New TreeDumperNode("conversionKind", node.ConversionKind, Nothing), New TreeDumperNode("suppressVirtualCalls", node.SuppressVirtualCalls, Nothing), New TreeDumperNode("constantValueOpt", node.ConstantValueOpt, Nothing), New TreeDumperNode("relaxationLambdaOpt", Nothing, new TreeDumperNode() {Visit(node.RelaxationLambdaOpt, Nothing)}), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitTryCast(node As BoundTryCast, arg As Object) As TreeDumperNode Return New TreeDumperNode("[tryCast]", Nothing, New TreeDumperNode() { New TreeDumperNode("operand", Nothing, new TreeDumperNode() {Visit(node.Operand, Nothing)}), New TreeDumperNode("conversionKind", node.ConversionKind, Nothing), New TreeDumperNode("constantValueOpt", node.ConstantValueOpt, Nothing), New TreeDumperNode("relaxationLambdaOpt", Nothing, new TreeDumperNode() {Visit(node.RelaxationLambdaOpt, Nothing)}), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitTypeOf(node As BoundTypeOf, arg As Object) As TreeDumperNode Return New TreeDumperNode("[typeOf]", Nothing, New TreeDumperNode() { New TreeDumperNode("operand", Nothing, new TreeDumperNode() {Visit(node.Operand, Nothing)}), New TreeDumperNode("isTypeOfIsNotExpression", node.IsTypeOfIsNotExpression, Nothing), New TreeDumperNode("targetType", node.TargetType, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitSequencePoint(node As BoundSequencePoint, arg As Object) As TreeDumperNode Return New TreeDumperNode("sequencePoint", Nothing, New TreeDumperNode() { New TreeDumperNode("statementOpt", Nothing, new TreeDumperNode() {Visit(node.StatementOpt, Nothing)}) }) End Function Public Overrides Function VisitSequencePointExpression(node As BoundSequencePointExpression, arg As Object) As TreeDumperNode Return New TreeDumperNode("sequencePointExpression", Nothing, New TreeDumperNode() { New TreeDumperNode("expression", Nothing, new TreeDumperNode() {Visit(node.Expression, Nothing)}), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitSequencePointWithSpan(node As BoundSequencePointWithSpan, arg As Object) As TreeDumperNode Return New TreeDumperNode("sequencePointWithSpan", Nothing, New TreeDumperNode() { New TreeDumperNode("statementOpt", Nothing, new TreeDumperNode() {Visit(node.StatementOpt, Nothing)}), New TreeDumperNode("span", node.Span, Nothing) }) End Function Public Overrides Function VisitNoOpStatement(node As BoundNoOpStatement, arg As Object) As TreeDumperNode Return New TreeDumperNode("noOpStatement", Nothing, New TreeDumperNode() { New TreeDumperNode("flavor", node.Flavor, Nothing) }) End Function Public Overrides Function VisitMethodGroup(node As BoundMethodGroup, arg As Object) As TreeDumperNode Return New TreeDumperNode("methodGroup", Nothing, New TreeDumperNode() { New TreeDumperNode("typeArgumentsOpt", Nothing, new TreeDumperNode() {Visit(node.TypeArgumentsOpt, Nothing)}), New TreeDumperNode("methods", node.Methods, Nothing), New TreeDumperNode("pendingExtensionMethodsOpt", node.PendingExtensionMethodsOpt, Nothing), New TreeDumperNode("resultKind", node.ResultKind, Nothing), New TreeDumperNode("receiverOpt", Nothing, new TreeDumperNode() {Visit(node.ReceiverOpt, Nothing)}), New TreeDumperNode("qualificationKind", node.QualificationKind, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitPropertyGroup(node As BoundPropertyGroup, arg As Object) As TreeDumperNode Return New TreeDumperNode("propertyGroup", Nothing, New TreeDumperNode() { New TreeDumperNode("properties", node.Properties, Nothing), New TreeDumperNode("resultKind", node.ResultKind, Nothing), New TreeDumperNode("receiverOpt", Nothing, new TreeDumperNode() {Visit(node.ReceiverOpt, Nothing)}), New TreeDumperNode("qualificationKind", node.QualificationKind, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitReturnStatement(node As BoundReturnStatement, arg As Object) As TreeDumperNode Return New TreeDumperNode("returnStatement", Nothing, New TreeDumperNode() { New TreeDumperNode("expressionOpt", Nothing, new TreeDumperNode() {Visit(node.ExpressionOpt, Nothing)}), New TreeDumperNode("functionLocalOpt", node.FunctionLocalOpt, Nothing), New TreeDumperNode("exitLabelOpt", node.ExitLabelOpt, Nothing) }) End Function Public Overrides Function VisitYieldStatement(node As BoundYieldStatement, arg As Object) As TreeDumperNode Return New TreeDumperNode("yieldStatement", Nothing, New TreeDumperNode() { New TreeDumperNode("expression", Nothing, new TreeDumperNode() {Visit(node.Expression, Nothing)}) }) End Function Public Overrides Function VisitThrowStatement(node As BoundThrowStatement, arg As Object) As TreeDumperNode Return New TreeDumperNode("throwStatement", Nothing, New TreeDumperNode() { New TreeDumperNode("expressionOpt", Nothing, new TreeDumperNode() {Visit(node.ExpressionOpt, Nothing)}) }) End Function Public Overrides Function VisitRedimStatement(node As BoundRedimStatement, arg As Object) As TreeDumperNode Return New TreeDumperNode("redimStatement", Nothing, New TreeDumperNode() { New TreeDumperNode("clauses", Nothing, From x In node.Clauses Select Visit(x, Nothing)) }) End Function Public Overrides Function VisitRedimClause(node As BoundRedimClause, arg As Object) As TreeDumperNode Return New TreeDumperNode("redimClause", Nothing, New TreeDumperNode() { New TreeDumperNode("operand", Nothing, new TreeDumperNode() {Visit(node.Operand, Nothing)}), New TreeDumperNode("indices", Nothing, From x In node.Indices Select Visit(x, Nothing)), New TreeDumperNode("arrayTypeOpt", node.ArrayTypeOpt, Nothing), New TreeDumperNode("preserve", node.Preserve, Nothing) }) End Function Public Overrides Function VisitEraseStatement(node As BoundEraseStatement, arg As Object) As TreeDumperNode Return New TreeDumperNode("eraseStatement", Nothing, New TreeDumperNode() { New TreeDumperNode("clauses", Nothing, From x In node.Clauses Select Visit(x, Nothing)) }) End Function Public Overrides Function VisitCall(node As BoundCall, arg As Object) As TreeDumperNode Return New TreeDumperNode("[call]", Nothing, New TreeDumperNode() { New TreeDumperNode("method", node.Method, Nothing), New TreeDumperNode("methodGroupOpt", Nothing, new TreeDumperNode() {Visit(node.MethodGroupOpt, Nothing)}), New TreeDumperNode("receiverOpt", Nothing, new TreeDumperNode() {Visit(node.ReceiverOpt, Nothing)}), New TreeDumperNode("arguments", Nothing, From x In node.Arguments Select Visit(x, Nothing)), New TreeDumperNode("defaultArguments", node.DefaultArguments, Nothing), New TreeDumperNode("constantValueOpt", node.ConstantValueOpt, Nothing), New TreeDumperNode("isLValue", node.IsLValue, Nothing), New TreeDumperNode("suppressObjectClone", node.SuppressObjectClone, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitAttribute(node As BoundAttribute, arg As Object) As TreeDumperNode Return New TreeDumperNode("attribute", Nothing, New TreeDumperNode() { New TreeDumperNode("constructor", node.Constructor, Nothing), New TreeDumperNode("constructorArguments", Nothing, From x In node.ConstructorArguments Select Visit(x, Nothing)), New TreeDumperNode("constructorDefaultArguments", node.ConstructorDefaultArguments, Nothing), New TreeDumperNode("namedArguments", Nothing, From x In node.NamedArguments Select Visit(x, Nothing)), New TreeDumperNode("resultKind", node.ResultKind, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitLateMemberAccess(node As BoundLateMemberAccess, arg As Object) As TreeDumperNode Return New TreeDumperNode("lateMemberAccess", Nothing, New TreeDumperNode() { New TreeDumperNode("nameOpt", node.NameOpt, Nothing), New TreeDumperNode("containerTypeOpt", node.ContainerTypeOpt, Nothing), New TreeDumperNode("receiverOpt", Nothing, new TreeDumperNode() {Visit(node.ReceiverOpt, Nothing)}), New TreeDumperNode("typeArgumentsOpt", Nothing, new TreeDumperNode() {Visit(node.TypeArgumentsOpt, Nothing)}), New TreeDumperNode("accessKind", node.AccessKind, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitLateInvocation(node As BoundLateInvocation, arg As Object) As TreeDumperNode Return New TreeDumperNode("lateInvocation", Nothing, New TreeDumperNode() { New TreeDumperNode("member", Nothing, new TreeDumperNode() {Visit(node.Member, Nothing)}), New TreeDumperNode("argumentsOpt", Nothing, From x In node.ArgumentsOpt Select Visit(x, Nothing)), New TreeDumperNode("argumentNamesOpt", node.ArgumentNamesOpt, Nothing), New TreeDumperNode("accessKind", node.AccessKind, Nothing), New TreeDumperNode("methodOrPropertyGroupOpt", Nothing, new TreeDumperNode() {Visit(node.MethodOrPropertyGroupOpt, Nothing)}), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitLateAddressOfOperator(node As BoundLateAddressOfOperator, arg As Object) As TreeDumperNode Return New TreeDumperNode("lateAddressOfOperator", Nothing, New TreeDumperNode() { New TreeDumperNode("binder", node.Binder, Nothing), New TreeDumperNode("memberAccess", Nothing, new TreeDumperNode() {Visit(node.MemberAccess, Nothing)}), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitTupleLiteral(node As BoundTupleLiteral, arg As Object) As TreeDumperNode Return New TreeDumperNode("tupleLiteral", Nothing, New TreeDumperNode() { New TreeDumperNode("inferredType", node.InferredType, Nothing), New TreeDumperNode("argumentNamesOpt", node.ArgumentNamesOpt, Nothing), New TreeDumperNode("inferredNamesOpt", node.InferredNamesOpt, Nothing), New TreeDumperNode("arguments", Nothing, From x In node.Arguments Select Visit(x, Nothing)), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitConvertedTupleLiteral(node As BoundConvertedTupleLiteral, arg As Object) As TreeDumperNode Return New TreeDumperNode("convertedTupleLiteral", Nothing, New TreeDumperNode() { New TreeDumperNode("naturalTypeOpt", node.NaturalTypeOpt, Nothing), New TreeDumperNode("arguments", Nothing, From x In node.Arguments Select Visit(x, Nothing)), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitObjectCreationExpression(node As BoundObjectCreationExpression, arg As Object) As TreeDumperNode Return New TreeDumperNode("objectCreationExpression", Nothing, New TreeDumperNode() { New TreeDumperNode("constructorOpt", node.ConstructorOpt, Nothing), New TreeDumperNode("methodGroupOpt", Nothing, new TreeDumperNode() {Visit(node.MethodGroupOpt, Nothing)}), New TreeDumperNode("arguments", Nothing, From x In node.Arguments Select Visit(x, Nothing)), New TreeDumperNode("defaultArguments", node.DefaultArguments, Nothing), New TreeDumperNode("initializerOpt", Nothing, new TreeDumperNode() {Visit(node.InitializerOpt, Nothing)}), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitNoPiaObjectCreationExpression(node As BoundNoPiaObjectCreationExpression, arg As Object) As TreeDumperNode Return New TreeDumperNode("noPiaObjectCreationExpression", Nothing, New TreeDumperNode() { New TreeDumperNode("guidString", node.GuidString, Nothing), New TreeDumperNode("initializerOpt", Nothing, new TreeDumperNode() {Visit(node.InitializerOpt, Nothing)}), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitAnonymousTypeCreationExpression(node As BoundAnonymousTypeCreationExpression, arg As Object) As TreeDumperNode Return New TreeDumperNode("anonymousTypeCreationExpression", Nothing, New TreeDumperNode() { New TreeDumperNode("binderOpt", node.BinderOpt, Nothing), New TreeDumperNode("declarations", Nothing, From x In node.Declarations Select Visit(x, Nothing)), New TreeDumperNode("arguments", Nothing, From x In node.Arguments Select Visit(x, Nothing)), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitAnonymousTypePropertyAccess(node As BoundAnonymousTypePropertyAccess, arg As Object) As TreeDumperNode Return New TreeDumperNode("anonymousTypePropertyAccess", Nothing, New TreeDumperNode() { New TreeDumperNode("binder", node.Binder, Nothing), New TreeDumperNode("propertyIndex", node.PropertyIndex, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitAnonymousTypeFieldInitializer(node As BoundAnonymousTypeFieldInitializer, arg As Object) As TreeDumperNode Return New TreeDumperNode("anonymousTypeFieldInitializer", Nothing, New TreeDumperNode() { New TreeDumperNode("binder", node.Binder, Nothing), New TreeDumperNode("value", Nothing, new TreeDumperNode() {Visit(node.Value, Nothing)}), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitObjectInitializerExpression(node As BoundObjectInitializerExpression, arg As Object) As TreeDumperNode Return New TreeDumperNode("objectInitializerExpression", Nothing, New TreeDumperNode() { New TreeDumperNode("createTemporaryLocalForInitialization", node.CreateTemporaryLocalForInitialization, Nothing), New TreeDumperNode("placeholderOpt", Nothing, new TreeDumperNode() {Visit(node.PlaceholderOpt, Nothing)}), New TreeDumperNode("initializers", Nothing, From x In node.Initializers Select Visit(x, Nothing)), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitCollectionInitializerExpression(node As BoundCollectionInitializerExpression, arg As Object) As TreeDumperNode Return New TreeDumperNode("collectionInitializerExpression", Nothing, New TreeDumperNode() { New TreeDumperNode("placeholderOpt", Nothing, new TreeDumperNode() {Visit(node.PlaceholderOpt, Nothing)}), New TreeDumperNode("initializers", Nothing, From x In node.Initializers Select Visit(x, Nothing)), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitNewT(node As BoundNewT, arg As Object) As TreeDumperNode Return New TreeDumperNode("newT", Nothing, New TreeDumperNode() { New TreeDumperNode("initializerOpt", Nothing, new TreeDumperNode() {Visit(node.InitializerOpt, Nothing)}), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitDelegateCreationExpression(node As BoundDelegateCreationExpression, arg As Object) As TreeDumperNode Return New TreeDumperNode("delegateCreationExpression", Nothing, New TreeDumperNode() { New TreeDumperNode("receiverOpt", Nothing, new TreeDumperNode() {Visit(node.ReceiverOpt, Nothing)}), New TreeDumperNode("method", node.Method, Nothing), New TreeDumperNode("relaxationLambdaOpt", Nothing, new TreeDumperNode() {Visit(node.RelaxationLambdaOpt, Nothing)}), New TreeDumperNode("relaxationReceiverPlaceholderOpt", Nothing, new TreeDumperNode() {Visit(node.RelaxationReceiverPlaceholderOpt, Nothing)}), New TreeDumperNode("methodGroupOpt", Nothing, new TreeDumperNode() {Visit(node.MethodGroupOpt, Nothing)}), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitArrayCreation(node As BoundArrayCreation, arg As Object) As TreeDumperNode Return New TreeDumperNode("arrayCreation", Nothing, New TreeDumperNode() { New TreeDumperNode("isParamArrayArgument", node.IsParamArrayArgument, Nothing), New TreeDumperNode("bounds", Nothing, From x In node.Bounds Select Visit(x, Nothing)), New TreeDumperNode("initializerOpt", Nothing, new TreeDumperNode() {Visit(node.InitializerOpt, Nothing)}), New TreeDumperNode("arrayLiteralOpt", Nothing, new TreeDumperNode() {Visit(node.ArrayLiteralOpt, Nothing)}), New TreeDumperNode("arrayLiteralConversion", node.ArrayLiteralConversion, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitArrayLiteral(node As BoundArrayLiteral, arg As Object) As TreeDumperNode Return New TreeDumperNode("arrayLiteral", Nothing, New TreeDumperNode() { New TreeDumperNode("hasDominantType", node.HasDominantType, Nothing), New TreeDumperNode("numberOfCandidates", node.NumberOfCandidates, Nothing), New TreeDumperNode("inferredType", node.InferredType, Nothing), New TreeDumperNode("bounds", Nothing, From x In node.Bounds Select Visit(x, Nothing)), New TreeDumperNode("initializer", Nothing, new TreeDumperNode() {Visit(node.Initializer, Nothing)}), New TreeDumperNode("binder", node.Binder, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitArrayInitialization(node As BoundArrayInitialization, arg As Object) As TreeDumperNode Return New TreeDumperNode("arrayInitialization", Nothing, New TreeDumperNode() { New TreeDumperNode("initializers", Nothing, From x In node.Initializers Select Visit(x, Nothing)), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitFieldAccess(node As BoundFieldAccess, arg As Object) As TreeDumperNode Return New TreeDumperNode("fieldAccess", Nothing, New TreeDumperNode() { New TreeDumperNode("receiverOpt", Nothing, new TreeDumperNode() {Visit(node.ReceiverOpt, Nothing)}), New TreeDumperNode("fieldSymbol", node.FieldSymbol, Nothing), New TreeDumperNode("isLValue", node.IsLValue, Nothing), New TreeDumperNode("suppressVirtualCalls", node.SuppressVirtualCalls, Nothing), New TreeDumperNode("constantsInProgressOpt", node.ConstantsInProgressOpt, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitPropertyAccess(node As BoundPropertyAccess, arg As Object) As TreeDumperNode Return New TreeDumperNode("propertyAccess", Nothing, New TreeDumperNode() { New TreeDumperNode("propertySymbol", node.PropertySymbol, Nothing), New TreeDumperNode("propertyGroupOpt", Nothing, new TreeDumperNode() {Visit(node.PropertyGroupOpt, Nothing)}), New TreeDumperNode("accessKind", node.AccessKind, Nothing), New TreeDumperNode("isWriteable", node.IsWriteable, Nothing), New TreeDumperNode("isLValue", node.IsLValue, Nothing), New TreeDumperNode("receiverOpt", Nothing, new TreeDumperNode() {Visit(node.ReceiverOpt, Nothing)}), New TreeDumperNode("arguments", Nothing, From x In node.Arguments Select Visit(x, Nothing)), New TreeDumperNode("defaultArguments", node.DefaultArguments, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitEventAccess(node As BoundEventAccess, arg As Object) As TreeDumperNode Return New TreeDumperNode("eventAccess", Nothing, New TreeDumperNode() { New TreeDumperNode("receiverOpt", Nothing, new TreeDumperNode() {Visit(node.ReceiverOpt, Nothing)}), New TreeDumperNode("eventSymbol", node.EventSymbol, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitBlock(node As BoundBlock, arg As Object) As TreeDumperNode Return New TreeDumperNode("block", Nothing, New TreeDumperNode() { New TreeDumperNode("statementListSyntax", node.StatementListSyntax, Nothing), New TreeDumperNode("locals", node.Locals, Nothing), New TreeDumperNode("statements", Nothing, From x In node.Statements Select Visit(x, Nothing)) }) End Function Public Overrides Function VisitStateMachineScope(node As BoundStateMachineScope, arg As Object) As TreeDumperNode Return New TreeDumperNode("stateMachineScope", Nothing, New TreeDumperNode() { New TreeDumperNode("fields", node.Fields, Nothing), New TreeDumperNode("statement", Nothing, new TreeDumperNode() {Visit(node.Statement, Nothing)}) }) End Function Public Overrides Function VisitLocalDeclaration(node As BoundLocalDeclaration, arg As Object) As TreeDumperNode Return New TreeDumperNode("localDeclaration", Nothing, New TreeDumperNode() { New TreeDumperNode("localSymbol", node.LocalSymbol, Nothing), New TreeDumperNode("declarationInitializerOpt", Nothing, new TreeDumperNode() {Visit(node.DeclarationInitializerOpt, Nothing)}), New TreeDumperNode("identifierInitializerOpt", Nothing, new TreeDumperNode() {Visit(node.IdentifierInitializerOpt, Nothing)}), New TreeDumperNode("initializedByAsNew", node.InitializedByAsNew, Nothing) }) End Function Public Overrides Function VisitAsNewLocalDeclarations(node As BoundAsNewLocalDeclarations, arg As Object) As TreeDumperNode Return New TreeDumperNode("asNewLocalDeclarations", Nothing, New TreeDumperNode() { New TreeDumperNode("localDeclarations", Nothing, From x In node.LocalDeclarations Select Visit(x, Nothing)), New TreeDumperNode("initializer", Nothing, new TreeDumperNode() {Visit(node.Initializer, Nothing)}), New TreeDumperNode("binder", node.Binder, Nothing) }) End Function Public Overrides Function VisitDimStatement(node As BoundDimStatement, arg As Object) As TreeDumperNode Return New TreeDumperNode("dimStatement", Nothing, New TreeDumperNode() { New TreeDumperNode("localDeclarations", Nothing, From x In node.LocalDeclarations Select Visit(x, Nothing)), New TreeDumperNode("initializerOpt", Nothing, new TreeDumperNode() {Visit(node.InitializerOpt, Nothing)}) }) End Function Public Overrides Function VisitInitializer(node As BoundInitializer, arg As Object) As TreeDumperNode Return New TreeDumperNode("initializer", Nothing, Array.Empty(Of TreeDumperNode)()) End Function Public Overrides Function VisitFieldInitializer(node As BoundFieldInitializer, arg As Object) As TreeDumperNode Return New TreeDumperNode("fieldInitializer", Nothing, New TreeDumperNode() { New TreeDumperNode("initializedFields", node.InitializedFields, Nothing), New TreeDumperNode("memberAccessExpressionOpt", Nothing, new TreeDumperNode() {Visit(node.MemberAccessExpressionOpt, Nothing)}), New TreeDumperNode("initialValue", Nothing, new TreeDumperNode() {Visit(node.InitialValue, Nothing)}), New TreeDumperNode("binderOpt", node.BinderOpt, Nothing) }) End Function Public Overrides Function VisitPropertyInitializer(node As BoundPropertyInitializer, arg As Object) As TreeDumperNode Return New TreeDumperNode("propertyInitializer", Nothing, New TreeDumperNode() { New TreeDumperNode("initializedProperties", node.InitializedProperties, Nothing), New TreeDumperNode("memberAccessExpressionOpt", Nothing, new TreeDumperNode() {Visit(node.MemberAccessExpressionOpt, Nothing)}), New TreeDumperNode("initialValue", Nothing, new TreeDumperNode() {Visit(node.InitialValue, Nothing)}), New TreeDumperNode("binderOpt", node.BinderOpt, Nothing) }) End Function Public Overrides Function VisitParameterEqualsValue(node As BoundParameterEqualsValue, arg As Object) As TreeDumperNode Return New TreeDumperNode("parameterEqualsValue", Nothing, New TreeDumperNode() { New TreeDumperNode("parameter", node.Parameter, Nothing), New TreeDumperNode("value", Nothing, new TreeDumperNode() {Visit(node.Value, Nothing)}) }) End Function Public Overrides Function VisitGlobalStatementInitializer(node As BoundGlobalStatementInitializer, arg As Object) As TreeDumperNode Return New TreeDumperNode("globalStatementInitializer", Nothing, New TreeDumperNode() { New TreeDumperNode("statement", Nothing, new TreeDumperNode() {Visit(node.Statement, Nothing)}) }) End Function Public Overrides Function VisitSequence(node As BoundSequence, arg As Object) As TreeDumperNode Return New TreeDumperNode("sequence", Nothing, New TreeDumperNode() { New TreeDumperNode("locals", node.Locals, Nothing), New TreeDumperNode("sideEffects", Nothing, From x In node.SideEffects Select Visit(x, Nothing)), New TreeDumperNode("valueOpt", Nothing, new TreeDumperNode() {Visit(node.ValueOpt, Nothing)}), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitExpressionStatement(node As BoundExpressionStatement, arg As Object) As TreeDumperNode Return New TreeDumperNode("expressionStatement", Nothing, New TreeDumperNode() { New TreeDumperNode("expression", Nothing, new TreeDumperNode() {Visit(node.Expression, Nothing)}) }) End Function Public Overrides Function VisitIfStatement(node As BoundIfStatement, arg As Object) As TreeDumperNode Return New TreeDumperNode("ifStatement", Nothing, New TreeDumperNode() { New TreeDumperNode("condition", Nothing, new TreeDumperNode() {Visit(node.Condition, Nothing)}), New TreeDumperNode("consequence", Nothing, new TreeDumperNode() {Visit(node.Consequence, Nothing)}), New TreeDumperNode("alternativeOpt", Nothing, new TreeDumperNode() {Visit(node.AlternativeOpt, Nothing)}) }) End Function Public Overrides Function VisitSelectStatement(node As BoundSelectStatement, arg As Object) As TreeDumperNode Return New TreeDumperNode("selectStatement", Nothing, New TreeDumperNode() { New TreeDumperNode("expressionStatement", Nothing, new TreeDumperNode() {Visit(node.ExpressionStatement, Nothing)}), New TreeDumperNode("exprPlaceholderOpt", Nothing, new TreeDumperNode() {Visit(node.ExprPlaceholderOpt, Nothing)}), New TreeDumperNode("caseBlocks", Nothing, From x In node.CaseBlocks Select Visit(x, Nothing)), New TreeDumperNode("recommendSwitchTable", node.RecommendSwitchTable, Nothing), New TreeDumperNode("exitLabel", node.ExitLabel, Nothing) }) End Function Public Overrides Function VisitCaseBlock(node As BoundCaseBlock, arg As Object) As TreeDumperNode Return New TreeDumperNode("caseBlock", Nothing, New TreeDumperNode() { New TreeDumperNode("caseStatement", Nothing, new TreeDumperNode() {Visit(node.CaseStatement, Nothing)}), New TreeDumperNode("body", Nothing, new TreeDumperNode() {Visit(node.Body, Nothing)}) }) End Function Public Overrides Function VisitCaseStatement(node As BoundCaseStatement, arg As Object) As TreeDumperNode Return New TreeDumperNode("caseStatement", Nothing, New TreeDumperNode() { New TreeDumperNode("caseClauses", Nothing, From x In node.CaseClauses Select Visit(x, Nothing)), New TreeDumperNode("conditionOpt", Nothing, new TreeDumperNode() {Visit(node.ConditionOpt, Nothing)}) }) End Function Public Overrides Function VisitSimpleCaseClause(node As BoundSimpleCaseClause, arg As Object) As TreeDumperNode Return New TreeDumperNode("simpleCaseClause", Nothing, New TreeDumperNode() { New TreeDumperNode("valueOpt", Nothing, new TreeDumperNode() {Visit(node.ValueOpt, Nothing)}), New TreeDumperNode("conditionOpt", Nothing, new TreeDumperNode() {Visit(node.ConditionOpt, Nothing)}) }) End Function Public Overrides Function VisitRangeCaseClause(node As BoundRangeCaseClause, arg As Object) As TreeDumperNode Return New TreeDumperNode("rangeCaseClause", Nothing, New TreeDumperNode() { New TreeDumperNode("lowerBoundOpt", Nothing, new TreeDumperNode() {Visit(node.LowerBoundOpt, Nothing)}), New TreeDumperNode("upperBoundOpt", Nothing, new TreeDumperNode() {Visit(node.UpperBoundOpt, Nothing)}), New TreeDumperNode("lowerBoundConditionOpt", Nothing, new TreeDumperNode() {Visit(node.LowerBoundConditionOpt, Nothing)}), New TreeDumperNode("upperBoundConditionOpt", Nothing, new TreeDumperNode() {Visit(node.UpperBoundConditionOpt, Nothing)}) }) End Function Public Overrides Function VisitRelationalCaseClause(node As BoundRelationalCaseClause, arg As Object) As TreeDumperNode Return New TreeDumperNode("relationalCaseClause", Nothing, New TreeDumperNode() { New TreeDumperNode("operatorKind", node.OperatorKind, Nothing), New TreeDumperNode("valueOpt", Nothing, new TreeDumperNode() {Visit(node.ValueOpt, Nothing)}), New TreeDumperNode("conditionOpt", Nothing, new TreeDumperNode() {Visit(node.ConditionOpt, Nothing)}) }) End Function Public Overrides Function VisitDoLoopStatement(node As BoundDoLoopStatement, arg As Object) As TreeDumperNode Return New TreeDumperNode("doLoopStatement", Nothing, New TreeDumperNode() { New TreeDumperNode("topConditionOpt", Nothing, new TreeDumperNode() {Visit(node.TopConditionOpt, Nothing)}), New TreeDumperNode("bottomConditionOpt", Nothing, new TreeDumperNode() {Visit(node.BottomConditionOpt, Nothing)}), New TreeDumperNode("topConditionIsUntil", node.TopConditionIsUntil, Nothing), New TreeDumperNode("bottomConditionIsUntil", node.BottomConditionIsUntil, Nothing), New TreeDumperNode("body", Nothing, new TreeDumperNode() {Visit(node.Body, Nothing)}), New TreeDumperNode("continueLabel", node.ContinueLabel, Nothing), New TreeDumperNode("exitLabel", node.ExitLabel, Nothing) }) End Function Public Overrides Function VisitWhileStatement(node As BoundWhileStatement, arg As Object) As TreeDumperNode Return New TreeDumperNode("whileStatement", Nothing, New TreeDumperNode() { New TreeDumperNode("condition", Nothing, new TreeDumperNode() {Visit(node.Condition, Nothing)}), New TreeDumperNode("body", Nothing, new TreeDumperNode() {Visit(node.Body, Nothing)}), New TreeDumperNode("continueLabel", node.ContinueLabel, Nothing), New TreeDumperNode("exitLabel", node.ExitLabel, Nothing) }) End Function Public Overrides Function VisitForToUserDefinedOperators(node As BoundForToUserDefinedOperators, arg As Object) As TreeDumperNode Return New TreeDumperNode("forToUserDefinedOperators", Nothing, New TreeDumperNode() { New TreeDumperNode("leftOperandPlaceholder", Nothing, new TreeDumperNode() {Visit(node.LeftOperandPlaceholder, Nothing)}), New TreeDumperNode("rightOperandPlaceholder", Nothing, new TreeDumperNode() {Visit(node.RightOperandPlaceholder, Nothing)}), New TreeDumperNode("addition", Nothing, new TreeDumperNode() {Visit(node.Addition, Nothing)}), New TreeDumperNode("subtraction", Nothing, new TreeDumperNode() {Visit(node.Subtraction, Nothing)}), New TreeDumperNode("lessThanOrEqual", Nothing, new TreeDumperNode() {Visit(node.LessThanOrEqual, Nothing)}), New TreeDumperNode("greaterThanOrEqual", Nothing, new TreeDumperNode() {Visit(node.GreaterThanOrEqual, Nothing)}) }) End Function Public Overrides Function VisitForToStatement(node As BoundForToStatement, arg As Object) As TreeDumperNode Return New TreeDumperNode("forToStatement", Nothing, New TreeDumperNode() { New TreeDumperNode("initialValue", Nothing, new TreeDumperNode() {Visit(node.InitialValue, Nothing)}), New TreeDumperNode("limitValue", Nothing, new TreeDumperNode() {Visit(node.LimitValue, Nothing)}), New TreeDumperNode("stepValue", Nothing, new TreeDumperNode() {Visit(node.StepValue, Nothing)}), New TreeDumperNode("checked", node.Checked, Nothing), New TreeDumperNode("operatorsOpt", Nothing, new TreeDumperNode() {Visit(node.OperatorsOpt, Nothing)}), New TreeDumperNode("declaredOrInferredLocalOpt", node.DeclaredOrInferredLocalOpt, Nothing), New TreeDumperNode("controlVariable", Nothing, new TreeDumperNode() {Visit(node.ControlVariable, Nothing)}), New TreeDumperNode("body", Nothing, new TreeDumperNode() {Visit(node.Body, Nothing)}), New TreeDumperNode("nextVariablesOpt", Nothing, From x In node.NextVariablesOpt Select Visit(x, Nothing)), New TreeDumperNode("continueLabel", node.ContinueLabel, Nothing), New TreeDumperNode("exitLabel", node.ExitLabel, Nothing) }) End Function Public Overrides Function VisitForEachStatement(node As BoundForEachStatement, arg As Object) As TreeDumperNode Return New TreeDumperNode("forEachStatement", Nothing, New TreeDumperNode() { New TreeDumperNode("collection", Nothing, new TreeDumperNode() {Visit(node.Collection, Nothing)}), New TreeDumperNode("enumeratorInfo", node.EnumeratorInfo, Nothing), New TreeDumperNode("declaredOrInferredLocalOpt", node.DeclaredOrInferredLocalOpt, Nothing), New TreeDumperNode("controlVariable", Nothing, new TreeDumperNode() {Visit(node.ControlVariable, Nothing)}), New TreeDumperNode("body", Nothing, new TreeDumperNode() {Visit(node.Body, Nothing)}), New TreeDumperNode("nextVariablesOpt", Nothing, From x In node.NextVariablesOpt Select Visit(x, Nothing)), New TreeDumperNode("continueLabel", node.ContinueLabel, Nothing), New TreeDumperNode("exitLabel", node.ExitLabel, Nothing) }) End Function Public Overrides Function VisitExitStatement(node As BoundExitStatement, arg As Object) As TreeDumperNode Return New TreeDumperNode("exitStatement", Nothing, New TreeDumperNode() { New TreeDumperNode("label", node.Label, Nothing) }) End Function Public Overrides Function VisitContinueStatement(node As BoundContinueStatement, arg As Object) As TreeDumperNode Return New TreeDumperNode("continueStatement", Nothing, New TreeDumperNode() { New TreeDumperNode("label", node.Label, Nothing) }) End Function Public Overrides Function VisitTryStatement(node As BoundTryStatement, arg As Object) As TreeDumperNode Return New TreeDumperNode("tryStatement", Nothing, New TreeDumperNode() { New TreeDumperNode("tryBlock", Nothing, new TreeDumperNode() {Visit(node.TryBlock, Nothing)}), New TreeDumperNode("catchBlocks", Nothing, From x In node.CatchBlocks Select Visit(x, Nothing)), New TreeDumperNode("finallyBlockOpt", Nothing, new TreeDumperNode() {Visit(node.FinallyBlockOpt, Nothing)}), New TreeDumperNode("exitLabelOpt", node.ExitLabelOpt, Nothing) }) End Function Public Overrides Function VisitCatchBlock(node As BoundCatchBlock, arg As Object) As TreeDumperNode Return New TreeDumperNode("catchBlock", Nothing, New TreeDumperNode() { New TreeDumperNode("localOpt", node.LocalOpt, Nothing), New TreeDumperNode("exceptionSourceOpt", Nothing, new TreeDumperNode() {Visit(node.ExceptionSourceOpt, Nothing)}), New TreeDumperNode("errorLineNumberOpt", Nothing, new TreeDumperNode() {Visit(node.ErrorLineNumberOpt, Nothing)}), New TreeDumperNode("exceptionFilterOpt", Nothing, new TreeDumperNode() {Visit(node.ExceptionFilterOpt, Nothing)}), New TreeDumperNode("body", Nothing, new TreeDumperNode() {Visit(node.Body, Nothing)}), New TreeDumperNode("isSynthesizedAsyncCatchAll", node.IsSynthesizedAsyncCatchAll, Nothing) }) End Function Public Overrides Function VisitLiteral(node As BoundLiteral, arg As Object) As TreeDumperNode Return New TreeDumperNode("literal", Nothing, New TreeDumperNode() { New TreeDumperNode("value", node.Value, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitMeReference(node As BoundMeReference, arg As Object) As TreeDumperNode Return New TreeDumperNode("meReference", Nothing, New TreeDumperNode() { New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitValueTypeMeReference(node As BoundValueTypeMeReference, arg As Object) As TreeDumperNode Return New TreeDumperNode("valueTypeMeReference", Nothing, New TreeDumperNode() { New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitMyBaseReference(node As BoundMyBaseReference, arg As Object) As TreeDumperNode Return New TreeDumperNode("myBaseReference", Nothing, New TreeDumperNode() { New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitMyClassReference(node As BoundMyClassReference, arg As Object) As TreeDumperNode Return New TreeDumperNode("myClassReference", Nothing, New TreeDumperNode() { New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitPreviousSubmissionReference(node As BoundPreviousSubmissionReference, arg As Object) As TreeDumperNode Return New TreeDumperNode("previousSubmissionReference", Nothing, New TreeDumperNode() { New TreeDumperNode("sourceType", node.SourceType, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitHostObjectMemberReference(node As BoundHostObjectMemberReference, arg As Object) As TreeDumperNode Return New TreeDumperNode("hostObjectMemberReference", Nothing, New TreeDumperNode() { New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitLocal(node As BoundLocal, arg As Object) As TreeDumperNode Return New TreeDumperNode("local", Nothing, New TreeDumperNode() { New TreeDumperNode("localSymbol", node.LocalSymbol, Nothing), New TreeDumperNode("isLValue", node.IsLValue, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitPseudoVariable(node As BoundPseudoVariable, arg As Object) As TreeDumperNode Return New TreeDumperNode("pseudoVariable", Nothing, New TreeDumperNode() { New TreeDumperNode("localSymbol", node.LocalSymbol, Nothing), New TreeDumperNode("isLValue", node.IsLValue, Nothing), New TreeDumperNode("emitExpressions", node.EmitExpressions, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitParameter(node As BoundParameter, arg As Object) As TreeDumperNode Return New TreeDumperNode("parameter", Nothing, New TreeDumperNode() { New TreeDumperNode("parameterSymbol", node.ParameterSymbol, Nothing), New TreeDumperNode("isLValue", node.IsLValue, Nothing), New TreeDumperNode("suppressVirtualCalls", node.SuppressVirtualCalls, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitByRefArgumentPlaceholder(node As BoundByRefArgumentPlaceholder, arg As Object) As TreeDumperNode Return New TreeDumperNode("byRefArgumentPlaceholder", Nothing, New TreeDumperNode() { New TreeDumperNode("isOut", node.IsOut, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitByRefArgumentWithCopyBack(node As BoundByRefArgumentWithCopyBack, arg As Object) As TreeDumperNode Return New TreeDumperNode("byRefArgumentWithCopyBack", Nothing, New TreeDumperNode() { New TreeDumperNode("originalArgument", Nothing, new TreeDumperNode() {Visit(node.OriginalArgument, Nothing)}), New TreeDumperNode("inConversion", Nothing, new TreeDumperNode() {Visit(node.InConversion, Nothing)}), New TreeDumperNode("inPlaceholder", Nothing, new TreeDumperNode() {Visit(node.InPlaceholder, Nothing)}), New TreeDumperNode("outConversion", Nothing, new TreeDumperNode() {Visit(node.OutConversion, Nothing)}), New TreeDumperNode("outPlaceholder", Nothing, new TreeDumperNode() {Visit(node.OutPlaceholder, Nothing)}), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitLateBoundArgumentSupportingAssignmentWithCapture(node As BoundLateBoundArgumentSupportingAssignmentWithCapture, arg As Object) As TreeDumperNode Return New TreeDumperNode("lateBoundArgumentSupportingAssignmentWithCapture", Nothing, New TreeDumperNode() { New TreeDumperNode("originalArgument", Nothing, new TreeDumperNode() {Visit(node.OriginalArgument, Nothing)}), New TreeDumperNode("localSymbol", node.LocalSymbol, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitLabelStatement(node As BoundLabelStatement, arg As Object) As TreeDumperNode Return New TreeDumperNode("labelStatement", Nothing, New TreeDumperNode() { New TreeDumperNode("label", node.Label, Nothing) }) End Function Public Overrides Function VisitLabel(node As BoundLabel, arg As Object) As TreeDumperNode Return New TreeDumperNode("label", Nothing, New TreeDumperNode() { New TreeDumperNode("label", node.Label, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitGotoStatement(node As BoundGotoStatement, arg As Object) As TreeDumperNode Return New TreeDumperNode("gotoStatement", Nothing, New TreeDumperNode() { New TreeDumperNode("label", node.Label, Nothing), New TreeDumperNode("labelExpressionOpt", Nothing, new TreeDumperNode() {Visit(node.LabelExpressionOpt, Nothing)}) }) End Function Public Overrides Function VisitStatementList(node As BoundStatementList, arg As Object) As TreeDumperNode Return New TreeDumperNode("statementList", Nothing, New TreeDumperNode() { New TreeDumperNode("statements", Nothing, From x In node.Statements Select Visit(x, Nothing)) }) End Function Public Overrides Function VisitConditionalGoto(node As BoundConditionalGoto, arg As Object) As TreeDumperNode Return New TreeDumperNode("conditionalGoto", Nothing, New TreeDumperNode() { New TreeDumperNode("condition", Nothing, new TreeDumperNode() {Visit(node.Condition, Nothing)}), New TreeDumperNode("jumpIfTrue", node.JumpIfTrue, Nothing), New TreeDumperNode("label", node.Label, Nothing) }) End Function Public Overrides Function VisitWithStatement(node As BoundWithStatement, arg As Object) As TreeDumperNode Return New TreeDumperNode("withStatement", Nothing, New TreeDumperNode() { New TreeDumperNode("originalExpression", Nothing, new TreeDumperNode() {Visit(node.OriginalExpression, Nothing)}), New TreeDumperNode("body", Nothing, new TreeDumperNode() {Visit(node.Body, Nothing)}), New TreeDumperNode("binder", node.Binder, Nothing) }) End Function Public Overrides Function VisitUnboundLambda(node As UnboundLambda, arg As Object) As TreeDumperNode Return New TreeDumperNode("unboundLambda", Nothing, New TreeDumperNode() { New TreeDumperNode("binder", node.Binder, Nothing), New TreeDumperNode("flags", node.Flags, Nothing), New TreeDumperNode("parameters", node.Parameters, Nothing), New TreeDumperNode("returnType", node.ReturnType, Nothing), New TreeDumperNode("bindingCache", node.BindingCache, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitLambda(node As BoundLambda, arg As Object) As TreeDumperNode Return New TreeDumperNode("lambda", Nothing, New TreeDumperNode() { New TreeDumperNode("lambdaSymbol", node.LambdaSymbol, Nothing), New TreeDumperNode("body", Nothing, new TreeDumperNode() {Visit(node.Body, Nothing)}), New TreeDumperNode("diagnostics", node.Diagnostics, Nothing), New TreeDumperNode("lambdaBinderOpt", node.LambdaBinderOpt, Nothing), New TreeDumperNode("delegateRelaxation", node.DelegateRelaxation, Nothing), New TreeDumperNode("methodConversionKind", node.MethodConversionKind, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitQueryExpression(node As BoundQueryExpression, arg As Object) As TreeDumperNode Return New TreeDumperNode("queryExpression", Nothing, New TreeDumperNode() { New TreeDumperNode("lastOperator", Nothing, new TreeDumperNode() {Visit(node.LastOperator, Nothing)}), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitQuerySource(node As BoundQuerySource, arg As Object) As TreeDumperNode Return New TreeDumperNode("querySource", Nothing, New TreeDumperNode() { New TreeDumperNode("expression", Nothing, new TreeDumperNode() {Visit(node.Expression, Nothing)}), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitToQueryableCollectionConversion(node As BoundToQueryableCollectionConversion, arg As Object) As TreeDumperNode Return New TreeDumperNode("toQueryableCollectionConversion", Nothing, New TreeDumperNode() { New TreeDumperNode("conversionCall", Nothing, new TreeDumperNode() {Visit(node.ConversionCall, Nothing)}), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitQueryableSource(node As BoundQueryableSource, arg As Object) As TreeDumperNode Return New TreeDumperNode("queryableSource", Nothing, New TreeDumperNode() { New TreeDumperNode("source", Nothing, new TreeDumperNode() {Visit(node.Source, Nothing)}), New TreeDumperNode("rangeVariableOpt", node.RangeVariableOpt, Nothing), New TreeDumperNode("rangeVariables", node.RangeVariables, Nothing), New TreeDumperNode("compoundVariableType", node.CompoundVariableType, Nothing), New TreeDumperNode("binders", node.Binders, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitQueryClause(node As BoundQueryClause, arg As Object) As TreeDumperNode Return New TreeDumperNode("queryClause", Nothing, New TreeDumperNode() { New TreeDumperNode("underlyingExpression", Nothing, new TreeDumperNode() {Visit(node.UnderlyingExpression, Nothing)}), New TreeDumperNode("rangeVariables", node.RangeVariables, Nothing), New TreeDumperNode("compoundVariableType", node.CompoundVariableType, Nothing), New TreeDumperNode("binders", node.Binders, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitOrdering(node As BoundOrdering, arg As Object) As TreeDumperNode Return New TreeDumperNode("ordering", Nothing, New TreeDumperNode() { New TreeDumperNode("underlyingExpression", Nothing, new TreeDumperNode() {Visit(node.UnderlyingExpression, Nothing)}), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitQueryLambda(node As BoundQueryLambda, arg As Object) As TreeDumperNode Return New TreeDumperNode("queryLambda", Nothing, New TreeDumperNode() { New TreeDumperNode("lambdaSymbol", node.LambdaSymbol, Nothing), New TreeDumperNode("rangeVariables", node.RangeVariables, Nothing), New TreeDumperNode("expression", Nothing, new TreeDumperNode() {Visit(node.Expression, Nothing)}), New TreeDumperNode("exprIsOperandOfConditionalBranch", node.ExprIsOperandOfConditionalBranch, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitRangeVariableAssignment(node As BoundRangeVariableAssignment, arg As Object) As TreeDumperNode Return New TreeDumperNode("rangeVariableAssignment", Nothing, New TreeDumperNode() { New TreeDumperNode("rangeVariable", node.RangeVariable, Nothing), New TreeDumperNode("value", Nothing, new TreeDumperNode() {Visit(node.Value, Nothing)}), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitGroupTypeInferenceLambda(node As GroupTypeInferenceLambda, arg As Object) As TreeDumperNode Return New TreeDumperNode("groupTypeInferenceLambda", Nothing, New TreeDumperNode() { New TreeDumperNode("binder", node.Binder, Nothing), New TreeDumperNode("parameters", node.Parameters, Nothing), New TreeDumperNode("compilation", node.Compilation, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitAggregateClause(node As BoundAggregateClause, arg As Object) As TreeDumperNode Return New TreeDumperNode("aggregateClause", Nothing, New TreeDumperNode() { New TreeDumperNode("capturedGroupOpt", Nothing, new TreeDumperNode() {Visit(node.CapturedGroupOpt, Nothing)}), New TreeDumperNode("groupPlaceholderOpt", Nothing, new TreeDumperNode() {Visit(node.GroupPlaceholderOpt, Nothing)}), New TreeDumperNode("underlyingExpression", Nothing, new TreeDumperNode() {Visit(node.UnderlyingExpression, Nothing)}), New TreeDumperNode("rangeVariables", node.RangeVariables, Nothing), New TreeDumperNode("compoundVariableType", node.CompoundVariableType, Nothing), New TreeDumperNode("binders", node.Binders, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitGroupAggregation(node As BoundGroupAggregation, arg As Object) As TreeDumperNode Return New TreeDumperNode("groupAggregation", Nothing, New TreeDumperNode() { New TreeDumperNode("group", Nothing, new TreeDumperNode() {Visit(node.Group, Nothing)}), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitRangeVariable(node As BoundRangeVariable, arg As Object) As TreeDumperNode Return New TreeDumperNode("rangeVariable", Nothing, New TreeDumperNode() { New TreeDumperNode("rangeVariable", node.RangeVariable, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitAddHandlerStatement(node As BoundAddHandlerStatement, arg As Object) As TreeDumperNode Return New TreeDumperNode("addHandlerStatement", Nothing, New TreeDumperNode() { New TreeDumperNode("eventAccess", Nothing, new TreeDumperNode() {Visit(node.EventAccess, Nothing)}), New TreeDumperNode("handler", Nothing, new TreeDumperNode() {Visit(node.Handler, Nothing)}) }) End Function Public Overrides Function VisitRemoveHandlerStatement(node As BoundRemoveHandlerStatement, arg As Object) As TreeDumperNode Return New TreeDumperNode("removeHandlerStatement", Nothing, New TreeDumperNode() { New TreeDumperNode("eventAccess", Nothing, new TreeDumperNode() {Visit(node.EventAccess, Nothing)}), New TreeDumperNode("handler", Nothing, new TreeDumperNode() {Visit(node.Handler, Nothing)}) }) End Function Public Overrides Function VisitRaiseEventStatement(node As BoundRaiseEventStatement, arg As Object) As TreeDumperNode Return New TreeDumperNode("raiseEventStatement", Nothing, New TreeDumperNode() { New TreeDumperNode("eventSymbol", node.EventSymbol, Nothing), New TreeDumperNode("eventInvocation", Nothing, new TreeDumperNode() {Visit(node.EventInvocation, Nothing)}) }) End Function Public Overrides Function VisitUsingStatement(node As BoundUsingStatement, arg As Object) As TreeDumperNode Return New TreeDumperNode("usingStatement", Nothing, New TreeDumperNode() { New TreeDumperNode("resourceList", Nothing, From x In node.ResourceList Select Visit(x, Nothing)), New TreeDumperNode("resourceExpressionOpt", Nothing, new TreeDumperNode() {Visit(node.ResourceExpressionOpt, Nothing)}), New TreeDumperNode("body", Nothing, new TreeDumperNode() {Visit(node.Body, Nothing)}), New TreeDumperNode("usingInfo", node.UsingInfo, Nothing), New TreeDumperNode("locals", node.Locals, Nothing) }) End Function Public Overrides Function VisitSyncLockStatement(node As BoundSyncLockStatement, arg As Object) As TreeDumperNode Return New TreeDumperNode("syncLockStatement", Nothing, New TreeDumperNode() { New TreeDumperNode("lockExpression", Nothing, new TreeDumperNode() {Visit(node.LockExpression, Nothing)}), New TreeDumperNode("body", Nothing, new TreeDumperNode() {Visit(node.Body, Nothing)}) }) End Function Public Overrides Function VisitXmlName(node As BoundXmlName, arg As Object) As TreeDumperNode Return New TreeDumperNode("xmlName", Nothing, New TreeDumperNode() { New TreeDumperNode("xmlNamespace", Nothing, new TreeDumperNode() {Visit(node.XmlNamespace, Nothing)}), New TreeDumperNode("localName", Nothing, new TreeDumperNode() {Visit(node.LocalName, Nothing)}), New TreeDumperNode("objectCreation", Nothing, new TreeDumperNode() {Visit(node.ObjectCreation, Nothing)}), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitXmlNamespace(node As BoundXmlNamespace, arg As Object) As TreeDumperNode Return New TreeDumperNode("xmlNamespace", Nothing, New TreeDumperNode() { New TreeDumperNode("xmlNamespace", Nothing, new TreeDumperNode() {Visit(node.XmlNamespace, Nothing)}), New TreeDumperNode("objectCreation", Nothing, new TreeDumperNode() {Visit(node.ObjectCreation, Nothing)}), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitXmlDocument(node As BoundXmlDocument, arg As Object) As TreeDumperNode Return New TreeDumperNode("xmlDocument", Nothing, New TreeDumperNode() { New TreeDumperNode("declaration", Nothing, new TreeDumperNode() {Visit(node.Declaration, Nothing)}), New TreeDumperNode("childNodes", Nothing, From x In node.ChildNodes Select Visit(x, Nothing)), New TreeDumperNode("rewriterInfo", node.RewriterInfo, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitXmlDeclaration(node As BoundXmlDeclaration, arg As Object) As TreeDumperNode Return New TreeDumperNode("xmlDeclaration", Nothing, New TreeDumperNode() { New TreeDumperNode("version", Nothing, new TreeDumperNode() {Visit(node.Version, Nothing)}), New TreeDumperNode("encoding", Nothing, new TreeDumperNode() {Visit(node.Encoding, Nothing)}), New TreeDumperNode("standalone", Nothing, new TreeDumperNode() {Visit(node.Standalone, Nothing)}), New TreeDumperNode("objectCreation", Nothing, new TreeDumperNode() {Visit(node.ObjectCreation, Nothing)}), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitXmlProcessingInstruction(node As BoundXmlProcessingInstruction, arg As Object) As TreeDumperNode Return New TreeDumperNode("xmlProcessingInstruction", Nothing, New TreeDumperNode() { New TreeDumperNode("target", Nothing, new TreeDumperNode() {Visit(node.Target, Nothing)}), New TreeDumperNode("data", Nothing, new TreeDumperNode() {Visit(node.Data, Nothing)}), New TreeDumperNode("objectCreation", Nothing, new TreeDumperNode() {Visit(node.ObjectCreation, Nothing)}), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitXmlComment(node As BoundXmlComment, arg As Object) As TreeDumperNode Return New TreeDumperNode("xmlComment", Nothing, New TreeDumperNode() { New TreeDumperNode("value", Nothing, new TreeDumperNode() {Visit(node.Value, Nothing)}), New TreeDumperNode("objectCreation", Nothing, new TreeDumperNode() {Visit(node.ObjectCreation, Nothing)}), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitXmlAttribute(node As BoundXmlAttribute, arg As Object) As TreeDumperNode Return New TreeDumperNode("xmlAttribute", Nothing, New TreeDumperNode() { New TreeDumperNode("name", Nothing, new TreeDumperNode() {Visit(node.Name, Nothing)}), New TreeDumperNode("value", Nothing, new TreeDumperNode() {Visit(node.Value, Nothing)}), New TreeDumperNode("matchesImport", node.MatchesImport, Nothing), New TreeDumperNode("objectCreation", Nothing, new TreeDumperNode() {Visit(node.ObjectCreation, Nothing)}), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitXmlElement(node As BoundXmlElement, arg As Object) As TreeDumperNode Return New TreeDumperNode("xmlElement", Nothing, New TreeDumperNode() { New TreeDumperNode("argument", Nothing, new TreeDumperNode() {Visit(node.Argument, Nothing)}), New TreeDumperNode("childNodes", Nothing, From x In node.ChildNodes Select Visit(x, Nothing)), New TreeDumperNode("rewriterInfo", node.RewriterInfo, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitXmlMemberAccess(node As BoundXmlMemberAccess, arg As Object) As TreeDumperNode Return New TreeDumperNode("xmlMemberAccess", Nothing, New TreeDumperNode() { New TreeDumperNode("memberAccess", Nothing, new TreeDumperNode() {Visit(node.MemberAccess, Nothing)}), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitXmlEmbeddedExpression(node As BoundXmlEmbeddedExpression, arg As Object) As TreeDumperNode Return New TreeDumperNode("xmlEmbeddedExpression", Nothing, New TreeDumperNode() { New TreeDumperNode("expression", Nothing, new TreeDumperNode() {Visit(node.Expression, Nothing)}), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitXmlCData(node As BoundXmlCData, arg As Object) As TreeDumperNode Return New TreeDumperNode("xmlCData", Nothing, New TreeDumperNode() { New TreeDumperNode("value", Nothing, new TreeDumperNode() {Visit(node.Value, Nothing)}), New TreeDumperNode("objectCreation", Nothing, new TreeDumperNode() {Visit(node.ObjectCreation, Nothing)}), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitResumeStatement(node As BoundResumeStatement, arg As Object) As TreeDumperNode Return New TreeDumperNode("resumeStatement", Nothing, New TreeDumperNode() { New TreeDumperNode("resumeKind", node.ResumeKind, Nothing), New TreeDumperNode("labelOpt", node.LabelOpt, Nothing), New TreeDumperNode("labelExpressionOpt", Nothing, new TreeDumperNode() {Visit(node.LabelExpressionOpt, Nothing)}) }) End Function Public Overrides Function VisitOnErrorStatement(node As BoundOnErrorStatement, arg As Object) As TreeDumperNode Return New TreeDumperNode("onErrorStatement", Nothing, New TreeDumperNode() { New TreeDumperNode("onErrorKind", node.OnErrorKind, Nothing), New TreeDumperNode("labelOpt", node.LabelOpt, Nothing), New TreeDumperNode("labelExpressionOpt", Nothing, new TreeDumperNode() {Visit(node.LabelExpressionOpt, Nothing)}) }) End Function Public Overrides Function VisitUnstructuredExceptionHandlingStatement(node As BoundUnstructuredExceptionHandlingStatement, arg As Object) As TreeDumperNode Return New TreeDumperNode("unstructuredExceptionHandlingStatement", Nothing, New TreeDumperNode() { New TreeDumperNode("containsOnError", node.ContainsOnError, Nothing), New TreeDumperNode("containsResume", node.ContainsResume, Nothing), New TreeDumperNode("resumeWithoutLabelOpt", node.ResumeWithoutLabelOpt, Nothing), New TreeDumperNode("trackLineNumber", node.TrackLineNumber, Nothing), New TreeDumperNode("body", Nothing, new TreeDumperNode() {Visit(node.Body, Nothing)}) }) End Function Public Overrides Function VisitUnstructuredExceptionHandlingCatchFilter(node As BoundUnstructuredExceptionHandlingCatchFilter, arg As Object) As TreeDumperNode Return New TreeDumperNode("unstructuredExceptionHandlingCatchFilter", Nothing, New TreeDumperNode() { New TreeDumperNode("activeHandlerLocal", Nothing, new TreeDumperNode() {Visit(node.ActiveHandlerLocal, Nothing)}), New TreeDumperNode("resumeTargetLocal", Nothing, new TreeDumperNode() {Visit(node.ResumeTargetLocal, Nothing)}), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitUnstructuredExceptionOnErrorSwitch(node As BoundUnstructuredExceptionOnErrorSwitch, arg As Object) As TreeDumperNode Return New TreeDumperNode("unstructuredExceptionOnErrorSwitch", Nothing, New TreeDumperNode() { New TreeDumperNode("value", Nothing, new TreeDumperNode() {Visit(node.Value, Nothing)}), New TreeDumperNode("jumps", Nothing, From x In node.Jumps Select Visit(x, Nothing)) }) End Function Public Overrides Function VisitUnstructuredExceptionResumeSwitch(node As BoundUnstructuredExceptionResumeSwitch, arg As Object) As TreeDumperNode Return New TreeDumperNode("unstructuredExceptionResumeSwitch", Nothing, New TreeDumperNode() { New TreeDumperNode("resumeTargetTemporary", Nothing, new TreeDumperNode() {Visit(node.ResumeTargetTemporary, Nothing)}), New TreeDumperNode("resumeLabel", Nothing, new TreeDumperNode() {Visit(node.ResumeLabel, Nothing)}), New TreeDumperNode("resumeNextLabel", Nothing, new TreeDumperNode() {Visit(node.ResumeNextLabel, Nothing)}), New TreeDumperNode("jumps", Nothing, From x In node.Jumps Select Visit(x, Nothing)) }) End Function Public Overrides Function VisitAwaitOperator(node As BoundAwaitOperator, arg As Object) As TreeDumperNode Return New TreeDumperNode("awaitOperator", Nothing, New TreeDumperNode() { New TreeDumperNode("operand", Nothing, new TreeDumperNode() {Visit(node.Operand, Nothing)}), New TreeDumperNode("awaitableInstancePlaceholder", Nothing, new TreeDumperNode() {Visit(node.AwaitableInstancePlaceholder, Nothing)}), New TreeDumperNode("getAwaiter", Nothing, new TreeDumperNode() {Visit(node.GetAwaiter, Nothing)}), New TreeDumperNode("awaiterInstancePlaceholder", Nothing, new TreeDumperNode() {Visit(node.AwaiterInstancePlaceholder, Nothing)}), New TreeDumperNode("isCompleted", Nothing, new TreeDumperNode() {Visit(node.IsCompleted, Nothing)}), New TreeDumperNode("getResult", Nothing, new TreeDumperNode() {Visit(node.GetResult, Nothing)}), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitSpillSequence(node As BoundSpillSequence, arg As Object) As TreeDumperNode Return New TreeDumperNode("spillSequence", Nothing, New TreeDumperNode() { New TreeDumperNode("locals", node.Locals, Nothing), New TreeDumperNode("spillFields", node.SpillFields, Nothing), New TreeDumperNode("statements", Nothing, From x In node.Statements Select Visit(x, Nothing)), New TreeDumperNode("valueOpt", Nothing, new TreeDumperNode() {Visit(node.ValueOpt, Nothing)}), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitStopStatement(node As BoundStopStatement, arg As Object) As TreeDumperNode Return New TreeDumperNode("stopStatement", Nothing, Array.Empty(Of TreeDumperNode)()) End Function Public Overrides Function VisitEndStatement(node As BoundEndStatement, arg As Object) As TreeDumperNode Return New TreeDumperNode("endStatement", Nothing, Array.Empty(Of TreeDumperNode)()) End Function Public Overrides Function VisitMidResult(node As BoundMidResult, arg As Object) As TreeDumperNode Return New TreeDumperNode("midResult", Nothing, New TreeDumperNode() { New TreeDumperNode("original", Nothing, new TreeDumperNode() {Visit(node.Original, Nothing)}), New TreeDumperNode("start", Nothing, new TreeDumperNode() {Visit(node.Start, Nothing)}), New TreeDumperNode("lengthOpt", Nothing, new TreeDumperNode() {Visit(node.LengthOpt, Nothing)}), New TreeDumperNode("source", Nothing, new TreeDumperNode() {Visit(node.Source, Nothing)}), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitConditionalAccess(node As BoundConditionalAccess, arg As Object) As TreeDumperNode Return New TreeDumperNode("conditionalAccess", Nothing, New TreeDumperNode() { New TreeDumperNode("receiver", Nothing, new TreeDumperNode() {Visit(node.Receiver, Nothing)}), New TreeDumperNode("placeholder", Nothing, new TreeDumperNode() {Visit(node.Placeholder, Nothing)}), New TreeDumperNode("accessExpression", Nothing, new TreeDumperNode() {Visit(node.AccessExpression, Nothing)}), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitConditionalAccessReceiverPlaceholder(node As BoundConditionalAccessReceiverPlaceholder, arg As Object) As TreeDumperNode Return New TreeDumperNode("conditionalAccessReceiverPlaceholder", Nothing, New TreeDumperNode() { New TreeDumperNode("placeholderId", node.PlaceholderId, Nothing), New TreeDumperNode("capture", node.Capture, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitLoweredConditionalAccess(node As BoundLoweredConditionalAccess, arg As Object) As TreeDumperNode Return New TreeDumperNode("loweredConditionalAccess", Nothing, New TreeDumperNode() { New TreeDumperNode("receiver", Nothing, new TreeDumperNode() {Visit(node.Receiver, Nothing)}), New TreeDumperNode("captureReceiver", node.CaptureReceiver, Nothing), New TreeDumperNode("placeholderId", node.PlaceholderId, Nothing), New TreeDumperNode("whenNotNull", Nothing, new TreeDumperNode() {Visit(node.WhenNotNull, Nothing)}), New TreeDumperNode("whenNullOpt", Nothing, new TreeDumperNode() {Visit(node.WhenNullOpt, Nothing)}), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitComplexConditionalAccessReceiver(node As BoundComplexConditionalAccessReceiver, arg As Object) As TreeDumperNode Return New TreeDumperNode("complexConditionalAccessReceiver", Nothing, New TreeDumperNode() { New TreeDumperNode("valueTypeReceiver", Nothing, new TreeDumperNode() {Visit(node.ValueTypeReceiver, Nothing)}), New TreeDumperNode("referenceTypeReceiver", Nothing, new TreeDumperNode() {Visit(node.ReferenceTypeReceiver, Nothing)}), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitNameOfOperator(node As BoundNameOfOperator, arg As Object) As TreeDumperNode Return New TreeDumperNode("nameOfOperator", Nothing, New TreeDumperNode() { New TreeDumperNode("argument", Nothing, new TreeDumperNode() {Visit(node.Argument, Nothing)}), New TreeDumperNode("constantValueOpt", node.ConstantValueOpt, Nothing), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitTypeAsValueExpression(node As BoundTypeAsValueExpression, arg As Object) As TreeDumperNode Return New TreeDumperNode("typeAsValueExpression", Nothing, New TreeDumperNode() { New TreeDumperNode("expression", Nothing, new TreeDumperNode() {Visit(node.Expression, Nothing)}), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitInterpolatedStringExpression(node As BoundInterpolatedStringExpression, arg As Object) As TreeDumperNode Return New TreeDumperNode("interpolatedStringExpression", Nothing, New TreeDumperNode() { New TreeDumperNode("contents", Nothing, From x In node.Contents Select Visit(x, Nothing)), New TreeDumperNode("constructionOpt", Nothing, new TreeDumperNode() {Visit(node.ConstructionOpt, Nothing)}), New TreeDumperNode("type", node.Type, Nothing) }) End Function Public Overrides Function VisitInterpolation(node As BoundInterpolation, arg As Object) As TreeDumperNode Return New TreeDumperNode("interpolation", Nothing, New TreeDumperNode() { New TreeDumperNode("expression", Nothing, new TreeDumperNode() {Visit(node.Expression, Nothing)}), New TreeDumperNode("alignmentOpt", Nothing, new TreeDumperNode() {Visit(node.AlignmentOpt, Nothing)}), New TreeDumperNode("formatStringOpt", Nothing, new TreeDumperNode() {Visit(node.FormatStringOpt, Nothing)}) }) End Function End Class End Namespace