File: IAstVisitor.cs

package info (click to toggle)
nrefactory 5.3.0%2B20130718.73b6d0f-4.1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye
  • size: 15,720 kB
  • sloc: cs: 296,018; makefile: 24; ansic: 7; sh: 2
file content (412 lines) | stat: -rw-r--r-- 25,599 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
// 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.

using System;

namespace ICSharpCode.NRefactory.CSharp
{
	/// <summary>
	/// AST visitor.
	/// </summary>
	public interface IAstVisitor
	{
		void VisitAnonymousMethodExpression(AnonymousMethodExpression anonymousMethodExpression);
		void VisitUndocumentedExpression(UndocumentedExpression undocumentedExpression);
		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 VisitDefaultValueExpression(DefaultValueExpression defaultValueExpression);
		void VisitDirectionExpression(DirectionExpression directionExpression);
		void VisitIdentifierExpression(IdentifierExpression identifierExpression);
		void VisitIndexerExpression(IndexerExpression indexerExpression);
		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 VisitAnonymousTypeCreateExpression(AnonymousTypeCreateExpression anonymousTypeCreateExpression);
		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 VisitTypeOfExpression(TypeOfExpression typeOfExpression);
		void VisitTypeReferenceExpression(TypeReferenceExpression typeReferenceExpression);
		void VisitUnaryOperatorExpression(UnaryOperatorExpression unaryOperatorExpression);
		void VisitUncheckedExpression(UncheckedExpression uncheckedExpression);

		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 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 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 VisitComposedType(ComposedType composedType);
		void VisitArraySpecifier(ArraySpecifier arraySpecifier);
		void VisitPrimitiveType(PrimitiveType primitiveType);
		
		void VisitComment(Comment comment);
		void VisitNewLine(NewLineNode newLineNode);
		void VisitWhitespace(WhitespaceNode whitespaceNode);
		void VisitText(TextNode textNode);
		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 VisitPatternPlaceholder(AstNode placeholder, PatternMatching.Pattern pattern);
	}
	
	/// <summary>
	/// AST visitor.
	/// </summary>
	public interface IAstVisitor<out S>
	{
		S VisitAnonymousMethodExpression(AnonymousMethodExpression anonymousMethodExpression);
		S VisitUndocumentedExpression(UndocumentedExpression undocumentedExpression);
		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 VisitDefaultValueExpression(DefaultValueExpression defaultValueExpression);
		S VisitDirectionExpression(DirectionExpression directionExpression);
		S VisitIdentifierExpression(IdentifierExpression identifierExpression);
		S VisitIndexerExpression(IndexerExpression indexerExpression);
		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 VisitAnonymousTypeCreateExpression(AnonymousTypeCreateExpression anonymousTypeCreateExpression);
		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 VisitTypeOfExpression(TypeOfExpression typeOfExpression);
		S VisitTypeReferenceExpression(TypeReferenceExpression typeReferenceExpression);
		S VisitUnaryOperatorExpression(UnaryOperatorExpression unaryOperatorExpression);
		S VisitUncheckedExpression(UncheckedExpression uncheckedExpression);

		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 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 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 VisitComposedType(ComposedType composedType);
		S VisitArraySpecifier(ArraySpecifier arraySpecifier);
		S VisitPrimitiveType(PrimitiveType primitiveType);
		
		S VisitComment(Comment comment);
		S VisitWhitespace(WhitespaceNode whitespaceNode);
		S VisitText(TextNode textNode);
		S VisitNewLine(NewLineNode newLineNode);
		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 VisitPatternPlaceholder(AstNode placeholder, PatternMatching.Pattern pattern);
	}
	
	/// <summary>
	/// AST visitor.
	/// </summary>
	public interface IAstVisitor<in T, out S>
	{
		S VisitAnonymousMethodExpression(AnonymousMethodExpression anonymousMethodExpression, T data);
		S VisitUndocumentedExpression(UndocumentedExpression undocumentedExpression, 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 VisitDefaultValueExpression(DefaultValueExpression defaultValueExpression, T data);
		S VisitDirectionExpression(DirectionExpression directionExpression, T data);
		S VisitIdentifierExpression(IdentifierExpression identifierExpression, T data);
		S VisitIndexerExpression(IndexerExpression indexerExpression, 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 VisitAnonymousTypeCreateExpression(AnonymousTypeCreateExpression anonymousTypeCreateExpression, 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 VisitTypeOfExpression(TypeOfExpression typeOfExpression, T data);
		S VisitTypeReferenceExpression(TypeReferenceExpression typeReferenceExpression, T data);
		S VisitUnaryOperatorExpression(UnaryOperatorExpression unaryOperatorExpression, T data);
		S VisitUncheckedExpression(UncheckedExpression uncheckedExpression, 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 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 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 VisitComposedType(ComposedType composedType, T data);
		S VisitArraySpecifier(ArraySpecifier arraySpecifier, T data);
		S VisitPrimitiveType(PrimitiveType primitiveType, T data);
		
		S VisitComment(Comment comment, T data);
		S VisitNewLine(NewLineNode newLineNode, T data);
		S VisitWhitespace(WhitespaceNode whitespaceNode, T data);
		S VisitText(TextNode textNode, 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 VisitPatternPlaceholder(AstNode placeholder, PatternMatching.Pattern pattern, T data);
	}
}