// Copyright (c) 2010-2013 AlphaSierraPapa for the SharpDevelop Team // // Permission is hereby granted, free of charge, to any person obtaining a copy of this // software and associated documentation files (the "Software"), to deal in the Software // without restriction, including without limitation the rights to use, copy, modify, merge, // publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons // to whom the Software is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in all copies or // substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, // INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE // FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. namespace ICSharpCode.Decompiler.CSharp.Syntax { /// /// AST visitor. /// public interface IAstVisitor { void VisitAnonymousMethodExpression(AnonymousMethodExpression anonymousMethodExpression); void VisitAnonymousTypeCreateExpression(AnonymousTypeCreateExpression anonymousTypeCreateExpression); void VisitArrayCreateExpression(ArrayCreateExpression arrayCreateExpression); void VisitArrayInitializerExpression(ArrayInitializerExpression arrayInitializerExpression); void VisitAsExpression(AsExpression asExpression); void VisitAssignmentExpression(AssignmentExpression assignmentExpression); void VisitBaseReferenceExpression(BaseReferenceExpression baseReferenceExpression); void VisitBinaryOperatorExpression(BinaryOperatorExpression binaryOperatorExpression); void VisitCastExpression(CastExpression castExpression); void VisitCheckedExpression(CheckedExpression checkedExpression); void VisitConditionalExpression(ConditionalExpression conditionalExpression); void VisitDeclarationExpression(DeclarationExpression declarationExpression); void VisitRecursivePatternExpression(RecursivePatternExpression recursivePatternExpression); void VisitDefaultValueExpression(DefaultValueExpression defaultValueExpression); void VisitDirectionExpression(DirectionExpression directionExpression); void VisitIdentifierExpression(IdentifierExpression identifierExpression); void VisitIndexerExpression(IndexerExpression indexerExpression); void VisitInterpolatedStringExpression(InterpolatedStringExpression interpolatedStringExpression); void VisitInvocationExpression(InvocationExpression invocationExpression); void VisitIsExpression(IsExpression isExpression); void VisitLambdaExpression(LambdaExpression lambdaExpression); void VisitMemberReferenceExpression(MemberReferenceExpression memberReferenceExpression); void VisitNamedArgumentExpression(NamedArgumentExpression namedArgumentExpression); void VisitNamedExpression(NamedExpression namedExpression); void VisitNullReferenceExpression(NullReferenceExpression nullReferenceExpression); void VisitObjectCreateExpression(ObjectCreateExpression objectCreateExpression); void VisitOutVarDeclarationExpression(OutVarDeclarationExpression outVarDeclarationExpression); void VisitParenthesizedExpression(ParenthesizedExpression parenthesizedExpression); void VisitPointerReferenceExpression(PointerReferenceExpression pointerReferenceExpression); void VisitPrimitiveExpression(PrimitiveExpression primitiveExpression); void VisitSizeOfExpression(SizeOfExpression sizeOfExpression); void VisitStackAllocExpression(StackAllocExpression stackAllocExpression); void VisitThisReferenceExpression(ThisReferenceExpression thisReferenceExpression); void VisitThrowExpression(ThrowExpression throwExpression); void VisitTupleExpression(TupleExpression tupleExpression); void VisitTypeOfExpression(TypeOfExpression typeOfExpression); void VisitTypeReferenceExpression(TypeReferenceExpression typeReferenceExpression); void VisitUnaryOperatorExpression(UnaryOperatorExpression unaryOperatorExpression); void VisitUncheckedExpression(UncheckedExpression uncheckedExpression); void VisitUndocumentedExpression(UndocumentedExpression undocumentedExpression); void VisitWithInitializerExpression(WithInitializerExpression withInitializerExpression); void VisitQueryExpression(QueryExpression queryExpression); void VisitQueryContinuationClause(QueryContinuationClause queryContinuationClause); void VisitQueryFromClause(QueryFromClause queryFromClause); void VisitQueryLetClause(QueryLetClause queryLetClause); void VisitQueryWhereClause(QueryWhereClause queryWhereClause); void VisitQueryJoinClause(QueryJoinClause queryJoinClause); void VisitQueryOrderClause(QueryOrderClause queryOrderClause); void VisitQueryOrdering(QueryOrdering queryOrdering); void VisitQuerySelectClause(QuerySelectClause querySelectClause); void VisitQueryGroupClause(QueryGroupClause queryGroupClause); void VisitAttribute(Attribute attribute); void VisitAttributeSection(AttributeSection attributeSection); void VisitDelegateDeclaration(DelegateDeclaration delegateDeclaration); void VisitNamespaceDeclaration(NamespaceDeclaration namespaceDeclaration); void VisitTypeDeclaration(TypeDeclaration typeDeclaration); void VisitUsingAliasDeclaration(UsingAliasDeclaration usingAliasDeclaration); void VisitUsingDeclaration(UsingDeclaration usingDeclaration); void VisitExternAliasDeclaration(ExternAliasDeclaration externAliasDeclaration); void VisitBlockStatement(BlockStatement blockStatement); void VisitBreakStatement(BreakStatement breakStatement); void VisitCheckedStatement(CheckedStatement checkedStatement); void VisitContinueStatement(ContinueStatement continueStatement); void VisitDoWhileStatement(DoWhileStatement doWhileStatement); void VisitEmptyStatement(EmptyStatement emptyStatement); void VisitExpressionStatement(ExpressionStatement expressionStatement); void VisitFixedStatement(FixedStatement fixedStatement); void VisitForeachStatement(ForeachStatement foreachStatement); void VisitForStatement(ForStatement forStatement); void VisitGotoCaseStatement(GotoCaseStatement gotoCaseStatement); void VisitGotoDefaultStatement(GotoDefaultStatement gotoDefaultStatement); void VisitGotoStatement(GotoStatement gotoStatement); void VisitIfElseStatement(IfElseStatement ifElseStatement); void VisitLabelStatement(LabelStatement labelStatement); void VisitLockStatement(LockStatement lockStatement); void VisitReturnStatement(ReturnStatement returnStatement); void VisitSwitchStatement(SwitchStatement switchStatement); void VisitSwitchSection(SwitchSection switchSection); void VisitCaseLabel(CaseLabel caseLabel); void VisitSwitchExpression(SwitchExpression switchExpression); void VisitSwitchExpressionSection(SwitchExpressionSection switchExpressionSection); void VisitThrowStatement(ThrowStatement throwStatement); void VisitTryCatchStatement(TryCatchStatement tryCatchStatement); void VisitCatchClause(CatchClause catchClause); void VisitUncheckedStatement(UncheckedStatement uncheckedStatement); void VisitUnsafeStatement(UnsafeStatement unsafeStatement); void VisitUsingStatement(UsingStatement usingStatement); void VisitVariableDeclarationStatement(VariableDeclarationStatement variableDeclarationStatement); void VisitLocalFunctionDeclarationStatement(LocalFunctionDeclarationStatement localFunctionDeclarationStatement); void VisitWhileStatement(WhileStatement whileStatement); void VisitYieldBreakStatement(YieldBreakStatement yieldBreakStatement); void VisitYieldReturnStatement(YieldReturnStatement yieldReturnStatement); void VisitAccessor(Accessor accessor); void VisitConstructorDeclaration(ConstructorDeclaration constructorDeclaration); void VisitConstructorInitializer(ConstructorInitializer constructorInitializer); void VisitDestructorDeclaration(DestructorDeclaration destructorDeclaration); void VisitEnumMemberDeclaration(EnumMemberDeclaration enumMemberDeclaration); void VisitEventDeclaration(EventDeclaration eventDeclaration); void VisitCustomEventDeclaration(CustomEventDeclaration customEventDeclaration); void VisitFieldDeclaration(FieldDeclaration fieldDeclaration); void VisitIndexerDeclaration(IndexerDeclaration indexerDeclaration); void VisitMethodDeclaration(MethodDeclaration methodDeclaration); void VisitOperatorDeclaration(OperatorDeclaration operatorDeclaration); void VisitParameterDeclaration(ParameterDeclaration parameterDeclaration); void VisitPropertyDeclaration(PropertyDeclaration propertyDeclaration); void VisitVariableInitializer(VariableInitializer variableInitializer); void VisitFixedFieldDeclaration(FixedFieldDeclaration fixedFieldDeclaration); void VisitFixedVariableInitializer(FixedVariableInitializer fixedVariableInitializer); void VisitSyntaxTree(SyntaxTree syntaxTree); void VisitSimpleType(SimpleType simpleType); void VisitMemberType(MemberType memberType); void VisitTupleType(TupleAstType tupleType); void VisitTupleTypeElement(TupleTypeElement tupleTypeElement); void VisitFunctionPointerType(FunctionPointerAstType functionPointerType); void VisitInvocationType(InvocationAstType invocationType); void VisitComposedType(ComposedType composedType); void VisitArraySpecifier(ArraySpecifier arraySpecifier); void VisitPrimitiveType(PrimitiveType primitiveType); void VisitComment(Comment comment); void VisitPreProcessorDirective(PreProcessorDirective preProcessorDirective); void VisitDocumentationReference(DocumentationReference documentationReference); void VisitTypeParameterDeclaration(TypeParameterDeclaration typeParameterDeclaration); void VisitConstraint(Constraint constraint); void VisitCSharpTokenNode(CSharpTokenNode cSharpTokenNode); void VisitIdentifier(Identifier identifier); void VisitInterpolation(Interpolation interpolation); void VisitInterpolatedStringText(InterpolatedStringText interpolatedStringText); void VisitSingleVariableDesignation(SingleVariableDesignation singleVariableDesignation); void VisitParenthesizedVariableDesignation(ParenthesizedVariableDesignation parenthesizedVariableDesignation); void VisitNullNode(AstNode nullNode); void VisitErrorNode(AstNode errorNode); void VisitPatternPlaceholder(AstNode placeholder, PatternMatching.Pattern pattern); } /// /// AST visitor. /// public interface IAstVisitor { S? VisitAnonymousMethodExpression(AnonymousMethodExpression anonymousMethodExpression); S? VisitAnonymousTypeCreateExpression(AnonymousTypeCreateExpression anonymousTypeCreateExpression); S? VisitArrayCreateExpression(ArrayCreateExpression arrayCreateExpression); S? VisitArrayInitializerExpression(ArrayInitializerExpression arrayInitializerExpression); S? VisitAsExpression(AsExpression asExpression); S? VisitAssignmentExpression(AssignmentExpression assignmentExpression); S? VisitBaseReferenceExpression(BaseReferenceExpression baseReferenceExpression); S? VisitBinaryOperatorExpression(BinaryOperatorExpression binaryOperatorExpression); S? VisitCastExpression(CastExpression castExpression); S? VisitCheckedExpression(CheckedExpression checkedExpression); S? VisitConditionalExpression(ConditionalExpression conditionalExpression); S? VisitDeclarationExpression(DeclarationExpression declarationExpression); S? VisitRecursivePatternExpression(RecursivePatternExpression recursivePatternExpression); S? VisitDefaultValueExpression(DefaultValueExpression defaultValueExpression); S? VisitDirectionExpression(DirectionExpression directionExpression); S? VisitIdentifierExpression(IdentifierExpression identifierExpression); S? VisitIndexerExpression(IndexerExpression indexerExpression); S? VisitInterpolatedStringExpression(InterpolatedStringExpression interpolatedStringExpression); S? VisitInvocationExpression(InvocationExpression invocationExpression); S? VisitIsExpression(IsExpression isExpression); S? VisitLambdaExpression(LambdaExpression lambdaExpression); S? VisitMemberReferenceExpression(MemberReferenceExpression memberReferenceExpression); S? VisitNamedArgumentExpression(NamedArgumentExpression namedArgumentExpression); S? VisitNamedExpression(NamedExpression namedExpression); S? VisitNullReferenceExpression(NullReferenceExpression nullReferenceExpression); S? VisitObjectCreateExpression(ObjectCreateExpression objectCreateExpression); S? VisitOutVarDeclarationExpression(OutVarDeclarationExpression outVarDeclarationExpression); S? VisitParenthesizedExpression(ParenthesizedExpression parenthesizedExpression); S? VisitPointerReferenceExpression(PointerReferenceExpression pointerReferenceExpression); S? VisitPrimitiveExpression(PrimitiveExpression primitiveExpression); S? VisitSizeOfExpression(SizeOfExpression sizeOfExpression); S? VisitStackAllocExpression(StackAllocExpression stackAllocExpression); S? VisitThisReferenceExpression(ThisReferenceExpression thisReferenceExpression); S? VisitThrowExpression(ThrowExpression throwExpression); S? VisitTupleExpression(TupleExpression tupleExpression); S? VisitTypeOfExpression(TypeOfExpression typeOfExpression); S? VisitTypeReferenceExpression(TypeReferenceExpression typeReferenceExpression); S? VisitUnaryOperatorExpression(UnaryOperatorExpression unaryOperatorExpression); S? VisitUncheckedExpression(UncheckedExpression uncheckedExpression); S? VisitUndocumentedExpression(UndocumentedExpression undocumentedExpression); S? VisitWithInitializerExpression(WithInitializerExpression withInitializerExpression); S? VisitQueryExpression(QueryExpression queryExpression); S? VisitQueryContinuationClause(QueryContinuationClause queryContinuationClause); S? VisitQueryFromClause(QueryFromClause queryFromClause); S? VisitQueryLetClause(QueryLetClause queryLetClause); S? VisitQueryWhereClause(QueryWhereClause queryWhereClause); S? VisitQueryJoinClause(QueryJoinClause queryJoinClause); S? VisitQueryOrderClause(QueryOrderClause queryOrderClause); S? VisitQueryOrdering(QueryOrdering queryOrdering); S? VisitQuerySelectClause(QuerySelectClause querySelectClause); S? VisitQueryGroupClause(QueryGroupClause queryGroupClause); S? VisitAttribute(Attribute attribute); S? VisitAttributeSection(AttributeSection attributeSection); S? VisitDelegateDeclaration(DelegateDeclaration delegateDeclaration); S? VisitNamespaceDeclaration(NamespaceDeclaration namespaceDeclaration); S? VisitTypeDeclaration(TypeDeclaration typeDeclaration); S? VisitUsingAliasDeclaration(UsingAliasDeclaration usingAliasDeclaration); S? VisitUsingDeclaration(UsingDeclaration usingDeclaration); S? VisitExternAliasDeclaration(ExternAliasDeclaration externAliasDeclaration); S? VisitBlockStatement(BlockStatement blockStatement); S? VisitBreakStatement(BreakStatement breakStatement); S? VisitCheckedStatement(CheckedStatement checkedStatement); S? VisitContinueStatement(ContinueStatement continueStatement); S? VisitDoWhileStatement(DoWhileStatement doWhileStatement); S? VisitEmptyStatement(EmptyStatement emptyStatement); S? VisitExpressionStatement(ExpressionStatement expressionStatement); S? VisitFixedStatement(FixedStatement fixedStatement); S? VisitForeachStatement(ForeachStatement foreachStatement); S? VisitForStatement(ForStatement forStatement); S? VisitGotoCaseStatement(GotoCaseStatement gotoCaseStatement); S? VisitGotoDefaultStatement(GotoDefaultStatement gotoDefaultStatement); S? VisitGotoStatement(GotoStatement gotoStatement); S? VisitIfElseStatement(IfElseStatement ifElseStatement); S? VisitLabelStatement(LabelStatement labelStatement); S? VisitLockStatement(LockStatement lockStatement); S? VisitReturnStatement(ReturnStatement returnStatement); S? VisitSwitchStatement(SwitchStatement switchStatement); S? VisitSwitchSection(SwitchSection switchSection); S? VisitCaseLabel(CaseLabel caseLabel); S? VisitSwitchExpression(SwitchExpression switchExpression); S? VisitSwitchExpressionSection(SwitchExpressionSection switchExpressionSection); S? VisitThrowStatement(ThrowStatement throwStatement); S? VisitTryCatchStatement(TryCatchStatement tryCatchStatement); S? VisitCatchClause(CatchClause catchClause); S? VisitUncheckedStatement(UncheckedStatement uncheckedStatement); S? VisitUnsafeStatement(UnsafeStatement unsafeStatement); S? VisitUsingStatement(UsingStatement usingStatement); S? VisitVariableDeclarationStatement(VariableDeclarationStatement variableDeclarationStatement); S? VisitLocalFunctionDeclarationStatement(LocalFunctionDeclarationStatement localFunctionDeclarationStatement); S? VisitWhileStatement(WhileStatement whileStatement); S? VisitYieldBreakStatement(YieldBreakStatement yieldBreakStatement); S? VisitYieldReturnStatement(YieldReturnStatement yieldReturnStatement); S? VisitAccessor(Accessor accessor); S? VisitConstructorDeclaration(ConstructorDeclaration constructorDeclaration); S? VisitConstructorInitializer(ConstructorInitializer constructorInitializer); S? VisitDestructorDeclaration(DestructorDeclaration destructorDeclaration); S? VisitEnumMemberDeclaration(EnumMemberDeclaration enumMemberDeclaration); S? VisitEventDeclaration(EventDeclaration eventDeclaration); S? VisitCustomEventDeclaration(CustomEventDeclaration customEventDeclaration); S? VisitFieldDeclaration(FieldDeclaration fieldDeclaration); S? VisitIndexerDeclaration(IndexerDeclaration indexerDeclaration); S? VisitMethodDeclaration(MethodDeclaration methodDeclaration); S? VisitOperatorDeclaration(OperatorDeclaration operatorDeclaration); S? VisitParameterDeclaration(ParameterDeclaration parameterDeclaration); S? VisitPropertyDeclaration(PropertyDeclaration propertyDeclaration); S? VisitVariableInitializer(VariableInitializer variableInitializer); S? VisitFixedFieldDeclaration(FixedFieldDeclaration fixedFieldDeclaration); S? VisitFixedVariableInitializer(FixedVariableInitializer fixedVariableInitializer); S? VisitSyntaxTree(SyntaxTree syntaxTree); S? VisitSimpleType(SimpleType simpleType); S? VisitMemberType(MemberType memberType); S? VisitTupleType(TupleAstType tupleType); S? VisitTupleTypeElement(TupleTypeElement tupleTypeElement); S? VisitFunctionPointerType(FunctionPointerAstType functionPointerType); S? VisitInvocationType(InvocationAstType invocationType); S? VisitComposedType(ComposedType composedType); S? VisitArraySpecifier(ArraySpecifier arraySpecifier); S? VisitPrimitiveType(PrimitiveType primitiveType); S? VisitComment(Comment comment); S? VisitPreProcessorDirective(PreProcessorDirective preProcessorDirective); S? VisitDocumentationReference(DocumentationReference documentationReference); S? VisitTypeParameterDeclaration(TypeParameterDeclaration typeParameterDeclaration); S? VisitConstraint(Constraint constraint); S? VisitCSharpTokenNode(CSharpTokenNode cSharpTokenNode); S? VisitIdentifier(Identifier identifier); S? VisitInterpolation(Interpolation interpolation); S? VisitInterpolatedStringText(InterpolatedStringText interpolatedStringText); S? VisitSingleVariableDesignation(SingleVariableDesignation singleVariableDesignation); S? VisitParenthesizedVariableDesignation(ParenthesizedVariableDesignation parenthesizedVariableDesignation); S? VisitNullNode(AstNode nullNode); S? VisitErrorNode(AstNode errorNode); S? VisitPatternPlaceholder(AstNode placeholder, PatternMatching.Pattern pattern); } /// /// AST visitor. /// public interface IAstVisitor { S? VisitAnonymousMethodExpression(AnonymousMethodExpression anonymousMethodExpression, T data); S? VisitAnonymousTypeCreateExpression(AnonymousTypeCreateExpression anonymousTypeCreateExpression, T data); S? VisitArrayCreateExpression(ArrayCreateExpression arrayCreateExpression, T data); S? VisitArrayInitializerExpression(ArrayInitializerExpression arrayInitializerExpression, T data); S? VisitAsExpression(AsExpression asExpression, T data); S? VisitAssignmentExpression(AssignmentExpression assignmentExpression, T data); S? VisitBaseReferenceExpression(BaseReferenceExpression baseReferenceExpression, T data); S? VisitBinaryOperatorExpression(BinaryOperatorExpression binaryOperatorExpression, T data); S? VisitCastExpression(CastExpression castExpression, T data); S? VisitCheckedExpression(CheckedExpression checkedExpression, T data); S? VisitConditionalExpression(ConditionalExpression conditionalExpression, T data); S? VisitDeclarationExpression(DeclarationExpression declarationExpression, T data); S? VisitRecursivePatternExpression(RecursivePatternExpression recursivePatternExpression, T data); S? VisitDefaultValueExpression(DefaultValueExpression defaultValueExpression, T data); S? VisitDirectionExpression(DirectionExpression directionExpression, T data); S? VisitIdentifierExpression(IdentifierExpression identifierExpression, T data); S? VisitIndexerExpression(IndexerExpression indexerExpression, T data); S? VisitInterpolatedStringExpression(InterpolatedStringExpression interpolatedStringExpression, T data); S? VisitInvocationExpression(InvocationExpression invocationExpression, T data); S? VisitIsExpression(IsExpression isExpression, T data); S? VisitLambdaExpression(LambdaExpression lambdaExpression, T data); S? VisitMemberReferenceExpression(MemberReferenceExpression memberReferenceExpression, T data); S? VisitNamedArgumentExpression(NamedArgumentExpression namedArgumentExpression, T data); S? VisitNamedExpression(NamedExpression namedExpression, T data); S? VisitNullReferenceExpression(NullReferenceExpression nullReferenceExpression, T data); S? VisitObjectCreateExpression(ObjectCreateExpression objectCreateExpression, T data); S? VisitOutVarDeclarationExpression(OutVarDeclarationExpression outVarDeclarationExpression, T data); S? VisitParenthesizedExpression(ParenthesizedExpression parenthesizedExpression, T data); S? VisitPointerReferenceExpression(PointerReferenceExpression pointerReferenceExpression, T data); S? VisitPrimitiveExpression(PrimitiveExpression primitiveExpression, T data); S? VisitSizeOfExpression(SizeOfExpression sizeOfExpression, T data); S? VisitStackAllocExpression(StackAllocExpression stackAllocExpression, T data); S? VisitThisReferenceExpression(ThisReferenceExpression thisReferenceExpression, T data); S? VisitThrowExpression(ThrowExpression throwExpression, T data); S? VisitTupleExpression(TupleExpression tupleExpression, T data); S? VisitTypeOfExpression(TypeOfExpression typeOfExpression, T data); S? VisitTypeReferenceExpression(TypeReferenceExpression typeReferenceExpression, T data); S? VisitUnaryOperatorExpression(UnaryOperatorExpression unaryOperatorExpression, T data); S? VisitUncheckedExpression(UncheckedExpression uncheckedExpression, T data); S? VisitUndocumentedExpression(UndocumentedExpression undocumentedExpression, T data); S? VisitWithInitializerExpression(WithInitializerExpression withInitializerExpression, T data); S? VisitQueryExpression(QueryExpression queryExpression, T data); S? VisitQueryContinuationClause(QueryContinuationClause queryContinuationClause, T data); S? VisitQueryFromClause(QueryFromClause queryFromClause, T data); S? VisitQueryLetClause(QueryLetClause queryLetClause, T data); S? VisitQueryWhereClause(QueryWhereClause queryWhereClause, T data); S? VisitQueryJoinClause(QueryJoinClause queryJoinClause, T data); S? VisitQueryOrderClause(QueryOrderClause queryOrderClause, T data); S? VisitQueryOrdering(QueryOrdering queryOrdering, T data); S? VisitQuerySelectClause(QuerySelectClause querySelectClause, T data); S? VisitQueryGroupClause(QueryGroupClause queryGroupClause, T data); S? VisitAttribute(Attribute attribute, T data); S? VisitAttributeSection(AttributeSection attributeSection, T data); S? VisitDelegateDeclaration(DelegateDeclaration delegateDeclaration, T data); S? VisitNamespaceDeclaration(NamespaceDeclaration namespaceDeclaration, T data); S? VisitTypeDeclaration(TypeDeclaration typeDeclaration, T data); S? VisitUsingAliasDeclaration(UsingAliasDeclaration usingAliasDeclaration, T data); S? VisitUsingDeclaration(UsingDeclaration usingDeclaration, T data); S? VisitExternAliasDeclaration(ExternAliasDeclaration externAliasDeclaration, T data); S? VisitBlockStatement(BlockStatement blockStatement, T data); S? VisitBreakStatement(BreakStatement breakStatement, T data); S? VisitCheckedStatement(CheckedStatement checkedStatement, T data); S? VisitContinueStatement(ContinueStatement continueStatement, T data); S? VisitDoWhileStatement(DoWhileStatement doWhileStatement, T data); S? VisitEmptyStatement(EmptyStatement emptyStatement, T data); S? VisitExpressionStatement(ExpressionStatement expressionStatement, T data); S? VisitFixedStatement(FixedStatement fixedStatement, T data); S? VisitForeachStatement(ForeachStatement foreachStatement, T data); S? VisitForStatement(ForStatement forStatement, T data); S? VisitGotoCaseStatement(GotoCaseStatement gotoCaseStatement, T data); S? VisitGotoDefaultStatement(GotoDefaultStatement gotoDefaultStatement, T data); S? VisitGotoStatement(GotoStatement gotoStatement, T data); S? VisitIfElseStatement(IfElseStatement ifElseStatement, T data); S? VisitLabelStatement(LabelStatement labelStatement, T data); S? VisitLockStatement(LockStatement lockStatement, T data); S? VisitReturnStatement(ReturnStatement returnStatement, T data); S? VisitSwitchStatement(SwitchStatement switchStatement, T data); S? VisitSwitchSection(SwitchSection switchSection, T data); S? VisitCaseLabel(CaseLabel caseLabel, T data); S? VisitSwitchExpression(SwitchExpression switchExpression, T data); S? VisitSwitchExpressionSection(SwitchExpressionSection switchExpressionSection, T data); S? VisitThrowStatement(ThrowStatement throwStatement, T data); S? VisitTryCatchStatement(TryCatchStatement tryCatchStatement, T data); S? VisitCatchClause(CatchClause catchClause, T data); S? VisitUncheckedStatement(UncheckedStatement uncheckedStatement, T data); S? VisitUnsafeStatement(UnsafeStatement unsafeStatement, T data); S? VisitUsingStatement(UsingStatement usingStatement, T data); S? VisitVariableDeclarationStatement(VariableDeclarationStatement variableDeclarationStatement, T data); S? VisitLocalFunctionDeclarationStatement(LocalFunctionDeclarationStatement localFunctionDeclarationStatement, T data); S? VisitWhileStatement(WhileStatement whileStatement, T data); S? VisitYieldBreakStatement(YieldBreakStatement yieldBreakStatement, T data); S? VisitYieldReturnStatement(YieldReturnStatement yieldReturnStatement, T data); S? VisitAccessor(Accessor accessor, T data); S? VisitConstructorDeclaration(ConstructorDeclaration constructorDeclaration, T data); S? VisitConstructorInitializer(ConstructorInitializer constructorInitializer, T data); S? VisitDestructorDeclaration(DestructorDeclaration destructorDeclaration, T data); S? VisitEnumMemberDeclaration(EnumMemberDeclaration enumMemberDeclaration, T data); S? VisitEventDeclaration(EventDeclaration eventDeclaration, T data); S? VisitCustomEventDeclaration(CustomEventDeclaration customEventDeclaration, T data); S? VisitFieldDeclaration(FieldDeclaration fieldDeclaration, T data); S? VisitIndexerDeclaration(IndexerDeclaration indexerDeclaration, T data); S? VisitMethodDeclaration(MethodDeclaration methodDeclaration, T data); S? VisitOperatorDeclaration(OperatorDeclaration operatorDeclaration, T data); S? VisitParameterDeclaration(ParameterDeclaration parameterDeclaration, T data); S? VisitPropertyDeclaration(PropertyDeclaration propertyDeclaration, T data); S? VisitVariableInitializer(VariableInitializer variableInitializer, T data); S? VisitFixedFieldDeclaration(FixedFieldDeclaration fixedFieldDeclaration, T data); S? VisitFixedVariableInitializer(FixedVariableInitializer fixedVariableInitializer, T data); S? VisitSyntaxTree(SyntaxTree syntaxTree, T data); S? VisitSimpleType(SimpleType simpleType, T data); S? VisitMemberType(MemberType memberType, T data); S? VisitTupleType(TupleAstType tupleType, T data); S? VisitTupleTypeElement(TupleTypeElement tupleTypeElement, T data); S? VisitFunctionPointerType(FunctionPointerAstType functionPointerType, T data); S? VisitInvocationType(InvocationAstType invocationType, T data); S? VisitComposedType(ComposedType composedType, T data); S? VisitArraySpecifier(ArraySpecifier arraySpecifier, T data); S? VisitPrimitiveType(PrimitiveType primitiveType, T data); S? VisitComment(Comment comment, T data); S? VisitPreProcessorDirective(PreProcessorDirective preProcessorDirective, T data); S? VisitDocumentationReference(DocumentationReference documentationReference, T data); S? VisitTypeParameterDeclaration(TypeParameterDeclaration typeParameterDeclaration, T data); S? VisitConstraint(Constraint constraint, T data); S? VisitCSharpTokenNode(CSharpTokenNode cSharpTokenNode, T data); S? VisitIdentifier(Identifier identifier, T data); S? VisitInterpolation(Interpolation interpolation, T data); S? VisitInterpolatedStringText(InterpolatedStringText interpolatedStringText, T data); S? VisitSingleVariableDesignation(SingleVariableDesignation singleVariableDesignation, T data); S? VisitParenthesizedVariableDesignation(ParenthesizedVariableDesignation parenthesizedVariableDesignation, T data); S? VisitNullNode(AstNode nullNode, T data); S? VisitErrorNode(AstNode errorNode, T data); S? VisitPatternPlaceholder(AstNode placeholder, PatternMatching.Pattern pattern, T data); } }