mirror of https://github.com/icsharpcode/ILSpy.git
				
				
			
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							2061 lines
						
					
					
						
							57 KiB
						
					
					
				
			
		
		
	
	
							2061 lines
						
					
					
						
							57 KiB
						
					
					
				//  | 
						|
// IAstVisitor.cs | 
						|
// | 
						|
// Author: | 
						|
//       Mike Krüger <mkrueger@novell.com> | 
						|
//  | 
						|
// Copyright (c) 2010 Novell, Inc (http://www.novell.com) | 
						|
//  | 
						|
// 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 | 
						|
{ | 
						|
	/// <summary> | 
						|
	/// AST visitor with a default implementation that visits all node depth-first. | 
						|
	/// </summary> | 
						|
	public abstract class DepthFirstAstVisitor : IAstVisitor | 
						|
	{ | 
						|
		protected virtual void VisitChildren(AstNode node) | 
						|
		{ | 
						|
			AstNode next; | 
						|
			for (var child = node.FirstChild; child != null; child = next) | 
						|
			{ | 
						|
				// Store next to allow the loop to continue | 
						|
				// if the visitor removes/replaces child. | 
						|
				next = child.NextSibling; | 
						|
				child.AcceptVisitor(this); | 
						|
			} | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitNullNode(AstNode nullNode) | 
						|
		{ | 
						|
			// Should we call VisitChildren here? | 
						|
			// We usually want to ignore null nodes. | 
						|
			// Older NR versions (before VisitNullNode was introduced) didn't call VisitChildren() with null nodes; | 
						|
			// so changing this might break VisitChildren() overrides that expect the node to be part of the AST. | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitSyntaxTree(SyntaxTree syntaxTree) | 
						|
		{ | 
						|
			VisitChildren(syntaxTree); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitComment(Comment comment) | 
						|
		{ | 
						|
			VisitChildren(comment); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitDocumentationReference(DocumentationReference documentationReference) | 
						|
		{ | 
						|
			VisitChildren(documentationReference); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitPreProcessorDirective(PreProcessorDirective preProcessorDirective) | 
						|
		{ | 
						|
			VisitChildren(preProcessorDirective); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitIdentifier(Identifier identifier) | 
						|
		{ | 
						|
			VisitChildren(identifier); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitCSharpTokenNode(CSharpTokenNode token) | 
						|
		{ | 
						|
			VisitChildren(token); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitPrimitiveType(PrimitiveType primitiveType) | 
						|
		{ | 
						|
			VisitChildren(primitiveType); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitComposedType(ComposedType composedType) | 
						|
		{ | 
						|
			VisitChildren(composedType); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitSimpleType(SimpleType simpleType) | 
						|
		{ | 
						|
			VisitChildren(simpleType); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitMemberType(MemberType memberType) | 
						|
		{ | 
						|
			VisitChildren(memberType); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitTupleType(TupleAstType tupleType) | 
						|
		{ | 
						|
			VisitChildren(tupleType); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitTupleTypeElement(TupleTypeElement tupleTypeElement) | 
						|
		{ | 
						|
			VisitChildren(tupleTypeElement); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitFunctionPointerType(FunctionPointerAstType functionPointerType) | 
						|
		{ | 
						|
			VisitChildren(functionPointerType); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitInvocationType(InvocationAstType invocationType) | 
						|
		{ | 
						|
			VisitChildren(invocationType); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitAttribute(Attribute attribute) | 
						|
		{ | 
						|
			VisitChildren(attribute); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitAttributeSection(AttributeSection attributeSection) | 
						|
		{ | 
						|
			VisitChildren(attributeSection); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitDelegateDeclaration(DelegateDeclaration delegateDeclaration) | 
						|
		{ | 
						|
			VisitChildren(delegateDeclaration); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitNamespaceDeclaration(NamespaceDeclaration namespaceDeclaration) | 
						|
		{ | 
						|
			VisitChildren(namespaceDeclaration); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitTypeDeclaration(TypeDeclaration typeDeclaration) | 
						|
		{ | 
						|
			VisitChildren(typeDeclaration); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitTypeParameterDeclaration(TypeParameterDeclaration typeParameterDeclaration) | 
						|
		{ | 
						|
			VisitChildren(typeParameterDeclaration); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitEnumMemberDeclaration(EnumMemberDeclaration enumMemberDeclaration) | 
						|
		{ | 
						|
			VisitChildren(enumMemberDeclaration); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitUsingDeclaration(UsingDeclaration usingDeclaration) | 
						|
		{ | 
						|
			VisitChildren(usingDeclaration); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitUsingAliasDeclaration(UsingAliasDeclaration usingDeclaration) | 
						|
		{ | 
						|
			VisitChildren(usingDeclaration); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitExternAliasDeclaration(ExternAliasDeclaration externAliasDeclaration) | 
						|
		{ | 
						|
			VisitChildren(externAliasDeclaration); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitConstructorDeclaration(ConstructorDeclaration constructorDeclaration) | 
						|
		{ | 
						|
			VisitChildren(constructorDeclaration); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitConstructorInitializer(ConstructorInitializer constructorInitializer) | 
						|
		{ | 
						|
			VisitChildren(constructorInitializer); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitDestructorDeclaration(DestructorDeclaration destructorDeclaration) | 
						|
		{ | 
						|
			VisitChildren(destructorDeclaration); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitEventDeclaration(EventDeclaration eventDeclaration) | 
						|
		{ | 
						|
			VisitChildren(eventDeclaration); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitCustomEventDeclaration(CustomEventDeclaration eventDeclaration) | 
						|
		{ | 
						|
			VisitChildren(eventDeclaration); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitFieldDeclaration(FieldDeclaration fieldDeclaration) | 
						|
		{ | 
						|
			VisitChildren(fieldDeclaration); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitFixedFieldDeclaration(FixedFieldDeclaration fixedFieldDeclaration) | 
						|
		{ | 
						|
			VisitChildren(fixedFieldDeclaration); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitFixedVariableInitializer(FixedVariableInitializer fixedVariableInitializer) | 
						|
		{ | 
						|
			VisitChildren(fixedVariableInitializer); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitIndexerDeclaration(IndexerDeclaration indexerDeclaration) | 
						|
		{ | 
						|
			VisitChildren(indexerDeclaration); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitMethodDeclaration(MethodDeclaration methodDeclaration) | 
						|
		{ | 
						|
			VisitChildren(methodDeclaration); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitOperatorDeclaration(OperatorDeclaration operatorDeclaration) | 
						|
		{ | 
						|
			VisitChildren(operatorDeclaration); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitPropertyDeclaration(PropertyDeclaration propertyDeclaration) | 
						|
		{ | 
						|
			VisitChildren(propertyDeclaration); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitAccessor(Accessor accessor) | 
						|
		{ | 
						|
			VisitChildren(accessor); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitVariableInitializer(VariableInitializer variableInitializer) | 
						|
		{ | 
						|
			VisitChildren(variableInitializer); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitParameterDeclaration(ParameterDeclaration parameterDeclaration) | 
						|
		{ | 
						|
			VisitChildren(parameterDeclaration); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitConstraint(Constraint constraint) | 
						|
		{ | 
						|
			VisitChildren(constraint); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitBlockStatement(BlockStatement blockStatement) | 
						|
		{ | 
						|
			VisitChildren(blockStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitExpressionStatement(ExpressionStatement expressionStatement) | 
						|
		{ | 
						|
			VisitChildren(expressionStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitBreakStatement(BreakStatement breakStatement) | 
						|
		{ | 
						|
			VisitChildren(breakStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitCheckedStatement(CheckedStatement checkedStatement) | 
						|
		{ | 
						|
			VisitChildren(checkedStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitContinueStatement(ContinueStatement continueStatement) | 
						|
		{ | 
						|
			VisitChildren(continueStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitDoWhileStatement(DoWhileStatement doWhileStatement) | 
						|
		{ | 
						|
			VisitChildren(doWhileStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitEmptyStatement(EmptyStatement emptyStatement) | 
						|
		{ | 
						|
			VisitChildren(emptyStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitFixedStatement(FixedStatement fixedStatement) | 
						|
		{ | 
						|
			VisitChildren(fixedStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitForeachStatement(ForeachStatement foreachStatement) | 
						|
		{ | 
						|
			VisitChildren(foreachStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitForStatement(ForStatement forStatement) | 
						|
		{ | 
						|
			VisitChildren(forStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitGotoCaseStatement(GotoCaseStatement gotoCaseStatement) | 
						|
		{ | 
						|
			VisitChildren(gotoCaseStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitGotoDefaultStatement(GotoDefaultStatement gotoDefaultStatement) | 
						|
		{ | 
						|
			VisitChildren(gotoDefaultStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitGotoStatement(GotoStatement gotoStatement) | 
						|
		{ | 
						|
			VisitChildren(gotoStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitIfElseStatement(IfElseStatement ifElseStatement) | 
						|
		{ | 
						|
			VisitChildren(ifElseStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitLabelStatement(LabelStatement labelStatement) | 
						|
		{ | 
						|
			VisitChildren(labelStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitLockStatement(LockStatement lockStatement) | 
						|
		{ | 
						|
			VisitChildren(lockStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitReturnStatement(ReturnStatement returnStatement) | 
						|
		{ | 
						|
			VisitChildren(returnStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitSwitchStatement(SwitchStatement switchStatement) | 
						|
		{ | 
						|
			VisitChildren(switchStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitSwitchSection(SwitchSection switchSection) | 
						|
		{ | 
						|
			VisitChildren(switchSection); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitCaseLabel(CaseLabel caseLabel) | 
						|
		{ | 
						|
			VisitChildren(caseLabel); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitSwitchExpression(SwitchExpression switchExpression) | 
						|
		{ | 
						|
			VisitChildren(switchExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitSwitchExpressionSection(SwitchExpressionSection switchExpressionSection) | 
						|
		{ | 
						|
			VisitChildren(switchExpressionSection); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitThrowStatement(ThrowStatement throwStatement) | 
						|
		{ | 
						|
			VisitChildren(throwStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitTryCatchStatement(TryCatchStatement tryCatchStatement) | 
						|
		{ | 
						|
			VisitChildren(tryCatchStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitCatchClause(CatchClause catchClause) | 
						|
		{ | 
						|
			VisitChildren(catchClause); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitUncheckedStatement(UncheckedStatement uncheckedStatement) | 
						|
		{ | 
						|
			VisitChildren(uncheckedStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitUnsafeStatement(UnsafeStatement unsafeStatement) | 
						|
		{ | 
						|
			VisitChildren(unsafeStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitUsingStatement(UsingStatement usingStatement) | 
						|
		{ | 
						|
			VisitChildren(usingStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitVariableDeclarationStatement(VariableDeclarationStatement variableDeclarationStatement) | 
						|
		{ | 
						|
			VisitChildren(variableDeclarationStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitLocalFunctionDeclarationStatement(LocalFunctionDeclarationStatement localFunctionDeclarationStatement) | 
						|
		{ | 
						|
			VisitChildren(localFunctionDeclarationStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitWhileStatement(WhileStatement whileStatement) | 
						|
		{ | 
						|
			VisitChildren(whileStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitYieldBreakStatement(YieldBreakStatement yieldBreakStatement) | 
						|
		{ | 
						|
			VisitChildren(yieldBreakStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitYieldReturnStatement(YieldReturnStatement yieldReturnStatement) | 
						|
		{ | 
						|
			VisitChildren(yieldReturnStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitAnonymousMethodExpression(AnonymousMethodExpression anonymousMethodExpression) | 
						|
		{ | 
						|
			VisitChildren(anonymousMethodExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitLambdaExpression(LambdaExpression lambdaExpression) | 
						|
		{ | 
						|
			VisitChildren(lambdaExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitAssignmentExpression(AssignmentExpression assignmentExpression) | 
						|
		{ | 
						|
			VisitChildren(assignmentExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitBaseReferenceExpression(BaseReferenceExpression baseReferenceExpression) | 
						|
		{ | 
						|
			VisitChildren(baseReferenceExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitBinaryOperatorExpression(BinaryOperatorExpression binaryOperatorExpression) | 
						|
		{ | 
						|
			VisitChildren(binaryOperatorExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitCastExpression(CastExpression castExpression) | 
						|
		{ | 
						|
			VisitChildren(castExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitCheckedExpression(CheckedExpression checkedExpression) | 
						|
		{ | 
						|
			VisitChildren(checkedExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitConditionalExpression(ConditionalExpression conditionalExpression) | 
						|
		{ | 
						|
			VisitChildren(conditionalExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitIdentifierExpression(IdentifierExpression identifierExpression) | 
						|
		{ | 
						|
			VisitChildren(identifierExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitIndexerExpression(IndexerExpression indexerExpression) | 
						|
		{ | 
						|
			VisitChildren(indexerExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitInterpolatedStringExpression(InterpolatedStringExpression interpolatedStringExpression) | 
						|
		{ | 
						|
			VisitChildren(interpolatedStringExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitInterpolation(Interpolation interpolation) | 
						|
		{ | 
						|
			VisitChildren(interpolation); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitInterpolatedStringText(InterpolatedStringText interpolatedStringText) | 
						|
		{ | 
						|
			VisitChildren(interpolatedStringText); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitInvocationExpression(InvocationExpression invocationExpression) | 
						|
		{ | 
						|
			VisitChildren(invocationExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitDirectionExpression(DirectionExpression directionExpression) | 
						|
		{ | 
						|
			VisitChildren(directionExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitMemberReferenceExpression(MemberReferenceExpression memberReferenceExpression) | 
						|
		{ | 
						|
			VisitChildren(memberReferenceExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitNullReferenceExpression(NullReferenceExpression nullReferenceExpression) | 
						|
		{ | 
						|
			VisitChildren(nullReferenceExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitObjectCreateExpression(ObjectCreateExpression objectCreateExpression) | 
						|
		{ | 
						|
			VisitChildren(objectCreateExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitDeclarationExpression(DeclarationExpression declarationExpression) | 
						|
		{ | 
						|
			VisitChildren(declarationExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitOutVarDeclarationExpression(OutVarDeclarationExpression outVarDeclarationExpression) | 
						|
		{ | 
						|
			VisitChildren(outVarDeclarationExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitAnonymousTypeCreateExpression(AnonymousTypeCreateExpression anonymousTypeCreateExpression) | 
						|
		{ | 
						|
			VisitChildren(anonymousTypeCreateExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitArrayCreateExpression(ArrayCreateExpression arrayCreateExpression) | 
						|
		{ | 
						|
			VisitChildren(arrayCreateExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitParenthesizedExpression(ParenthesizedExpression parenthesizedExpression) | 
						|
		{ | 
						|
			VisitChildren(parenthesizedExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitPointerReferenceExpression(PointerReferenceExpression pointerReferenceExpression) | 
						|
		{ | 
						|
			VisitChildren(pointerReferenceExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitPrimitiveExpression(PrimitiveExpression primitiveExpression) | 
						|
		{ | 
						|
			VisitChildren(primitiveExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitSizeOfExpression(SizeOfExpression sizeOfExpression) | 
						|
		{ | 
						|
			VisitChildren(sizeOfExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitStackAllocExpression(StackAllocExpression stackAllocExpression) | 
						|
		{ | 
						|
			VisitChildren(stackAllocExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitThisReferenceExpression(ThisReferenceExpression thisReferenceExpression) | 
						|
		{ | 
						|
			VisitChildren(thisReferenceExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitThrowExpression(ThrowExpression throwExpression) | 
						|
		{ | 
						|
			VisitChildren(throwExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitTupleExpression(TupleExpression tupleExpression) | 
						|
		{ | 
						|
			VisitChildren(tupleExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitTypeOfExpression(TypeOfExpression typeOfExpression) | 
						|
		{ | 
						|
			VisitChildren(typeOfExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitTypeReferenceExpression(TypeReferenceExpression typeReferenceExpression) | 
						|
		{ | 
						|
			VisitChildren(typeReferenceExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitUnaryOperatorExpression(UnaryOperatorExpression unaryOperatorExpression) | 
						|
		{ | 
						|
			VisitChildren(unaryOperatorExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitUncheckedExpression(UncheckedExpression uncheckedExpression) | 
						|
		{ | 
						|
			VisitChildren(uncheckedExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitQueryExpression(QueryExpression queryExpression) | 
						|
		{ | 
						|
			VisitChildren(queryExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitQueryContinuationClause(QueryContinuationClause queryContinuationClause) | 
						|
		{ | 
						|
			VisitChildren(queryContinuationClause); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitQueryFromClause(QueryFromClause queryFromClause) | 
						|
		{ | 
						|
			VisitChildren(queryFromClause); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitQueryLetClause(QueryLetClause queryLetClause) | 
						|
		{ | 
						|
			VisitChildren(queryLetClause); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitQueryWhereClause(QueryWhereClause queryWhereClause) | 
						|
		{ | 
						|
			VisitChildren(queryWhereClause); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitQueryJoinClause(QueryJoinClause queryJoinClause) | 
						|
		{ | 
						|
			VisitChildren(queryJoinClause); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitQueryOrderClause(QueryOrderClause queryOrderClause) | 
						|
		{ | 
						|
			VisitChildren(queryOrderClause); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitQueryOrdering(QueryOrdering queryOrdering) | 
						|
		{ | 
						|
			VisitChildren(queryOrdering); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitQuerySelectClause(QuerySelectClause querySelectClause) | 
						|
		{ | 
						|
			VisitChildren(querySelectClause); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitQueryGroupClause(QueryGroupClause queryGroupClause) | 
						|
		{ | 
						|
			VisitChildren(queryGroupClause); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitAsExpression(AsExpression asExpression) | 
						|
		{ | 
						|
			VisitChildren(asExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitIsExpression(IsExpression isExpression) | 
						|
		{ | 
						|
			VisitChildren(isExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitDefaultValueExpression(DefaultValueExpression defaultValueExpression) | 
						|
		{ | 
						|
			VisitChildren(defaultValueExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitUndocumentedExpression(UndocumentedExpression undocumentedExpression) | 
						|
		{ | 
						|
			VisitChildren(undocumentedExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitArrayInitializerExpression(ArrayInitializerExpression arrayInitializerExpression) | 
						|
		{ | 
						|
			VisitChildren(arrayInitializerExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitArraySpecifier(ArraySpecifier arraySpecifier) | 
						|
		{ | 
						|
			VisitChildren(arraySpecifier); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitNamedArgumentExpression(NamedArgumentExpression namedArgumentExpression) | 
						|
		{ | 
						|
			VisitChildren(namedArgumentExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitNamedExpression(NamedExpression namedExpression) | 
						|
		{ | 
						|
			VisitChildren(namedExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitSingleVariableDesignation(SingleVariableDesignation singleVariableDesignation) | 
						|
		{ | 
						|
			VisitChildren(singleVariableDesignation); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitParenthesizedVariableDesignation(ParenthesizedVariableDesignation parenthesizedVariableDesignation) | 
						|
		{ | 
						|
			VisitChildren(parenthesizedVariableDesignation); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitErrorNode(AstNode errorNode) | 
						|
		{ | 
						|
			VisitChildren(errorNode); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitPatternPlaceholder(AstNode placeholder, PatternMatching.Pattern pattern) | 
						|
		{ | 
						|
			VisitChildren(placeholder); | 
						|
		} | 
						|
 | 
						|
		public virtual void VisitWithInitializerExpression(WithInitializerExpression withInitializerExpression) | 
						|
		{ | 
						|
			VisitChildren(withInitializerExpression); | 
						|
		} | 
						|
	} | 
						|
 | 
						|
	/// <summary> | 
						|
	/// AST visitor with a default implementation that visits all node depth-first. | 
						|
	/// </summary> | 
						|
	public abstract class DepthFirstAstVisitor<T> : IAstVisitor<T> | 
						|
	{ | 
						|
		protected virtual T VisitChildren(AstNode node) | 
						|
		{ | 
						|
			AstNode next; | 
						|
			for (var child = node.FirstChild; child != null; child = next) | 
						|
			{ | 
						|
				// Store next to allow the loop to continue | 
						|
				// if the visitor removes/replaces child. | 
						|
				next = child.NextSibling; | 
						|
				child.AcceptVisitor(this); | 
						|
			} | 
						|
			return default(T); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitNullNode(AstNode nullNode) | 
						|
		{ | 
						|
			// Should we call VisitChildren here? | 
						|
			// We usually want to ignore null nodes. | 
						|
			// Older NR versions (before VisitNullNode was introduced) didn't call VisitChildren() with null nodes; | 
						|
			// so changing this might break VisitChildren() overrides that expect the node to be part of the AST. | 
						|
			return default(T); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitSyntaxTree(SyntaxTree unit) | 
						|
		{ | 
						|
			return VisitChildren(unit); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitComment(Comment comment) | 
						|
		{ | 
						|
			return VisitChildren(comment); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitDocumentationReference(DocumentationReference documentationReference) | 
						|
		{ | 
						|
			return VisitChildren(documentationReference); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitPreProcessorDirective(PreProcessorDirective preProcessorDirective) | 
						|
		{ | 
						|
			return VisitChildren(preProcessorDirective); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitIdentifier(Identifier identifier) | 
						|
		{ | 
						|
			return VisitChildren(identifier); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitCSharpTokenNode(CSharpTokenNode token) | 
						|
		{ | 
						|
			return VisitChildren(token); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitPrimitiveType(PrimitiveType primitiveType) | 
						|
		{ | 
						|
			return VisitChildren(primitiveType); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitComposedType(ComposedType composedType) | 
						|
		{ | 
						|
			return VisitChildren(composedType); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitSimpleType(SimpleType simpleType) | 
						|
		{ | 
						|
			return VisitChildren(simpleType); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitMemberType(MemberType memberType) | 
						|
		{ | 
						|
			return VisitChildren(memberType); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitTupleType(TupleAstType tupleType) | 
						|
		{ | 
						|
			return VisitChildren(tupleType); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitTupleTypeElement(TupleTypeElement tupleTypeElement) | 
						|
		{ | 
						|
			return VisitChildren(tupleTypeElement); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitFunctionPointerType(FunctionPointerAstType functionPointerType) | 
						|
		{ | 
						|
			return VisitChildren(functionPointerType); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitInvocationType(InvocationAstType invocationType) | 
						|
		{ | 
						|
			return VisitChildren(invocationType); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitAttribute(Attribute attribute) | 
						|
		{ | 
						|
			return VisitChildren(attribute); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitAttributeSection(AttributeSection attributeSection) | 
						|
		{ | 
						|
			return VisitChildren(attributeSection); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitDelegateDeclaration(DelegateDeclaration delegateDeclaration) | 
						|
		{ | 
						|
			return VisitChildren(delegateDeclaration); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitNamespaceDeclaration(NamespaceDeclaration namespaceDeclaration) | 
						|
		{ | 
						|
			return VisitChildren(namespaceDeclaration); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitTypeDeclaration(TypeDeclaration typeDeclaration) | 
						|
		{ | 
						|
			return VisitChildren(typeDeclaration); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitTypeParameterDeclaration(TypeParameterDeclaration typeParameterDeclaration) | 
						|
		{ | 
						|
			return VisitChildren(typeParameterDeclaration); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitEnumMemberDeclaration(EnumMemberDeclaration enumMemberDeclaration) | 
						|
		{ | 
						|
			return VisitChildren(enumMemberDeclaration); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitUsingDeclaration(UsingDeclaration usingDeclaration) | 
						|
		{ | 
						|
			return VisitChildren(usingDeclaration); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitUsingAliasDeclaration(UsingAliasDeclaration usingDeclaration) | 
						|
		{ | 
						|
			return VisitChildren(usingDeclaration); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitExternAliasDeclaration(ExternAliasDeclaration externAliasDeclaration) | 
						|
		{ | 
						|
			return VisitChildren(externAliasDeclaration); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitConstructorDeclaration(ConstructorDeclaration constructorDeclaration) | 
						|
		{ | 
						|
			return VisitChildren(constructorDeclaration); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitConstructorInitializer(ConstructorInitializer constructorInitializer) | 
						|
		{ | 
						|
			return VisitChildren(constructorInitializer); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitDestructorDeclaration(DestructorDeclaration destructorDeclaration) | 
						|
		{ | 
						|
			return VisitChildren(destructorDeclaration); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitEventDeclaration(EventDeclaration eventDeclaration) | 
						|
		{ | 
						|
			return VisitChildren(eventDeclaration); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitCustomEventDeclaration(CustomEventDeclaration eventDeclaration) | 
						|
		{ | 
						|
			return VisitChildren(eventDeclaration); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitFieldDeclaration(FieldDeclaration fieldDeclaration) | 
						|
		{ | 
						|
			return VisitChildren(fieldDeclaration); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitFixedFieldDeclaration(FixedFieldDeclaration fixedFieldDeclaration) | 
						|
		{ | 
						|
			return VisitChildren(fixedFieldDeclaration); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitFixedVariableInitializer(FixedVariableInitializer fixedVariableInitializer) | 
						|
		{ | 
						|
			return VisitChildren(fixedVariableInitializer); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitIndexerDeclaration(IndexerDeclaration indexerDeclaration) | 
						|
		{ | 
						|
			return VisitChildren(indexerDeclaration); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitMethodDeclaration(MethodDeclaration methodDeclaration) | 
						|
		{ | 
						|
			return VisitChildren(methodDeclaration); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitOperatorDeclaration(OperatorDeclaration operatorDeclaration) | 
						|
		{ | 
						|
			return VisitChildren(operatorDeclaration); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitPropertyDeclaration(PropertyDeclaration propertyDeclaration) | 
						|
		{ | 
						|
			return VisitChildren(propertyDeclaration); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitAccessor(Accessor accessor) | 
						|
		{ | 
						|
			return VisitChildren(accessor); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitVariableInitializer(VariableInitializer variableInitializer) | 
						|
		{ | 
						|
			return VisitChildren(variableInitializer); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitParameterDeclaration(ParameterDeclaration parameterDeclaration) | 
						|
		{ | 
						|
			return VisitChildren(parameterDeclaration); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitConstraint(Constraint constraint) | 
						|
		{ | 
						|
			return VisitChildren(constraint); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitBlockStatement(BlockStatement blockStatement) | 
						|
		{ | 
						|
			return VisitChildren(blockStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitExpressionStatement(ExpressionStatement expressionStatement) | 
						|
		{ | 
						|
			return VisitChildren(expressionStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitBreakStatement(BreakStatement breakStatement) | 
						|
		{ | 
						|
			return VisitChildren(breakStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitCheckedStatement(CheckedStatement checkedStatement) | 
						|
		{ | 
						|
			return VisitChildren(checkedStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitContinueStatement(ContinueStatement continueStatement) | 
						|
		{ | 
						|
			return VisitChildren(continueStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitDoWhileStatement(DoWhileStatement doWhileStatement) | 
						|
		{ | 
						|
			return VisitChildren(doWhileStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitEmptyStatement(EmptyStatement emptyStatement) | 
						|
		{ | 
						|
			return VisitChildren(emptyStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitFixedStatement(FixedStatement fixedStatement) | 
						|
		{ | 
						|
			return VisitChildren(fixedStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitForeachStatement(ForeachStatement foreachStatement) | 
						|
		{ | 
						|
			return VisitChildren(foreachStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitForStatement(ForStatement forStatement) | 
						|
		{ | 
						|
			return VisitChildren(forStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitGotoCaseStatement(GotoCaseStatement gotoCaseStatement) | 
						|
		{ | 
						|
			return VisitChildren(gotoCaseStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitGotoDefaultStatement(GotoDefaultStatement gotoDefaultStatement) | 
						|
		{ | 
						|
			return VisitChildren(gotoDefaultStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitGotoStatement(GotoStatement gotoStatement) | 
						|
		{ | 
						|
			return VisitChildren(gotoStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitIfElseStatement(IfElseStatement ifElseStatement) | 
						|
		{ | 
						|
			return VisitChildren(ifElseStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitLabelStatement(LabelStatement labelStatement) | 
						|
		{ | 
						|
			return VisitChildren(labelStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitLockStatement(LockStatement lockStatement) | 
						|
		{ | 
						|
			return VisitChildren(lockStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitReturnStatement(ReturnStatement returnStatement) | 
						|
		{ | 
						|
			return VisitChildren(returnStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitSwitchStatement(SwitchStatement switchStatement) | 
						|
		{ | 
						|
			return VisitChildren(switchStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitSwitchSection(SwitchSection switchSection) | 
						|
		{ | 
						|
			return VisitChildren(switchSection); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitCaseLabel(CaseLabel caseLabel) | 
						|
		{ | 
						|
			return VisitChildren(caseLabel); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitSwitchExpression(SwitchExpression switchExpression) | 
						|
		{ | 
						|
			return VisitChildren(switchExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitSwitchExpressionSection(SwitchExpressionSection switchExpressionSection) | 
						|
		{ | 
						|
			return VisitChildren(switchExpressionSection); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitThrowStatement(ThrowStatement throwStatement) | 
						|
		{ | 
						|
			return VisitChildren(throwStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitTryCatchStatement(TryCatchStatement tryCatchStatement) | 
						|
		{ | 
						|
			return VisitChildren(tryCatchStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitCatchClause(CatchClause catchClause) | 
						|
		{ | 
						|
			return VisitChildren(catchClause); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitUncheckedStatement(UncheckedStatement uncheckedStatement) | 
						|
		{ | 
						|
			return VisitChildren(uncheckedStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitUnsafeStatement(UnsafeStatement unsafeStatement) | 
						|
		{ | 
						|
			return VisitChildren(unsafeStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitUsingStatement(UsingStatement usingStatement) | 
						|
		{ | 
						|
			return VisitChildren(usingStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitVariableDeclarationStatement(VariableDeclarationStatement variableDeclarationStatement) | 
						|
		{ | 
						|
			return VisitChildren(variableDeclarationStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitLocalFunctionDeclarationStatement(LocalFunctionDeclarationStatement localFunctionDeclarationStatement) | 
						|
		{ | 
						|
			return VisitChildren(localFunctionDeclarationStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitWhileStatement(WhileStatement whileStatement) | 
						|
		{ | 
						|
			return VisitChildren(whileStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitYieldBreakStatement(YieldBreakStatement yieldBreakStatement) | 
						|
		{ | 
						|
			return VisitChildren(yieldBreakStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitYieldReturnStatement(YieldReturnStatement yieldReturnStatement) | 
						|
		{ | 
						|
			return VisitChildren(yieldReturnStatement); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitAnonymousMethodExpression(AnonymousMethodExpression anonymousMethodExpression) | 
						|
		{ | 
						|
			return VisitChildren(anonymousMethodExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitLambdaExpression(LambdaExpression lambdaExpression) | 
						|
		{ | 
						|
			return VisitChildren(lambdaExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitAssignmentExpression(AssignmentExpression assignmentExpression) | 
						|
		{ | 
						|
			return VisitChildren(assignmentExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitBaseReferenceExpression(BaseReferenceExpression baseReferenceExpression) | 
						|
		{ | 
						|
			return VisitChildren(baseReferenceExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitBinaryOperatorExpression(BinaryOperatorExpression binaryOperatorExpression) | 
						|
		{ | 
						|
			return VisitChildren(binaryOperatorExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitCastExpression(CastExpression castExpression) | 
						|
		{ | 
						|
			return VisitChildren(castExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitCheckedExpression(CheckedExpression checkedExpression) | 
						|
		{ | 
						|
			return VisitChildren(checkedExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitConditionalExpression(ConditionalExpression conditionalExpression) | 
						|
		{ | 
						|
			return VisitChildren(conditionalExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitIdentifierExpression(IdentifierExpression identifierExpression) | 
						|
		{ | 
						|
			return VisitChildren(identifierExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitIndexerExpression(IndexerExpression indexerExpression) | 
						|
		{ | 
						|
			return VisitChildren(indexerExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitInterpolatedStringExpression(InterpolatedStringExpression interpolatedStringExpression) | 
						|
		{ | 
						|
			return VisitChildren(interpolatedStringExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitInterpolation(Interpolation interpolation) | 
						|
		{ | 
						|
			return VisitChildren(interpolation); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitInterpolatedStringText(InterpolatedStringText interpolatedStringText) | 
						|
		{ | 
						|
			return VisitChildren(interpolatedStringText); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitInvocationExpression(InvocationExpression invocationExpression) | 
						|
		{ | 
						|
			return VisitChildren(invocationExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitDirectionExpression(DirectionExpression directionExpression) | 
						|
		{ | 
						|
			return VisitChildren(directionExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitMemberReferenceExpression(MemberReferenceExpression memberReferenceExpression) | 
						|
		{ | 
						|
			return VisitChildren(memberReferenceExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitNullReferenceExpression(NullReferenceExpression nullReferenceExpression) | 
						|
		{ | 
						|
			return VisitChildren(nullReferenceExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitObjectCreateExpression(ObjectCreateExpression objectCreateExpression) | 
						|
		{ | 
						|
			return VisitChildren(objectCreateExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitDeclarationExpression(DeclarationExpression declarationExpression) | 
						|
		{ | 
						|
			return VisitChildren(declarationExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitOutVarDeclarationExpression(OutVarDeclarationExpression outVarDeclarationExpression) | 
						|
		{ | 
						|
			return VisitChildren(outVarDeclarationExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitAnonymousTypeCreateExpression(AnonymousTypeCreateExpression anonymousTypeCreateExpression) | 
						|
		{ | 
						|
			return VisitChildren(anonymousTypeCreateExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitArrayCreateExpression(ArrayCreateExpression arrayCreateExpression) | 
						|
		{ | 
						|
			return VisitChildren(arrayCreateExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitParenthesizedExpression(ParenthesizedExpression parenthesizedExpression) | 
						|
		{ | 
						|
			return VisitChildren(parenthesizedExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitPointerReferenceExpression(PointerReferenceExpression pointerReferenceExpression) | 
						|
		{ | 
						|
			return VisitChildren(pointerReferenceExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitPrimitiveExpression(PrimitiveExpression primitiveExpression) | 
						|
		{ | 
						|
			return VisitChildren(primitiveExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitSizeOfExpression(SizeOfExpression sizeOfExpression) | 
						|
		{ | 
						|
			return VisitChildren(sizeOfExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitStackAllocExpression(StackAllocExpression stackAllocExpression) | 
						|
		{ | 
						|
			return VisitChildren(stackAllocExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitThisReferenceExpression(ThisReferenceExpression thisReferenceExpression) | 
						|
		{ | 
						|
			return VisitChildren(thisReferenceExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitThrowExpression(ThrowExpression throwExpression) | 
						|
		{ | 
						|
			return VisitChildren(throwExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitTupleExpression(TupleExpression tupleExpression) | 
						|
		{ | 
						|
			return VisitChildren(tupleExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitTypeOfExpression(TypeOfExpression typeOfExpression) | 
						|
		{ | 
						|
			return VisitChildren(typeOfExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitTypeReferenceExpression(TypeReferenceExpression typeReferenceExpression) | 
						|
		{ | 
						|
			return VisitChildren(typeReferenceExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitUnaryOperatorExpression(UnaryOperatorExpression unaryOperatorExpression) | 
						|
		{ | 
						|
			return VisitChildren(unaryOperatorExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitUncheckedExpression(UncheckedExpression uncheckedExpression) | 
						|
		{ | 
						|
			return VisitChildren(uncheckedExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitQueryExpression(QueryExpression queryExpression) | 
						|
		{ | 
						|
			return VisitChildren(queryExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitQueryContinuationClause(QueryContinuationClause queryContinuationClause) | 
						|
		{ | 
						|
			return VisitChildren(queryContinuationClause); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitQueryFromClause(QueryFromClause queryFromClause) | 
						|
		{ | 
						|
			return VisitChildren(queryFromClause); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitQueryLetClause(QueryLetClause queryLetClause) | 
						|
		{ | 
						|
			return VisitChildren(queryLetClause); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitQueryWhereClause(QueryWhereClause queryWhereClause) | 
						|
		{ | 
						|
			return VisitChildren(queryWhereClause); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitQueryJoinClause(QueryJoinClause queryJoinClause) | 
						|
		{ | 
						|
			return VisitChildren(queryJoinClause); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitQueryOrderClause(QueryOrderClause queryOrderClause) | 
						|
		{ | 
						|
			return VisitChildren(queryOrderClause); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitQueryOrdering(QueryOrdering queryOrdering) | 
						|
		{ | 
						|
			return VisitChildren(queryOrdering); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitQuerySelectClause(QuerySelectClause querySelectClause) | 
						|
		{ | 
						|
			return VisitChildren(querySelectClause); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitQueryGroupClause(QueryGroupClause queryGroupClause) | 
						|
		{ | 
						|
			return VisitChildren(queryGroupClause); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitAsExpression(AsExpression asExpression) | 
						|
		{ | 
						|
			return VisitChildren(asExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitIsExpression(IsExpression isExpression) | 
						|
		{ | 
						|
			return VisitChildren(isExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitDefaultValueExpression(DefaultValueExpression defaultValueExpression) | 
						|
		{ | 
						|
			return VisitChildren(defaultValueExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitUndocumentedExpression(UndocumentedExpression undocumentedExpression) | 
						|
		{ | 
						|
			return VisitChildren(undocumentedExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitArrayInitializerExpression(ArrayInitializerExpression arrayInitializerExpression) | 
						|
		{ | 
						|
			return VisitChildren(arrayInitializerExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitArraySpecifier(ArraySpecifier arraySpecifier) | 
						|
		{ | 
						|
			return VisitChildren(arraySpecifier); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitNamedArgumentExpression(NamedArgumentExpression namedArgumentExpression) | 
						|
		{ | 
						|
			return VisitChildren(namedArgumentExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitNamedExpression(NamedExpression namedExpression) | 
						|
		{ | 
						|
			return VisitChildren(namedExpression); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitSingleVariableDesignation(SingleVariableDesignation singleVariableDesignation) | 
						|
		{ | 
						|
			return VisitChildren(singleVariableDesignation); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitParenthesizedVariableDesignation(ParenthesizedVariableDesignation parenthesizedVariableDesignation) | 
						|
		{ | 
						|
			return VisitChildren(parenthesizedVariableDesignation); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitErrorNode(AstNode errorNode) | 
						|
		{ | 
						|
			return VisitChildren(errorNode); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitPatternPlaceholder(AstNode placeholder, PatternMatching.Pattern pattern) | 
						|
		{ | 
						|
			return VisitChildren(placeholder); | 
						|
		} | 
						|
 | 
						|
		public virtual T VisitWithInitializerExpression(WithInitializerExpression withInitializerExpression) | 
						|
		{ | 
						|
			return VisitChildren(withInitializerExpression); | 
						|
		} | 
						|
	} | 
						|
 | 
						|
	/// <summary> | 
						|
	/// AST visitor with a default implementation that visits all node depth-first. | 
						|
	/// </summary> | 
						|
	public abstract class DepthFirstAstVisitor<T, S> : IAstVisitor<T, S> | 
						|
	{ | 
						|
		protected virtual S VisitChildren(AstNode node, T data) | 
						|
		{ | 
						|
			AstNode next; | 
						|
			for (var child = node.FirstChild; child != null; child = next) | 
						|
			{ | 
						|
				// Store next to allow the loop to continue | 
						|
				// if the visitor removes/replaces child. | 
						|
				next = child.NextSibling; | 
						|
				child.AcceptVisitor(this, data); | 
						|
			} | 
						|
			return default(S); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitNullNode(AstNode nullNode, T data) | 
						|
		{ | 
						|
			// Should we call VisitChildren here? | 
						|
			// We usually want to ignore null nodes. | 
						|
			// Older NR versions (before VisitNullNode was introduced) didn't call VisitChildren() with null nodes; | 
						|
			// so changing this might break VisitChildren() overrides that expect the node to be part of the AST. | 
						|
			return default(S); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitSyntaxTree(SyntaxTree unit, T data) | 
						|
		{ | 
						|
			return VisitChildren(unit, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitComment(Comment comment, T data) | 
						|
		{ | 
						|
			return VisitChildren(comment, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitDocumentationReference(DocumentationReference documentationReference, T data) | 
						|
		{ | 
						|
			return VisitChildren(documentationReference, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitPreProcessorDirective(PreProcessorDirective preProcessorDirective, T data) | 
						|
		{ | 
						|
			return VisitChildren(preProcessorDirective, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitIdentifier(Identifier identifier, T data) | 
						|
		{ | 
						|
			return VisitChildren(identifier, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitCSharpTokenNode(CSharpTokenNode token, T data) | 
						|
		{ | 
						|
			return VisitChildren(token, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitPrimitiveType(PrimitiveType primitiveType, T data) | 
						|
		{ | 
						|
			return VisitChildren(primitiveType, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitComposedType(ComposedType composedType, T data) | 
						|
		{ | 
						|
			return VisitChildren(composedType, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitSimpleType(SimpleType simpleType, T data) | 
						|
		{ | 
						|
			return VisitChildren(simpleType, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitMemberType(MemberType memberType, T data) | 
						|
		{ | 
						|
			return VisitChildren(memberType, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitTupleType(TupleAstType tupleType, T data) | 
						|
		{ | 
						|
			return VisitChildren(tupleType, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitTupleTypeElement(TupleTypeElement tupleTypeElement, T data) | 
						|
		{ | 
						|
			return VisitChildren(tupleTypeElement, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitFunctionPointerType(FunctionPointerAstType functionPointerType, T data) | 
						|
		{ | 
						|
			return VisitChildren(functionPointerType, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitInvocationType(InvocationAstType invocationType, T data) | 
						|
		{ | 
						|
			return VisitChildren(invocationType, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitAttribute(Attribute attribute, T data) | 
						|
		{ | 
						|
			return VisitChildren(attribute, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitAttributeSection(AttributeSection attributeSection, T data) | 
						|
		{ | 
						|
			return VisitChildren(attributeSection, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitDelegateDeclaration(DelegateDeclaration delegateDeclaration, T data) | 
						|
		{ | 
						|
			return VisitChildren(delegateDeclaration, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitNamespaceDeclaration(NamespaceDeclaration namespaceDeclaration, T data) | 
						|
		{ | 
						|
			return VisitChildren(namespaceDeclaration, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitTypeDeclaration(TypeDeclaration typeDeclaration, T data) | 
						|
		{ | 
						|
			return VisitChildren(typeDeclaration, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitTypeParameterDeclaration(TypeParameterDeclaration typeParameterDeclaration, T data) | 
						|
		{ | 
						|
			return VisitChildren(typeParameterDeclaration, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitEnumMemberDeclaration(EnumMemberDeclaration enumMemberDeclaration, T data) | 
						|
		{ | 
						|
			return VisitChildren(enumMemberDeclaration, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitUsingDeclaration(UsingDeclaration usingDeclaration, T data) | 
						|
		{ | 
						|
			return VisitChildren(usingDeclaration, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitUsingAliasDeclaration(UsingAliasDeclaration usingDeclaration, T data) | 
						|
		{ | 
						|
			return VisitChildren(usingDeclaration, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitExternAliasDeclaration(ExternAliasDeclaration externAliasDeclaration, T data) | 
						|
		{ | 
						|
			return VisitChildren(externAliasDeclaration, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitConstructorDeclaration(ConstructorDeclaration constructorDeclaration, T data) | 
						|
		{ | 
						|
			return VisitChildren(constructorDeclaration, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitConstructorInitializer(ConstructorInitializer constructorInitializer, T data) | 
						|
		{ | 
						|
			return VisitChildren(constructorInitializer, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitDestructorDeclaration(DestructorDeclaration destructorDeclaration, T data) | 
						|
		{ | 
						|
			return VisitChildren(destructorDeclaration, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitEventDeclaration(EventDeclaration eventDeclaration, T data) | 
						|
		{ | 
						|
			return VisitChildren(eventDeclaration, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitCustomEventDeclaration(CustomEventDeclaration eventDeclaration, T data) | 
						|
		{ | 
						|
			return VisitChildren(eventDeclaration, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitFieldDeclaration(FieldDeclaration fieldDeclaration, T data) | 
						|
		{ | 
						|
			return VisitChildren(fieldDeclaration, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitFixedFieldDeclaration(FixedFieldDeclaration fixedFieldDeclaration, T data) | 
						|
		{ | 
						|
			return VisitChildren(fixedFieldDeclaration, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitFixedVariableInitializer(FixedVariableInitializer fixedVariableInitializer, T data) | 
						|
		{ | 
						|
			return VisitChildren(fixedVariableInitializer, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitIndexerDeclaration(IndexerDeclaration indexerDeclaration, T data) | 
						|
		{ | 
						|
			return VisitChildren(indexerDeclaration, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitMethodDeclaration(MethodDeclaration methodDeclaration, T data) | 
						|
		{ | 
						|
			return VisitChildren(methodDeclaration, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitOperatorDeclaration(OperatorDeclaration operatorDeclaration, T data) | 
						|
		{ | 
						|
			return VisitChildren(operatorDeclaration, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitPropertyDeclaration(PropertyDeclaration propertyDeclaration, T data) | 
						|
		{ | 
						|
			return VisitChildren(propertyDeclaration, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitAccessor(Accessor accessor, T data) | 
						|
		{ | 
						|
			return VisitChildren(accessor, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitVariableInitializer(VariableInitializer variableInitializer, T data) | 
						|
		{ | 
						|
			return VisitChildren(variableInitializer, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitParameterDeclaration(ParameterDeclaration parameterDeclaration, T data) | 
						|
		{ | 
						|
			return VisitChildren(parameterDeclaration, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitConstraint(Constraint constraint, T data) | 
						|
		{ | 
						|
			return VisitChildren(constraint, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitBlockStatement(BlockStatement blockStatement, T data) | 
						|
		{ | 
						|
			return VisitChildren(blockStatement, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitExpressionStatement(ExpressionStatement expressionStatement, T data) | 
						|
		{ | 
						|
			return VisitChildren(expressionStatement, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitBreakStatement(BreakStatement breakStatement, T data) | 
						|
		{ | 
						|
			return VisitChildren(breakStatement, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitCheckedStatement(CheckedStatement checkedStatement, T data) | 
						|
		{ | 
						|
			return VisitChildren(checkedStatement, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitContinueStatement(ContinueStatement continueStatement, T data) | 
						|
		{ | 
						|
			return VisitChildren(continueStatement, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitDoWhileStatement(DoWhileStatement doWhileStatement, T data) | 
						|
		{ | 
						|
			return VisitChildren(doWhileStatement, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitEmptyStatement(EmptyStatement emptyStatement, T data) | 
						|
		{ | 
						|
			return VisitChildren(emptyStatement, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitFixedStatement(FixedStatement fixedStatement, T data) | 
						|
		{ | 
						|
			return VisitChildren(fixedStatement, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitForeachStatement(ForeachStatement foreachStatement, T data) | 
						|
		{ | 
						|
			return VisitChildren(foreachStatement, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitForStatement(ForStatement forStatement, T data) | 
						|
		{ | 
						|
			return VisitChildren(forStatement, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitGotoCaseStatement(GotoCaseStatement gotoCaseStatement, T data) | 
						|
		{ | 
						|
			return VisitChildren(gotoCaseStatement, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitGotoDefaultStatement(GotoDefaultStatement gotoDefaultStatement, T data) | 
						|
		{ | 
						|
			return VisitChildren(gotoDefaultStatement, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitGotoStatement(GotoStatement gotoStatement, T data) | 
						|
		{ | 
						|
			return VisitChildren(gotoStatement, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitIfElseStatement(IfElseStatement ifElseStatement, T data) | 
						|
		{ | 
						|
			return VisitChildren(ifElseStatement, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitLabelStatement(LabelStatement labelStatement, T data) | 
						|
		{ | 
						|
			return VisitChildren(labelStatement, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitLockStatement(LockStatement lockStatement, T data) | 
						|
		{ | 
						|
			return VisitChildren(lockStatement, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitReturnStatement(ReturnStatement returnStatement, T data) | 
						|
		{ | 
						|
			return VisitChildren(returnStatement, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitSwitchStatement(SwitchStatement switchStatement, T data) | 
						|
		{ | 
						|
			return VisitChildren(switchStatement, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitSwitchSection(SwitchSection switchSection, T data) | 
						|
		{ | 
						|
			return VisitChildren(switchSection, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitCaseLabel(CaseLabel caseLabel, T data) | 
						|
		{ | 
						|
			return VisitChildren(caseLabel, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitSwitchExpression(SwitchExpression switchExpression, T data) | 
						|
		{ | 
						|
			return VisitChildren(switchExpression, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitSwitchExpressionSection(SwitchExpressionSection switchExpressionSection, T data) | 
						|
		{ | 
						|
			return VisitChildren(switchExpressionSection, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitThrowStatement(ThrowStatement throwStatement, T data) | 
						|
		{ | 
						|
			return VisitChildren(throwStatement, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitTryCatchStatement(TryCatchStatement tryCatchStatement, T data) | 
						|
		{ | 
						|
			return VisitChildren(tryCatchStatement, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitCatchClause(CatchClause catchClause, T data) | 
						|
		{ | 
						|
			return VisitChildren(catchClause, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitUncheckedStatement(UncheckedStatement uncheckedStatement, T data) | 
						|
		{ | 
						|
			return VisitChildren(uncheckedStatement, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitUnsafeStatement(UnsafeStatement unsafeStatement, T data) | 
						|
		{ | 
						|
			return VisitChildren(unsafeStatement, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitUsingStatement(UsingStatement usingStatement, T data) | 
						|
		{ | 
						|
			return VisitChildren(usingStatement, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitVariableDeclarationStatement(VariableDeclarationStatement variableDeclarationStatement, T data) | 
						|
		{ | 
						|
			return VisitChildren(variableDeclarationStatement, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitLocalFunctionDeclarationStatement(LocalFunctionDeclarationStatement localFunctionDeclarationStatement, T data) | 
						|
		{ | 
						|
			return VisitChildren(localFunctionDeclarationStatement, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitWhileStatement(WhileStatement whileStatement, T data) | 
						|
		{ | 
						|
			return VisitChildren(whileStatement, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitYieldBreakStatement(YieldBreakStatement yieldBreakStatement, T data) | 
						|
		{ | 
						|
			return VisitChildren(yieldBreakStatement, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitYieldReturnStatement(YieldReturnStatement yieldReturnStatement, T data) | 
						|
		{ | 
						|
			return VisitChildren(yieldReturnStatement, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitAnonymousMethodExpression(AnonymousMethodExpression anonymousMethodExpression, T data) | 
						|
		{ | 
						|
			return VisitChildren(anonymousMethodExpression, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitLambdaExpression(LambdaExpression lambdaExpression, T data) | 
						|
		{ | 
						|
			return VisitChildren(lambdaExpression, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitAssignmentExpression(AssignmentExpression assignmentExpression, T data) | 
						|
		{ | 
						|
			return VisitChildren(assignmentExpression, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitBaseReferenceExpression(BaseReferenceExpression baseReferenceExpression, T data) | 
						|
		{ | 
						|
			return VisitChildren(baseReferenceExpression, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitBinaryOperatorExpression(BinaryOperatorExpression binaryOperatorExpression, T data) | 
						|
		{ | 
						|
			return VisitChildren(binaryOperatorExpression, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitCastExpression(CastExpression castExpression, T data) | 
						|
		{ | 
						|
			return VisitChildren(castExpression, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitCheckedExpression(CheckedExpression checkedExpression, T data) | 
						|
		{ | 
						|
			return VisitChildren(checkedExpression, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitConditionalExpression(ConditionalExpression conditionalExpression, T data) | 
						|
		{ | 
						|
			return VisitChildren(conditionalExpression, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitIdentifierExpression(IdentifierExpression identifierExpression, T data) | 
						|
		{ | 
						|
			return VisitChildren(identifierExpression, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitIndexerExpression(IndexerExpression indexerExpression, T data) | 
						|
		{ | 
						|
			return VisitChildren(indexerExpression, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitInterpolatedStringExpression(InterpolatedStringExpression interpolatedStringExpression, T data) | 
						|
		{ | 
						|
			return VisitChildren(interpolatedStringExpression, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitInterpolation(Interpolation interpolation, T data) | 
						|
		{ | 
						|
			return VisitChildren(interpolation, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitInterpolatedStringText(InterpolatedStringText interpolatedStringText, T data) | 
						|
		{ | 
						|
			return VisitChildren(interpolatedStringText, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitInvocationExpression(InvocationExpression invocationExpression, T data) | 
						|
		{ | 
						|
			return VisitChildren(invocationExpression, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitDirectionExpression(DirectionExpression directionExpression, T data) | 
						|
		{ | 
						|
			return VisitChildren(directionExpression, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitMemberReferenceExpression(MemberReferenceExpression memberReferenceExpression, T data) | 
						|
		{ | 
						|
			return VisitChildren(memberReferenceExpression, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitNullReferenceExpression(NullReferenceExpression nullReferenceExpression, T data) | 
						|
		{ | 
						|
			return VisitChildren(nullReferenceExpression, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitObjectCreateExpression(ObjectCreateExpression objectCreateExpression, T data) | 
						|
		{ | 
						|
			return VisitChildren(objectCreateExpression, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitDeclarationExpression(DeclarationExpression declarationExpression, T data) | 
						|
		{ | 
						|
			return VisitChildren(declarationExpression, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitOutVarDeclarationExpression(OutVarDeclarationExpression outVarDeclarationExpression, T data) | 
						|
		{ | 
						|
			return VisitChildren(outVarDeclarationExpression, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitAnonymousTypeCreateExpression(AnonymousTypeCreateExpression anonymousTypeCreateExpression, T data) | 
						|
		{ | 
						|
			return VisitChildren(anonymousTypeCreateExpression, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitArrayCreateExpression(ArrayCreateExpression arrayCreateExpression, T data) | 
						|
		{ | 
						|
			return VisitChildren(arrayCreateExpression, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitParenthesizedExpression(ParenthesizedExpression parenthesizedExpression, T data) | 
						|
		{ | 
						|
			return VisitChildren(parenthesizedExpression, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitPointerReferenceExpression(PointerReferenceExpression pointerReferenceExpression, T data) | 
						|
		{ | 
						|
			return VisitChildren(pointerReferenceExpression, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitPrimitiveExpression(PrimitiveExpression primitiveExpression, T data) | 
						|
		{ | 
						|
			return VisitChildren(primitiveExpression, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitSizeOfExpression(SizeOfExpression sizeOfExpression, T data) | 
						|
		{ | 
						|
			return VisitChildren(sizeOfExpression, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitStackAllocExpression(StackAllocExpression stackAllocExpression, T data) | 
						|
		{ | 
						|
			return VisitChildren(stackAllocExpression, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitThisReferenceExpression(ThisReferenceExpression thisReferenceExpression, T data) | 
						|
		{ | 
						|
			return VisitChildren(thisReferenceExpression, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitThrowExpression(ThrowExpression throwExpression, T data) | 
						|
		{ | 
						|
			return VisitChildren(throwExpression, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitTupleExpression(TupleExpression tupleExpression, T data) | 
						|
		{ | 
						|
			return VisitChildren(tupleExpression, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitTypeOfExpression(TypeOfExpression typeOfExpression, T data) | 
						|
		{ | 
						|
			return VisitChildren(typeOfExpression, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitTypeReferenceExpression(TypeReferenceExpression typeReferenceExpression, T data) | 
						|
		{ | 
						|
			return VisitChildren(typeReferenceExpression, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitUnaryOperatorExpression(UnaryOperatorExpression unaryOperatorExpression, T data) | 
						|
		{ | 
						|
			return VisitChildren(unaryOperatorExpression, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitUncheckedExpression(UncheckedExpression uncheckedExpression, T data) | 
						|
		{ | 
						|
			return VisitChildren(uncheckedExpression, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitQueryExpression(QueryExpression queryExpression, T data) | 
						|
		{ | 
						|
			return VisitChildren(queryExpression, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitQueryContinuationClause(QueryContinuationClause queryContinuationClause, T data) | 
						|
		{ | 
						|
			return VisitChildren(queryContinuationClause, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitQueryFromClause(QueryFromClause queryFromClause, T data) | 
						|
		{ | 
						|
			return VisitChildren(queryFromClause, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitQueryLetClause(QueryLetClause queryLetClause, T data) | 
						|
		{ | 
						|
			return VisitChildren(queryLetClause, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitQueryWhereClause(QueryWhereClause queryWhereClause, T data) | 
						|
		{ | 
						|
			return VisitChildren(queryWhereClause, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitQueryJoinClause(QueryJoinClause queryJoinClause, T data) | 
						|
		{ | 
						|
			return VisitChildren(queryJoinClause, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitQueryOrderClause(QueryOrderClause queryOrderClause, T data) | 
						|
		{ | 
						|
			return VisitChildren(queryOrderClause, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitQueryOrdering(QueryOrdering queryOrdering, T data) | 
						|
		{ | 
						|
			return VisitChildren(queryOrdering, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitQuerySelectClause(QuerySelectClause querySelectClause, T data) | 
						|
		{ | 
						|
			return VisitChildren(querySelectClause, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitQueryGroupClause(QueryGroupClause queryGroupClause, T data) | 
						|
		{ | 
						|
			return VisitChildren(queryGroupClause, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitAsExpression(AsExpression asExpression, T data) | 
						|
		{ | 
						|
			return VisitChildren(asExpression, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitIsExpression(IsExpression isExpression, T data) | 
						|
		{ | 
						|
			return VisitChildren(isExpression, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitDefaultValueExpression(DefaultValueExpression defaultValueExpression, T data) | 
						|
		{ | 
						|
			return VisitChildren(defaultValueExpression, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitUndocumentedExpression(UndocumentedExpression undocumentedExpression, T data) | 
						|
		{ | 
						|
			return VisitChildren(undocumentedExpression, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitArrayInitializerExpression(ArrayInitializerExpression arrayInitializerExpression, T data) | 
						|
		{ | 
						|
			return VisitChildren(arrayInitializerExpression, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitArraySpecifier(ArraySpecifier arraySpecifier, T data) | 
						|
		{ | 
						|
			return VisitChildren(arraySpecifier, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitNamedArgumentExpression(NamedArgumentExpression namedArgumentExpression, T data) | 
						|
		{ | 
						|
			return VisitChildren(namedArgumentExpression, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitNamedExpression(NamedExpression namedExpression, T data) | 
						|
		{ | 
						|
			return VisitChildren(namedExpression, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitSingleVariableDesignation(SingleVariableDesignation singleVariableDesignation, T data) | 
						|
		{ | 
						|
			return VisitChildren(singleVariableDesignation, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitParenthesizedVariableDesignation(ParenthesizedVariableDesignation parenthesizedVariableDesignation, T data) | 
						|
		{ | 
						|
			return VisitChildren(parenthesizedVariableDesignation, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitErrorNode(AstNode errorNode, T data) | 
						|
		{ | 
						|
			return VisitChildren(errorNode, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitPatternPlaceholder(AstNode placeholder, PatternMatching.Pattern pattern, T data) | 
						|
		{ | 
						|
			return VisitChildren(placeholder, data); | 
						|
		} | 
						|
 | 
						|
		public virtual S VisitWithInitializerExpression(WithInitializerExpression withInitializerExpression, T data) | 
						|
		{ | 
						|
			return VisitChildren(withInitializerExpression, data); | 
						|
		} | 
						|
	} | 
						|
}
 | 
						|
 |