~ubuntu-branches/ubuntu/trusty/monodevelop/trusty-proposed

« back to all changes in this revision

Viewing changes to contrib/ICSharpCode.NRefactory.CSharp/Ast/DepthFirstAstVisitor.cs

  • Committer: Package Import Robot
  • Author(s): Jo Shields
  • Date: 2013-05-12 09:46:03 UTC
  • mto: This revision was merged to the branch mainline in revision 29.
  • Revision ID: package-import@ubuntu.com-20130512094603-mad323bzcxvmcam0
Tags: upstream-4.0.5+dfsg
ImportĀ upstreamĀ versionĀ 4.0.5+dfsg

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
ļ»æ// 
2
 
// IAstVisitor.cs
3
 
//
4
 
// Author:
5
 
//       Mike KrĆ¼ger <mkrueger@novell.com>
6
 
// 
7
 
// Copyright (c) 2010 Novell, Inc (http://www.novell.com)
8
 
// 
9
 
// Permission is hereby granted, free of charge, to any person obtaining a copy
10
 
// of this software and associated documentation files (the "Software"), to deal
11
 
// in the Software without restriction, including without limitation the rights
12
 
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13
 
// copies of the Software, and to permit persons to whom the Software is
14
 
// furnished to do so, subject to the following conditions:
15
 
// 
16
 
// The above copyright notice and this permission notice shall be included in
17
 
// all copies or substantial portions of the Software.
18
 
// 
19
 
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20
 
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21
 
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22
 
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23
 
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24
 
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
25
 
// THE SOFTWARE.
26
 
 
27
 
using System;
28
 
 
29
 
namespace ICSharpCode.NRefactory.CSharp
30
 
{
31
 
        /// <summary>
32
 
        /// AST visitor with a default implementation that visits all node depth-first.
33
 
        /// </summary>
34
 
        public abstract class DepthFirstAstVisitor : IAstVisitor
35
 
        {
36
 
                protected virtual void VisitChildren (AstNode node)
37
 
                {
38
 
                        AstNode next;
39
 
                        for (var child = node.FirstChild; child != null; child = next) {
40
 
                                // Store next to allow the loop to continue
41
 
                                // if the visitor removes/replaces child.
42
 
                                next = child.NextSibling;
43
 
                                child.AcceptVisitor (this);
44
 
                        }
45
 
                }
46
 
                
47
 
                public virtual void VisitCompilationUnit (CompilationUnit unit)
48
 
                {
49
 
                        VisitChildren (unit);
50
 
                }
51
 
                
52
 
                public virtual void VisitComment(Comment comment)
53
 
                {
54
 
                        VisitChildren(comment);
55
 
                }
56
 
 
57
 
                public virtual void VisitNewLine(NewLineNode newLineNode)
58
 
                {
59
 
                        VisitChildren(newLineNode);
60
 
                }
61
 
 
62
 
                public virtual void VisitWhitespace(WhitespaceNode whitespaceNode)
63
 
                {
64
 
                        VisitChildren(whitespaceNode);
65
 
                }
66
 
 
67
 
                public virtual void VisitText(TextNode textNode)
68
 
                {
69
 
                        VisitChildren(textNode);
70
 
                }
71
 
 
72
 
                public virtual void VisitDocumentationReference (DocumentationReference documentationReference)
73
 
                {
74
 
                        VisitChildren (documentationReference);
75
 
                }
76
 
                
77
 
                public virtual void VisitPreProcessorDirective (PreProcessorDirective preProcessorDirective)
78
 
                {
79
 
                        VisitChildren (preProcessorDirective);
80
 
                }
81
 
 
82
 
                public virtual void VisitIdentifier (Identifier identifier)
83
 
                {
84
 
                        VisitChildren (identifier);
85
 
                }
86
 
                
87
 
                public virtual void VisitCSharpTokenNode (CSharpTokenNode token)
88
 
                {
89
 
                        VisitChildren (token);
90
 
                }
91
 
                
92
 
                public virtual void VisitPrimitiveType (PrimitiveType primitiveType)
93
 
                {
94
 
                        VisitChildren (primitiveType);
95
 
                }
96
 
                
97
 
                public virtual void VisitComposedType (ComposedType composedType)
98
 
                {
99
 
                        VisitChildren (composedType);
100
 
                }
101
 
                
102
 
                public virtual void VisitSimpleType(SimpleType simpleType)
103
 
                {
104
 
                        VisitChildren (simpleType);
105
 
                }
106
 
                
107
 
                public virtual void VisitMemberType(MemberType memberType)
108
 
                {
109
 
                        VisitChildren (memberType);
110
 
                }
111
 
                
112
 
                public virtual void VisitAttribute (Attribute attribute)
113
 
                {
114
 
                        VisitChildren (attribute);
115
 
                }
116
 
                
117
 
                public virtual void VisitAttributeSection (AttributeSection attributeSection)
118
 
                {
119
 
                        VisitChildren (attributeSection);
120
 
                }
121
 
                
122
 
                public virtual void VisitDelegateDeclaration (DelegateDeclaration delegateDeclaration)
123
 
                {
124
 
                        VisitChildren (delegateDeclaration);
125
 
                }
126
 
                
127
 
                public virtual void VisitNamespaceDeclaration (NamespaceDeclaration namespaceDeclaration)
128
 
                {
129
 
                        VisitChildren (namespaceDeclaration);
130
 
                }
131
 
                
132
 
                public virtual void VisitTypeDeclaration (TypeDeclaration typeDeclaration)
133
 
                {
134
 
                        VisitChildren (typeDeclaration);
135
 
                }
136
 
                
137
 
                public virtual void VisitTypeParameterDeclaration (TypeParameterDeclaration typeParameterDeclaration)
138
 
                {
139
 
                        VisitChildren (typeParameterDeclaration);
140
 
                }
141
 
                
142
 
                public virtual void VisitEnumMemberDeclaration (EnumMemberDeclaration enumMemberDeclaration)
143
 
                {
144
 
                        VisitChildren (enumMemberDeclaration);
145
 
                }
146
 
                
147
 
                public virtual void VisitUsingDeclaration (UsingDeclaration usingDeclaration)
148
 
                {
149
 
                        VisitChildren (usingDeclaration);
150
 
                }
151
 
                
152
 
                public virtual void VisitUsingAliasDeclaration (UsingAliasDeclaration usingDeclaration)
153
 
                {
154
 
                        VisitChildren (usingDeclaration);
155
 
                }
156
 
                
157
 
                public virtual void VisitExternAliasDeclaration(ExternAliasDeclaration externAliasDeclaration)
158
 
                {
159
 
                        VisitChildren (externAliasDeclaration);
160
 
                }
161
 
                
162
 
                public virtual void VisitConstructorDeclaration (ConstructorDeclaration constructorDeclaration)
163
 
                {
164
 
                        VisitChildren (constructorDeclaration);
165
 
                }
166
 
                
167
 
                public virtual void VisitConstructorInitializer (ConstructorInitializer constructorInitializer)
168
 
                {
169
 
                        VisitChildren (constructorInitializer);
170
 
                }
171
 
                
172
 
                public virtual void VisitDestructorDeclaration (DestructorDeclaration destructorDeclaration)
173
 
                {
174
 
                        VisitChildren (destructorDeclaration);
175
 
                }
176
 
                
177
 
                public virtual void VisitEventDeclaration (EventDeclaration eventDeclaration)
178
 
                {
179
 
                        VisitChildren (eventDeclaration);
180
 
                }
181
 
                
182
 
                public virtual void VisitCustomEventDeclaration (CustomEventDeclaration eventDeclaration)
183
 
                {
184
 
                        VisitChildren (eventDeclaration);
185
 
                }
186
 
                
187
 
                public virtual void VisitFieldDeclaration (FieldDeclaration fieldDeclaration)
188
 
                {
189
 
                        VisitChildren (fieldDeclaration);
190
 
                }
191
 
                
192
 
                public virtual void VisitFixedFieldDeclaration (FixedFieldDeclaration fixedFieldDeclaration)
193
 
                {
194
 
                        VisitChildren (fixedFieldDeclaration);
195
 
                }
196
 
                
197
 
                public virtual void VisitFixedVariableInitializer (FixedVariableInitializer fixedVariableInitializer)
198
 
                {
199
 
                        VisitChildren (fixedVariableInitializer);
200
 
                }
201
 
                
202
 
                public virtual void VisitIndexerDeclaration (IndexerDeclaration indexerDeclaration)
203
 
                {
204
 
                        VisitChildren (indexerDeclaration);
205
 
                }
206
 
                
207
 
                public virtual void VisitMethodDeclaration (MethodDeclaration methodDeclaration)
208
 
                {
209
 
                        VisitChildren (methodDeclaration);
210
 
                }
211
 
                
212
 
                public virtual void VisitOperatorDeclaration (OperatorDeclaration operatorDeclaration)
213
 
                {
214
 
                        VisitChildren (operatorDeclaration);
215
 
                }
216
 
                
217
 
                public virtual void VisitPropertyDeclaration (PropertyDeclaration propertyDeclaration)
218
 
                {
219
 
                        VisitChildren (propertyDeclaration);
220
 
                }
221
 
                
222
 
                public virtual void VisitAccessor (Accessor accessor)
223
 
                {
224
 
                        VisitChildren (accessor);
225
 
                }
226
 
                
227
 
                public virtual void VisitVariableInitializer (VariableInitializer variableInitializer)
228
 
                {
229
 
                        VisitChildren (variableInitializer);
230
 
                }
231
 
                
232
 
                public virtual void VisitParameterDeclaration (ParameterDeclaration parameterDeclaration)
233
 
                {
234
 
                        VisitChildren (parameterDeclaration);
235
 
                }
236
 
                
237
 
                public virtual void VisitConstraint (Constraint constraint)
238
 
                {
239
 
                        VisitChildren (constraint);
240
 
                }
241
 
                
242
 
                public virtual void VisitBlockStatement (BlockStatement blockStatement)
243
 
                {
244
 
                        VisitChildren (blockStatement);
245
 
                }
246
 
                
247
 
                public virtual void VisitExpressionStatement (ExpressionStatement expressionStatement)
248
 
                {
249
 
                        VisitChildren (expressionStatement);
250
 
                }
251
 
                
252
 
                public virtual void VisitBreakStatement (BreakStatement breakStatement)
253
 
                {
254
 
                        VisitChildren (breakStatement);
255
 
                }
256
 
                
257
 
                public virtual void VisitCheckedStatement (CheckedStatement checkedStatement)
258
 
                {
259
 
                        VisitChildren (checkedStatement);
260
 
                }
261
 
                
262
 
                public virtual void VisitContinueStatement (ContinueStatement continueStatement)
263
 
                {
264
 
                        VisitChildren (continueStatement);
265
 
                }
266
 
                
267
 
                public virtual void VisitDoWhileStatement (DoWhileStatement doWhileStatement)
268
 
                {
269
 
                        VisitChildren (doWhileStatement);
270
 
                }
271
 
                
272
 
                public virtual void VisitEmptyStatement (EmptyStatement emptyStatement)
273
 
                {
274
 
                        VisitChildren (emptyStatement);
275
 
                }
276
 
                
277
 
                public virtual void VisitFixedStatement (FixedStatement fixedStatement)
278
 
                {
279
 
                        VisitChildren (fixedStatement);
280
 
                }
281
 
                
282
 
                public virtual void VisitForeachStatement (ForeachStatement foreachStatement)
283
 
                {
284
 
                        VisitChildren (foreachStatement);
285
 
                }
286
 
                
287
 
                public virtual void VisitForStatement (ForStatement forStatement)
288
 
                {
289
 
                        VisitChildren (forStatement);
290
 
                }
291
 
                
292
 
                public virtual void VisitGotoCaseStatement (GotoCaseStatement gotoCaseStatement)
293
 
                {
294
 
                        VisitChildren (gotoCaseStatement);
295
 
                }
296
 
                
297
 
                public virtual void VisitGotoDefaultStatement (GotoDefaultStatement gotoDefaultStatement)
298
 
                {
299
 
                        VisitChildren (gotoDefaultStatement);
300
 
                }
301
 
                
302
 
                public virtual void VisitGotoStatement (GotoStatement gotoStatement)
303
 
                {
304
 
                        VisitChildren (gotoStatement);
305
 
                }
306
 
                
307
 
                public virtual void VisitIfElseStatement (IfElseStatement ifElseStatement)
308
 
                {
309
 
                        VisitChildren (ifElseStatement);
310
 
                }
311
 
                
312
 
                public virtual void VisitLabelStatement (LabelStatement labelStatement)
313
 
                {
314
 
                        VisitChildren (labelStatement);
315
 
                }
316
 
                
317
 
                public virtual void VisitLockStatement (LockStatement lockStatement)
318
 
                {
319
 
                        VisitChildren (lockStatement);
320
 
                }
321
 
                
322
 
                public virtual void VisitReturnStatement (ReturnStatement returnStatement)
323
 
                {
324
 
                        VisitChildren (returnStatement);
325
 
                }
326
 
                
327
 
                public virtual void VisitSwitchStatement (SwitchStatement switchStatement)
328
 
                {
329
 
                        VisitChildren (switchStatement);
330
 
                }
331
 
                
332
 
                public virtual void VisitSwitchSection (SwitchSection switchSection)
333
 
                {
334
 
                        VisitChildren (switchSection);
335
 
                }
336
 
                
337
 
                public virtual void VisitCaseLabel (CaseLabel caseLabel)
338
 
                {
339
 
                        VisitChildren (caseLabel);
340
 
                }
341
 
                
342
 
                public virtual void VisitThrowStatement (ThrowStatement throwStatement)
343
 
                {
344
 
                        VisitChildren (throwStatement);
345
 
                }
346
 
                
347
 
                public virtual void VisitTryCatchStatement (TryCatchStatement tryCatchStatement)
348
 
                {
349
 
                        VisitChildren (tryCatchStatement);
350
 
                }
351
 
                
352
 
                public virtual void VisitCatchClause (CatchClause catchClause)
353
 
                {
354
 
                        VisitChildren (catchClause);
355
 
                }
356
 
                
357
 
                public virtual void VisitUncheckedStatement (UncheckedStatement uncheckedStatement)
358
 
                {
359
 
                        VisitChildren (uncheckedStatement);
360
 
                }
361
 
                
362
 
                public virtual void VisitUnsafeStatement (UnsafeStatement unsafeStatement)
363
 
                {
364
 
                        VisitChildren (unsafeStatement);
365
 
                }
366
 
                
367
 
                public virtual void VisitUsingStatement (UsingStatement usingStatement)
368
 
                {
369
 
                        VisitChildren (usingStatement);
370
 
                }
371
 
                
372
 
                public virtual void VisitVariableDeclarationStatement (VariableDeclarationStatement variableDeclarationStatement)
373
 
                {
374
 
                        VisitChildren (variableDeclarationStatement);
375
 
                }
376
 
                
377
 
                public virtual void VisitWhileStatement (WhileStatement whileStatement)
378
 
                {
379
 
                        VisitChildren (whileStatement);
380
 
                }
381
 
                
382
 
                public virtual void VisitYieldBreakStatement (YieldBreakStatement yieldBreakStatement)
383
 
                {
384
 
                        VisitChildren (yieldBreakStatement);
385
 
                }
386
 
                
387
 
                public virtual void VisitYieldReturnStatement (YieldReturnStatement yieldReturnStatement)
388
 
                {
389
 
                        VisitChildren (yieldReturnStatement);
390
 
                }
391
 
                
392
 
                public virtual void VisitAnonymousMethodExpression (AnonymousMethodExpression anonymousMethodExpression)
393
 
                {
394
 
                        VisitChildren (anonymousMethodExpression);
395
 
                }
396
 
                
397
 
                public virtual void VisitLambdaExpression (LambdaExpression lambdaExpression)
398
 
                {
399
 
                        VisitChildren (lambdaExpression);
400
 
                }
401
 
                
402
 
                public virtual void VisitAssignmentExpression (AssignmentExpression assignmentExpression)
403
 
                {
404
 
                        VisitChildren (assignmentExpression);
405
 
                }
406
 
                
407
 
                public virtual void VisitBaseReferenceExpression (BaseReferenceExpression baseReferenceExpression)
408
 
                {
409
 
                        VisitChildren (baseReferenceExpression);
410
 
                }
411
 
                
412
 
                public virtual void VisitBinaryOperatorExpression (BinaryOperatorExpression binaryOperatorExpression)
413
 
                {
414
 
                        VisitChildren (binaryOperatorExpression);
415
 
                }
416
 
                
417
 
                public virtual void VisitCastExpression (CastExpression castExpression)
418
 
                {
419
 
                        VisitChildren (castExpression);
420
 
                }
421
 
                
422
 
                public virtual void VisitCheckedExpression (CheckedExpression checkedExpression)
423
 
                {
424
 
                        VisitChildren (checkedExpression);
425
 
                }
426
 
                
427
 
                public virtual void VisitConditionalExpression (ConditionalExpression conditionalExpression)
428
 
                {
429
 
                        VisitChildren (conditionalExpression);
430
 
                }
431
 
                
432
 
                public virtual void VisitIdentifierExpression (IdentifierExpression identifierExpression)
433
 
                {
434
 
                        VisitChildren (identifierExpression);
435
 
                }
436
 
                
437
 
                public virtual void VisitIndexerExpression (IndexerExpression indexerExpression)
438
 
                {
439
 
                        VisitChildren (indexerExpression);
440
 
                }
441
 
                
442
 
                public virtual void VisitInvocationExpression (InvocationExpression invocationExpression)
443
 
                {
444
 
                        VisitChildren (invocationExpression);
445
 
                }
446
 
                
447
 
                public virtual void VisitDirectionExpression (DirectionExpression directionExpression)
448
 
                {
449
 
                        VisitChildren (directionExpression);
450
 
                }
451
 
                
452
 
                public virtual void VisitMemberReferenceExpression (MemberReferenceExpression memberReferenceExpression)
453
 
                {
454
 
                        VisitChildren (memberReferenceExpression);
455
 
                }
456
 
                
457
 
                public virtual void VisitNullReferenceExpression (NullReferenceExpression nullReferenceExpression)
458
 
                {
459
 
                        VisitChildren (nullReferenceExpression);
460
 
                }
461
 
                
462
 
                public virtual void VisitObjectCreateExpression (ObjectCreateExpression objectCreateExpression)
463
 
                {
464
 
                        VisitChildren (objectCreateExpression);
465
 
                }
466
 
                
467
 
                public virtual void VisitAnonymousTypeCreateExpression(AnonymousTypeCreateExpression anonymousTypeCreateExpression)
468
 
                {
469
 
                        VisitChildren (anonymousTypeCreateExpression);
470
 
                }
471
 
                
472
 
                public virtual void VisitArrayCreateExpression (ArrayCreateExpression arrayCreateExpression)
473
 
                {
474
 
                        VisitChildren (arrayCreateExpression);
475
 
                }
476
 
                
477
 
                public virtual void VisitParenthesizedExpression (ParenthesizedExpression parenthesizedExpression)
478
 
                {
479
 
                        VisitChildren (parenthesizedExpression);
480
 
                }
481
 
                
482
 
                public virtual void VisitPointerReferenceExpression (PointerReferenceExpression pointerReferenceExpression)
483
 
                {
484
 
                        VisitChildren (pointerReferenceExpression);
485
 
                }
486
 
                
487
 
                public virtual void VisitPrimitiveExpression(PrimitiveExpression primitiveExpression)
488
 
                {
489
 
                        VisitChildren (primitiveExpression);
490
 
                }
491
 
                
492
 
                public virtual void VisitSizeOfExpression (SizeOfExpression sizeOfExpression)
493
 
                {
494
 
                        VisitChildren (sizeOfExpression);
495
 
                }
496
 
                
497
 
                public virtual void VisitStackAllocExpression (StackAllocExpression stackAllocExpression)
498
 
                {
499
 
                        VisitChildren (stackAllocExpression);
500
 
                }
501
 
                
502
 
                public virtual void VisitThisReferenceExpression(ThisReferenceExpression thisReferenceExpression)
503
 
                {
504
 
                        VisitChildren (thisReferenceExpression);
505
 
                }
506
 
                
507
 
                public virtual void VisitTypeOfExpression (TypeOfExpression typeOfExpression)
508
 
                {
509
 
                        VisitChildren (typeOfExpression);
510
 
                }
511
 
                
512
 
                public virtual void VisitTypeReferenceExpression(TypeReferenceExpression typeReferenceExpression)
513
 
                {
514
 
                        VisitChildren (typeReferenceExpression);
515
 
                }
516
 
                
517
 
                public virtual void VisitUnaryOperatorExpression (UnaryOperatorExpression unaryOperatorExpression)
518
 
                {
519
 
                        VisitChildren (unaryOperatorExpression);
520
 
                }
521
 
                
522
 
                public virtual void VisitUncheckedExpression (UncheckedExpression uncheckedExpression)
523
 
                {
524
 
                        VisitChildren (uncheckedExpression);
525
 
                }
526
 
                
527
 
                public virtual void VisitQueryExpression(QueryExpression queryExpression)
528
 
                {
529
 
                        VisitChildren (queryExpression);
530
 
                }
531
 
                
532
 
                public virtual void VisitQueryContinuationClause(QueryContinuationClause queryContinuationClause)
533
 
                {
534
 
                        VisitChildren (queryContinuationClause);
535
 
                }
536
 
                
537
 
                public virtual void VisitQueryFromClause(QueryFromClause queryFromClause)
538
 
                {
539
 
                        VisitChildren (queryFromClause);
540
 
                }
541
 
                
542
 
                public virtual void VisitQueryLetClause(QueryLetClause queryLetClause)
543
 
                {
544
 
                        VisitChildren (queryLetClause);
545
 
                }
546
 
                
547
 
                public virtual void VisitQueryWhereClause(QueryWhereClause queryWhereClause)
548
 
                {
549
 
                        VisitChildren (queryWhereClause);
550
 
                }
551
 
                
552
 
                public virtual void VisitQueryJoinClause(QueryJoinClause queryJoinClause)
553
 
                {
554
 
                        VisitChildren (queryJoinClause);
555
 
                }
556
 
                
557
 
                public virtual void VisitQueryOrderClause(QueryOrderClause queryOrderClause)
558
 
                {
559
 
                        VisitChildren (queryOrderClause);
560
 
                }
561
 
                
562
 
                public virtual void VisitQueryOrdering(QueryOrdering queryOrdering)
563
 
                {
564
 
                        VisitChildren (queryOrdering);
565
 
                }
566
 
                
567
 
                public virtual void VisitQuerySelectClause(QuerySelectClause querySelectClause)
568
 
                {
569
 
                        VisitChildren (querySelectClause);
570
 
                }
571
 
                
572
 
                public virtual void VisitQueryGroupClause(QueryGroupClause queryGroupClause)
573
 
                {
574
 
                        VisitChildren (queryGroupClause);
575
 
                }
576
 
                
577
 
                public virtual void VisitAsExpression (AsExpression asExpression)
578
 
                {
579
 
                        VisitChildren (asExpression);
580
 
                }
581
 
                
582
 
                public virtual void VisitIsExpression (IsExpression isExpression)
583
 
                {
584
 
                        VisitChildren (isExpression);
585
 
                }
586
 
                
587
 
                public virtual void VisitDefaultValueExpression (DefaultValueExpression defaultValueExpression)
588
 
                {
589
 
                        VisitChildren (defaultValueExpression);
590
 
                }
591
 
                
592
 
                public virtual void VisitUndocumentedExpression (UndocumentedExpression undocumentedExpression)
593
 
                {
594
 
                        VisitChildren (undocumentedExpression);
595
 
                }
596
 
                
597
 
                public virtual void VisitArrayInitializerExpression (ArrayInitializerExpression arrayInitializerExpression)
598
 
                {
599
 
                        VisitChildren (arrayInitializerExpression);
600
 
                }
601
 
                
602
 
                public virtual void VisitArraySpecifier (ArraySpecifier arraySpecifier)
603
 
                {
604
 
                        VisitChildren (arraySpecifier);
605
 
                }
606
 
                
607
 
                public virtual void VisitNamedArgumentExpression (NamedArgumentExpression namedArgumentExpression)
608
 
                {
609
 
                        VisitChildren (namedArgumentExpression);
610
 
                }
611
 
                
612
 
                public virtual void VisitNamedExpression (NamedExpression namedExpression)
613
 
                {
614
 
                        VisitChildren (namedExpression);
615
 
                }
616
 
                
617
 
                public virtual void VisitEmptyExpression (EmptyExpression emptyExpression)
618
 
                {
619
 
                        VisitChildren (emptyExpression);
620
 
                }
621
 
                
622
 
                public virtual void VisitPatternPlaceholder(AstNode placeholder, PatternMatching.Pattern pattern)
623
 
                {
624
 
                        VisitChildren (placeholder);
625
 
                }
626
 
        }
627
 
        
628
 
        /// <summary>
629
 
        /// AST visitor with a default implementation that visits all node depth-first.
630
 
        /// </summary>
631
 
        public abstract class DepthFirstAstVisitor<T> : IAstVisitor<T>
632
 
        {
633
 
                protected virtual T VisitChildren (AstNode node)
634
 
                {
635
 
                        AstNode next;
636
 
                        for (var child = node.FirstChild; child != null; child = next) {
637
 
                                // Store next to allow the loop to continue
638
 
                                // if the visitor removes/replaces child.
639
 
                                next = child.NextSibling;
640
 
                                child.AcceptVisitor (this);
641
 
                        }
642
 
                        return default (T);
643
 
                }
644
 
                
645
 
                public virtual T VisitCompilationUnit (CompilationUnit unit)
646
 
                {
647
 
                        return VisitChildren (unit);
648
 
                }
649
 
                
650
 
                public virtual T VisitComment (Comment comment)
651
 
                {
652
 
                        return VisitChildren (comment);
653
 
                }
654
 
                
655
 
                public virtual T VisitNewLine(NewLineNode newLineNode)
656
 
                {
657
 
                        return VisitChildren(newLineNode);
658
 
                }
659
 
                
660
 
                public virtual T VisitWhitespace(WhitespaceNode whitespaceNode)
661
 
                {
662
 
                        return VisitChildren(whitespaceNode);
663
 
                }
664
 
 
665
 
                public virtual T VisitText(TextNode textNode)
666
 
                {
667
 
                        return VisitChildren(textNode);
668
 
                }
669
 
 
670
 
                public virtual T VisitDocumentationReference (DocumentationReference documentationReference)
671
 
                {
672
 
                        return VisitChildren (documentationReference);
673
 
                }
674
 
                
675
 
                public virtual T VisitPreProcessorDirective (PreProcessorDirective preProcessorDirective)
676
 
                {
677
 
                        return VisitChildren (preProcessorDirective);
678
 
                }
679
 
 
680
 
                public virtual T VisitIdentifier (Identifier identifier)
681
 
                {
682
 
                        return VisitChildren (identifier);
683
 
                }
684
 
                
685
 
                public virtual T VisitCSharpTokenNode (CSharpTokenNode token)
686
 
                {
687
 
                        return VisitChildren (token);
688
 
                }
689
 
                
690
 
                public virtual T VisitPrimitiveType (PrimitiveType primitiveType)
691
 
                {
692
 
                        return VisitChildren (primitiveType);
693
 
                }
694
 
                
695
 
                public virtual T VisitComposedType (ComposedType composedType)
696
 
                {
697
 
                        return VisitChildren (composedType);
698
 
                }
699
 
                
700
 
                public virtual T VisitSimpleType(SimpleType simpleType)
701
 
                {
702
 
                        return VisitChildren (simpleType);
703
 
                }
704
 
                
705
 
                public virtual T VisitMemberType(MemberType memberType)
706
 
                {
707
 
                        return VisitChildren (memberType);
708
 
                }
709
 
                
710
 
                public virtual T VisitAttribute (Attribute attribute)
711
 
                {
712
 
                        return VisitChildren (attribute);
713
 
                }
714
 
                
715
 
                public virtual T VisitAttributeSection (AttributeSection attributeSection)
716
 
                {
717
 
                        return VisitChildren (attributeSection);
718
 
                }
719
 
                
720
 
                public virtual T VisitDelegateDeclaration (DelegateDeclaration delegateDeclaration)
721
 
                {
722
 
                        return VisitChildren (delegateDeclaration);
723
 
                }
724
 
                
725
 
                public virtual T VisitNamespaceDeclaration (NamespaceDeclaration namespaceDeclaration)
726
 
                {
727
 
                        return VisitChildren (namespaceDeclaration);
728
 
                }
729
 
                
730
 
                public virtual T VisitTypeDeclaration (TypeDeclaration typeDeclaration)
731
 
                {
732
 
                        return VisitChildren (typeDeclaration);
733
 
                }
734
 
                
735
 
                public virtual T VisitTypeParameterDeclaration (TypeParameterDeclaration typeParameterDeclaration)
736
 
                {
737
 
                        return VisitChildren (typeParameterDeclaration);
738
 
                }
739
 
                
740
 
                public virtual T VisitEnumMemberDeclaration (EnumMemberDeclaration enumMemberDeclaration)
741
 
                {
742
 
                        return VisitChildren (enumMemberDeclaration);
743
 
                }
744
 
                
745
 
                public virtual T VisitUsingDeclaration (UsingDeclaration usingDeclaration)
746
 
                {
747
 
                        return VisitChildren (usingDeclaration);
748
 
                }
749
 
                
750
 
                public virtual T VisitUsingAliasDeclaration (UsingAliasDeclaration usingDeclaration)
751
 
                {
752
 
                        return VisitChildren (usingDeclaration);
753
 
                }
754
 
                
755
 
                public virtual T VisitExternAliasDeclaration(ExternAliasDeclaration externAliasDeclaration)
756
 
                {
757
 
                        return VisitChildren (externAliasDeclaration);
758
 
                }
759
 
                
760
 
                public virtual T VisitConstructorDeclaration (ConstructorDeclaration constructorDeclaration)
761
 
                {
762
 
                        return VisitChildren (constructorDeclaration);
763
 
                }
764
 
                
765
 
                public virtual T VisitConstructorInitializer (ConstructorInitializer constructorInitializer)
766
 
                {
767
 
                        return VisitChildren (constructorInitializer);
768
 
                }
769
 
                
770
 
                public virtual T VisitDestructorDeclaration (DestructorDeclaration destructorDeclaration)
771
 
                {
772
 
                        return VisitChildren (destructorDeclaration);
773
 
                }
774
 
                
775
 
                public virtual T VisitEventDeclaration (EventDeclaration eventDeclaration)
776
 
                {
777
 
                        return VisitChildren (eventDeclaration);
778
 
                }
779
 
                
780
 
                public virtual T VisitCustomEventDeclaration (CustomEventDeclaration eventDeclaration)
781
 
                {
782
 
                        return VisitChildren (eventDeclaration);
783
 
                }
784
 
                
785
 
                public virtual T VisitFieldDeclaration (FieldDeclaration fieldDeclaration)
786
 
                {
787
 
                        return VisitChildren (fieldDeclaration);
788
 
                }
789
 
                
790
 
                public virtual T VisitFixedFieldDeclaration (FixedFieldDeclaration fixedFieldDeclaration)
791
 
                {
792
 
                        return VisitChildren (fixedFieldDeclaration);
793
 
                }
794
 
                
795
 
                public virtual T VisitFixedVariableInitializer (FixedVariableInitializer fixedVariableInitializer)
796
 
                {
797
 
                        return VisitChildren (fixedVariableInitializer);
798
 
                }
799
 
                
800
 
                public virtual T VisitIndexerDeclaration (IndexerDeclaration indexerDeclaration)
801
 
                {
802
 
                        return VisitChildren (indexerDeclaration);
803
 
                }
804
 
                
805
 
                public virtual T VisitMethodDeclaration (MethodDeclaration methodDeclaration)
806
 
                {
807
 
                        return VisitChildren (methodDeclaration);
808
 
                }
809
 
                
810
 
                public virtual T VisitOperatorDeclaration (OperatorDeclaration operatorDeclaration)
811
 
                {
812
 
                        return VisitChildren (operatorDeclaration);
813
 
                }
814
 
                
815
 
                public virtual T VisitPropertyDeclaration (PropertyDeclaration propertyDeclaration)
816
 
                {
817
 
                        return VisitChildren (propertyDeclaration);
818
 
                }
819
 
                
820
 
                public virtual T VisitAccessor (Accessor accessor)
821
 
                {
822
 
                        return VisitChildren (accessor);
823
 
                }
824
 
                
825
 
                public virtual T VisitVariableInitializer (VariableInitializer variableInitializer)
826
 
                {
827
 
                        return VisitChildren (variableInitializer);
828
 
                }
829
 
                
830
 
                public virtual T VisitParameterDeclaration (ParameterDeclaration parameterDeclaration)
831
 
                {
832
 
                        return VisitChildren (parameterDeclaration);
833
 
                }
834
 
                
835
 
                public virtual T VisitConstraint (Constraint constraint)
836
 
                {
837
 
                        return VisitChildren (constraint);
838
 
                }
839
 
                
840
 
                public virtual T VisitBlockStatement (BlockStatement blockStatement)
841
 
                {
842
 
                        return VisitChildren (blockStatement);
843
 
                }
844
 
                
845
 
                public virtual T VisitExpressionStatement (ExpressionStatement expressionStatement)
846
 
                {
847
 
                        return VisitChildren (expressionStatement);
848
 
                }
849
 
                
850
 
                public virtual T VisitBreakStatement (BreakStatement breakStatement)
851
 
                {
852
 
                        return VisitChildren (breakStatement);
853
 
                }
854
 
                
855
 
                public virtual T VisitCheckedStatement (CheckedStatement checkedStatement)
856
 
                {
857
 
                        return VisitChildren (checkedStatement);
858
 
                }
859
 
                
860
 
                public virtual T VisitContinueStatement (ContinueStatement continueStatement)
861
 
                {
862
 
                        return VisitChildren (continueStatement);
863
 
                }
864
 
                
865
 
                public virtual T VisitDoWhileStatement (DoWhileStatement doWhileStatement)
866
 
                {
867
 
                        return VisitChildren (doWhileStatement);
868
 
                }
869
 
                
870
 
                public virtual T VisitEmptyStatement (EmptyStatement emptyStatement)
871
 
                {
872
 
                        return VisitChildren (emptyStatement);
873
 
                }
874
 
                
875
 
                public virtual T VisitFixedStatement (FixedStatement fixedStatement)
876
 
                {
877
 
                        return VisitChildren (fixedStatement);
878
 
                }
879
 
                
880
 
                public virtual T VisitForeachStatement (ForeachStatement foreachStatement)
881
 
                {
882
 
                        return VisitChildren (foreachStatement);
883
 
                }
884
 
                
885
 
                public virtual T VisitForStatement (ForStatement forStatement)
886
 
                {
887
 
                        return VisitChildren (forStatement);
888
 
                }
889
 
                
890
 
                public virtual T VisitGotoCaseStatement (GotoCaseStatement gotoCaseStatement)
891
 
                {
892
 
                        return VisitChildren (gotoCaseStatement);
893
 
                }
894
 
                
895
 
                public virtual T VisitGotoDefaultStatement (GotoDefaultStatement gotoDefaultStatement)
896
 
                {
897
 
                        return VisitChildren (gotoDefaultStatement);
898
 
                }
899
 
                
900
 
                public virtual T VisitGotoStatement (GotoStatement gotoStatement)
901
 
                {
902
 
                        return VisitChildren (gotoStatement);
903
 
                }
904
 
                
905
 
                public virtual T VisitIfElseStatement (IfElseStatement ifElseStatement)
906
 
                {
907
 
                        return VisitChildren (ifElseStatement);
908
 
                }
909
 
                
910
 
                public virtual T VisitLabelStatement (LabelStatement labelStatement)
911
 
                {
912
 
                        return VisitChildren (labelStatement);
913
 
                }
914
 
                
915
 
                public virtual T VisitLockStatement (LockStatement lockStatement)
916
 
                {
917
 
                        return VisitChildren (lockStatement);
918
 
                }
919
 
                
920
 
                public virtual T VisitReturnStatement (ReturnStatement returnStatement)
921
 
                {
922
 
                        return VisitChildren (returnStatement);
923
 
                }
924
 
                
925
 
                public virtual T VisitSwitchStatement (SwitchStatement switchStatement)
926
 
                {
927
 
                        return VisitChildren (switchStatement);
928
 
                }
929
 
                
930
 
                public virtual T VisitSwitchSection (SwitchSection switchSection)
931
 
                {
932
 
                        return VisitChildren (switchSection);
933
 
                }
934
 
                
935
 
                public virtual T VisitCaseLabel (CaseLabel caseLabel)
936
 
                {
937
 
                        return VisitChildren (caseLabel);
938
 
                }
939
 
                
940
 
                public virtual T VisitThrowStatement (ThrowStatement throwStatement)
941
 
                {
942
 
                        return VisitChildren (throwStatement);
943
 
                }
944
 
                
945
 
                public virtual T VisitTryCatchStatement (TryCatchStatement tryCatchStatement)
946
 
                {
947
 
                        return VisitChildren (tryCatchStatement);
948
 
                }
949
 
                
950
 
                public virtual T VisitCatchClause (CatchClause catchClause)
951
 
                {
952
 
                        return VisitChildren (catchClause);
953
 
                }
954
 
                
955
 
                public virtual T VisitUncheckedStatement (UncheckedStatement uncheckedStatement)
956
 
                {
957
 
                        return VisitChildren (uncheckedStatement);
958
 
                }
959
 
                
960
 
                public virtual T VisitUnsafeStatement (UnsafeStatement unsafeStatement)
961
 
                {
962
 
                        return VisitChildren (unsafeStatement);
963
 
                }
964
 
                
965
 
                public virtual T VisitUsingStatement (UsingStatement usingStatement)
966
 
                {
967
 
                        return VisitChildren (usingStatement);
968
 
                }
969
 
                
970
 
                public virtual T VisitVariableDeclarationStatement (VariableDeclarationStatement variableDeclarationStatement)
971
 
                {
972
 
                        return VisitChildren (variableDeclarationStatement);
973
 
                }
974
 
                
975
 
                public virtual T VisitWhileStatement (WhileStatement whileStatement)
976
 
                {
977
 
                        return VisitChildren (whileStatement);
978
 
                }
979
 
                
980
 
                public virtual T VisitYieldBreakStatement (YieldBreakStatement yieldBreakStatement)
981
 
                {
982
 
                        return VisitChildren (yieldBreakStatement);
983
 
                }
984
 
                
985
 
                public virtual T VisitYieldReturnStatement (YieldReturnStatement yieldReturnStatement)
986
 
                {
987
 
                        return VisitChildren (yieldReturnStatement);
988
 
                }
989
 
                
990
 
                public virtual T VisitAnonymousMethodExpression (AnonymousMethodExpression anonymousMethodExpression)
991
 
                {
992
 
                        return VisitChildren (anonymousMethodExpression);
993
 
                }
994
 
                
995
 
                public virtual T VisitLambdaExpression (LambdaExpression lambdaExpression)
996
 
                {
997
 
                        return VisitChildren (lambdaExpression);
998
 
                }
999
 
                
1000
 
                public virtual T VisitAssignmentExpression (AssignmentExpression assignmentExpression)
1001
 
                {
1002
 
                        return VisitChildren (assignmentExpression);
1003
 
                }
1004
 
                
1005
 
                public virtual T VisitBaseReferenceExpression (BaseReferenceExpression baseReferenceExpression)
1006
 
                {
1007
 
                        return VisitChildren (baseReferenceExpression);
1008
 
                }
1009
 
                
1010
 
                public virtual T VisitBinaryOperatorExpression (BinaryOperatorExpression binaryOperatorExpression)
1011
 
                {
1012
 
                        return VisitChildren (binaryOperatorExpression);
1013
 
                }
1014
 
                
1015
 
                public virtual T VisitCastExpression (CastExpression castExpression)
1016
 
                {
1017
 
                        return VisitChildren (castExpression);
1018
 
                }
1019
 
                
1020
 
                public virtual T VisitCheckedExpression (CheckedExpression checkedExpression)
1021
 
                {
1022
 
                        return VisitChildren (checkedExpression);
1023
 
                }
1024
 
                
1025
 
                public virtual T VisitConditionalExpression (ConditionalExpression conditionalExpression)
1026
 
                {
1027
 
                        return VisitChildren (conditionalExpression);
1028
 
                }
1029
 
                
1030
 
                public virtual T VisitIdentifierExpression (IdentifierExpression identifierExpression)
1031
 
                {
1032
 
                        return VisitChildren (identifierExpression);
1033
 
                }
1034
 
                
1035
 
                public virtual T VisitIndexerExpression (IndexerExpression indexerExpression)
1036
 
                {
1037
 
                        return VisitChildren (indexerExpression);
1038
 
                }
1039
 
                
1040
 
                public virtual T VisitInvocationExpression (InvocationExpression invocationExpression)
1041
 
                {
1042
 
                        return VisitChildren (invocationExpression);
1043
 
                }
1044
 
                
1045
 
                public virtual T VisitDirectionExpression (DirectionExpression directionExpression)
1046
 
                {
1047
 
                        return VisitChildren (directionExpression);
1048
 
                }
1049
 
                
1050
 
                public virtual T VisitMemberReferenceExpression (MemberReferenceExpression memberReferenceExpression)
1051
 
                {
1052
 
                        return VisitChildren (memberReferenceExpression);
1053
 
                }
1054
 
                
1055
 
                public virtual T VisitNullReferenceExpression (NullReferenceExpression nullReferenceExpression)
1056
 
                {
1057
 
                        return VisitChildren (nullReferenceExpression);
1058
 
                }
1059
 
                
1060
 
                public virtual T VisitObjectCreateExpression (ObjectCreateExpression objectCreateExpression)
1061
 
                {
1062
 
                        return VisitChildren (objectCreateExpression);
1063
 
                }
1064
 
                
1065
 
                public virtual T VisitAnonymousTypeCreateExpression(AnonymousTypeCreateExpression anonymousTypeCreateExpression)
1066
 
                {
1067
 
                        return VisitChildren (anonymousTypeCreateExpression);
1068
 
                }
1069
 
                
1070
 
                public virtual T VisitArrayCreateExpression (ArrayCreateExpression arrayCreateExpression)
1071
 
                {
1072
 
                        return VisitChildren (arrayCreateExpression);
1073
 
                }
1074
 
                
1075
 
                public virtual T VisitParenthesizedExpression (ParenthesizedExpression parenthesizedExpression)
1076
 
                {
1077
 
                        return VisitChildren (parenthesizedExpression);
1078
 
                }
1079
 
                
1080
 
                public virtual T VisitPointerReferenceExpression (PointerReferenceExpression pointerReferenceExpression)
1081
 
                {
1082
 
                        return VisitChildren (pointerReferenceExpression);
1083
 
                }
1084
 
                
1085
 
                public virtual T VisitPrimitiveExpression(PrimitiveExpression primitiveExpression)
1086
 
                {
1087
 
                        return VisitChildren (primitiveExpression);
1088
 
                }
1089
 
                
1090
 
                public virtual T VisitSizeOfExpression (SizeOfExpression sizeOfExpression)
1091
 
                {
1092
 
                        return VisitChildren (sizeOfExpression);
1093
 
                }
1094
 
                
1095
 
                public virtual T VisitStackAllocExpression (StackAllocExpression stackAllocExpression)
1096
 
                {
1097
 
                        return VisitChildren (stackAllocExpression);
1098
 
                }
1099
 
                
1100
 
                public virtual T VisitThisReferenceExpression(ThisReferenceExpression thisReferenceExpression)
1101
 
                {
1102
 
                        return VisitChildren (thisReferenceExpression);
1103
 
                }
1104
 
                
1105
 
                public virtual T VisitTypeOfExpression (TypeOfExpression typeOfExpression)
1106
 
                {
1107
 
                        return VisitChildren (typeOfExpression);
1108
 
                }
1109
 
                
1110
 
                public virtual T VisitTypeReferenceExpression(TypeReferenceExpression typeReferenceExpression)
1111
 
                {
1112
 
                        return VisitChildren (typeReferenceExpression);
1113
 
                }
1114
 
                
1115
 
                public virtual T VisitUnaryOperatorExpression (UnaryOperatorExpression unaryOperatorExpression)
1116
 
                {
1117
 
                        return VisitChildren (unaryOperatorExpression);
1118
 
                }
1119
 
                
1120
 
                public virtual T VisitUncheckedExpression (UncheckedExpression uncheckedExpression)
1121
 
                {
1122
 
                        return VisitChildren (uncheckedExpression);
1123
 
                }
1124
 
                
1125
 
                public virtual T VisitQueryExpression(QueryExpression queryExpression)
1126
 
                {
1127
 
                        return VisitChildren (queryExpression);
1128
 
                }
1129
 
                
1130
 
                public virtual T VisitQueryContinuationClause(QueryContinuationClause queryContinuationClause)
1131
 
                {
1132
 
                        return VisitChildren (queryContinuationClause);
1133
 
                }
1134
 
                
1135
 
                public virtual T VisitQueryFromClause(QueryFromClause queryFromClause)
1136
 
                {
1137
 
                        return VisitChildren (queryFromClause);
1138
 
                }
1139
 
                
1140
 
                public virtual T VisitQueryLetClause(QueryLetClause queryLetClause)
1141
 
                {
1142
 
                        return VisitChildren (queryLetClause);
1143
 
                }
1144
 
                
1145
 
                public virtual T VisitQueryWhereClause(QueryWhereClause queryWhereClause)
1146
 
                {
1147
 
                        return VisitChildren (queryWhereClause);
1148
 
                }
1149
 
                
1150
 
                public virtual T VisitQueryJoinClause(QueryJoinClause queryJoinClause)
1151
 
                {
1152
 
                        return VisitChildren (queryJoinClause);
1153
 
                }
1154
 
                
1155
 
                public virtual T VisitQueryOrderClause(QueryOrderClause queryOrderClause)
1156
 
                {
1157
 
                        return VisitChildren (queryOrderClause);
1158
 
                }
1159
 
                
1160
 
                public virtual T VisitQueryOrdering(QueryOrdering queryOrdering)
1161
 
                {
1162
 
                        return VisitChildren (queryOrdering);
1163
 
                }
1164
 
                
1165
 
                public virtual T VisitQuerySelectClause(QuerySelectClause querySelectClause)
1166
 
                {
1167
 
                        return VisitChildren (querySelectClause);
1168
 
                }
1169
 
                
1170
 
                public virtual T VisitQueryGroupClause(QueryGroupClause queryGroupClause)
1171
 
                {
1172
 
                        return VisitChildren (queryGroupClause);
1173
 
                }
1174
 
                
1175
 
                public virtual T VisitAsExpression (AsExpression asExpression)
1176
 
                {
1177
 
                        return VisitChildren (asExpression);
1178
 
                }
1179
 
                
1180
 
                public virtual T VisitIsExpression (IsExpression isExpression)
1181
 
                {
1182
 
                        return VisitChildren (isExpression);
1183
 
                }
1184
 
                
1185
 
                public virtual T VisitDefaultValueExpression (DefaultValueExpression defaultValueExpression)
1186
 
                {
1187
 
                        return VisitChildren (defaultValueExpression);
1188
 
                }
1189
 
                
1190
 
                public virtual T VisitUndocumentedExpression (UndocumentedExpression undocumentedExpression)
1191
 
                {
1192
 
                        return VisitChildren (undocumentedExpression);
1193
 
                }
1194
 
                
1195
 
                public virtual T VisitArrayInitializerExpression (ArrayInitializerExpression arrayInitializerExpression)
1196
 
                {
1197
 
                        return VisitChildren (arrayInitializerExpression);
1198
 
                }
1199
 
                
1200
 
                public virtual T VisitArraySpecifier (ArraySpecifier arraySpecifier)
1201
 
                {
1202
 
                        return VisitChildren (arraySpecifier);
1203
 
                }
1204
 
                
1205
 
                public virtual T VisitNamedArgumentExpression (NamedArgumentExpression namedArgumentExpression)
1206
 
                {
1207
 
                        return VisitChildren (namedArgumentExpression);
1208
 
                }
1209
 
                
1210
 
                public virtual T VisitNamedExpression (NamedExpression namedExpression)
1211
 
                {
1212
 
                        return VisitChildren (namedExpression);
1213
 
                }
1214
 
                
1215
 
                public virtual T VisitEmptyExpression (EmptyExpression emptyExpression)
1216
 
                {
1217
 
                        return VisitChildren (emptyExpression);
1218
 
                }
1219
 
                
1220
 
                public virtual T VisitPatternPlaceholder(AstNode placeholder, PatternMatching.Pattern pattern)
1221
 
                {
1222
 
                        return VisitChildren (placeholder);
1223
 
                }
1224
 
        }
1225
 
        
1226
 
        /// <summary>
1227
 
        /// AST visitor with a default implementation that visits all node depth-first.
1228
 
        /// </summary>
1229
 
        public abstract class DepthFirstAstVisitor<T, S> : IAstVisitor<T, S>
1230
 
        {
1231
 
                protected virtual S VisitChildren (AstNode node, T data)
1232
 
                {
1233
 
                        AstNode next;
1234
 
                        for (var child = node.FirstChild; child != null; child = next) {
1235
 
                                // Store next to allow the loop to continue
1236
 
                                // if the visitor removes/replaces child.
1237
 
                                next = child.NextSibling;
1238
 
                                child.AcceptVisitor (this, data);
1239
 
                        }
1240
 
                        return default (S);
1241
 
                }
1242
 
                
1243
 
                public virtual S VisitCompilationUnit (CompilationUnit unit, T data)
1244
 
                {
1245
 
                        return VisitChildren (unit, data);
1246
 
                }
1247
 
                
1248
 
                public virtual S VisitComment (Comment comment, T data)
1249
 
                {
1250
 
                        return VisitChildren (comment, data);
1251
 
                }
1252
 
                
1253
 
                public virtual S VisitNewLine(NewLineNode newLineNode, T data)
1254
 
                {
1255
 
                        return VisitChildren(newLineNode, data);
1256
 
                }
1257
 
 
1258
 
                public virtual S VisitWhitespace(WhitespaceNode whitespaceNode, T data)
1259
 
                {
1260
 
                        return VisitChildren(whitespaceNode, data);
1261
 
                }
1262
 
 
1263
 
                public virtual S VisitText(TextNode textNode, T data)
1264
 
                {
1265
 
                        return VisitChildren(textNode, data);
1266
 
                }
1267
 
 
1268
 
                public virtual S VisitDocumentationReference (DocumentationReference documentationReference, T data)
1269
 
                {
1270
 
                        return VisitChildren (documentationReference, data);
1271
 
                }
1272
 
                
1273
 
                public virtual S VisitPreProcessorDirective (PreProcessorDirective preProcessorDirective, T data)
1274
 
                {
1275
 
                        return VisitChildren (preProcessorDirective, data);
1276
 
                }
1277
 
 
1278
 
                public virtual S VisitIdentifier (Identifier identifier, T data)
1279
 
                {
1280
 
                        return VisitChildren (identifier, data);
1281
 
                }
1282
 
                
1283
 
                public virtual S VisitCSharpTokenNode (CSharpTokenNode token, T data)
1284
 
                {
1285
 
                        return VisitChildren (token, data);
1286
 
                }
1287
 
                
1288
 
                public virtual S VisitPrimitiveType (PrimitiveType primitiveType, T data)
1289
 
                {
1290
 
                        return VisitChildren (primitiveType, data);
1291
 
                }
1292
 
                
1293
 
                public virtual S VisitComposedType (ComposedType composedType, T data)
1294
 
                {
1295
 
                        return VisitChildren (composedType, data);
1296
 
                }
1297
 
                
1298
 
                public virtual S VisitSimpleType(SimpleType simpleType, T data)
1299
 
                {
1300
 
                        return VisitChildren (simpleType, data);
1301
 
                }
1302
 
                
1303
 
                public virtual S VisitMemberType(MemberType memberType, T data)
1304
 
                {
1305
 
                        return VisitChildren (memberType, data);
1306
 
                }
1307
 
                
1308
 
                public virtual S VisitAttribute (Attribute attribute, T data)
1309
 
                {
1310
 
                        return VisitChildren (attribute, data);
1311
 
                }
1312
 
                
1313
 
                public virtual S VisitAttributeSection (AttributeSection attributeSection, T data)
1314
 
                {
1315
 
                        return VisitChildren (attributeSection, data);
1316
 
                }
1317
 
                
1318
 
                public virtual S VisitDelegateDeclaration (DelegateDeclaration delegateDeclaration, T data)
1319
 
                {
1320
 
                        return VisitChildren (delegateDeclaration, data);
1321
 
                }
1322
 
                
1323
 
                public virtual S VisitNamespaceDeclaration (NamespaceDeclaration namespaceDeclaration, T data)
1324
 
                {
1325
 
                        return VisitChildren (namespaceDeclaration, data);
1326
 
                }
1327
 
                
1328
 
                public virtual S VisitTypeDeclaration (TypeDeclaration typeDeclaration, T data)
1329
 
                {
1330
 
                        return VisitChildren (typeDeclaration, data);
1331
 
                }
1332
 
                
1333
 
                public virtual S VisitTypeParameterDeclaration (TypeParameterDeclaration typeParameterDeclaration, T data)
1334
 
                {
1335
 
                        return VisitChildren (typeParameterDeclaration, data);
1336
 
                }
1337
 
                
1338
 
                public virtual S VisitEnumMemberDeclaration (EnumMemberDeclaration enumMemberDeclaration, T data)
1339
 
                {
1340
 
                        return VisitChildren (enumMemberDeclaration, data);
1341
 
                }
1342
 
                
1343
 
                public virtual S VisitUsingDeclaration (UsingDeclaration usingDeclaration, T data)
1344
 
                {
1345
 
                        return VisitChildren (usingDeclaration, data);
1346
 
                }
1347
 
                
1348
 
                public virtual S VisitUsingAliasDeclaration (UsingAliasDeclaration usingDeclaration, T data)
1349
 
                {
1350
 
                        return VisitChildren (usingDeclaration, data);
1351
 
                }
1352
 
                
1353
 
                public virtual S VisitExternAliasDeclaration(ExternAliasDeclaration externAliasDeclaration, T data)
1354
 
                {
1355
 
                        return VisitChildren (externAliasDeclaration, data);
1356
 
                }
1357
 
                
1358
 
                public virtual S VisitConstructorDeclaration (ConstructorDeclaration constructorDeclaration, T data)
1359
 
                {
1360
 
                        return VisitChildren (constructorDeclaration, data);
1361
 
                }
1362
 
                
1363
 
                public virtual S VisitConstructorInitializer (ConstructorInitializer constructorInitializer, T data)
1364
 
                {
1365
 
                        return VisitChildren (constructorInitializer, data);
1366
 
                }
1367
 
                
1368
 
                public virtual S VisitDestructorDeclaration (DestructorDeclaration destructorDeclaration, T data)
1369
 
                {
1370
 
                        return VisitChildren (destructorDeclaration, data);
1371
 
                }
1372
 
                
1373
 
                public virtual S VisitEventDeclaration (EventDeclaration eventDeclaration, T data)
1374
 
                {
1375
 
                        return VisitChildren (eventDeclaration, data);
1376
 
                }
1377
 
                
1378
 
                public virtual S VisitCustomEventDeclaration (CustomEventDeclaration eventDeclaration, T data)
1379
 
                {
1380
 
                        return VisitChildren (eventDeclaration, data);
1381
 
                }
1382
 
                
1383
 
                public virtual S VisitFieldDeclaration (FieldDeclaration fieldDeclaration, T data)
1384
 
                {
1385
 
                        return VisitChildren (fieldDeclaration, data);
1386
 
                }
1387
 
                
1388
 
                public virtual S VisitFixedFieldDeclaration (FixedFieldDeclaration fixedFieldDeclaration, T data)
1389
 
                {
1390
 
                        return VisitChildren (fixedFieldDeclaration, data);
1391
 
                }
1392
 
                
1393
 
                public virtual S VisitFixedVariableInitializer (FixedVariableInitializer fixedVariableInitializer, T data)
1394
 
                {
1395
 
                        return VisitChildren (fixedVariableInitializer, data);
1396
 
                }
1397
 
                
1398
 
                public virtual S VisitIndexerDeclaration (IndexerDeclaration indexerDeclaration, T data)
1399
 
                {
1400
 
                        return VisitChildren (indexerDeclaration, data);
1401
 
                }
1402
 
                
1403
 
                public virtual S VisitMethodDeclaration (MethodDeclaration methodDeclaration, T data)
1404
 
                {
1405
 
                        return VisitChildren (methodDeclaration, data);
1406
 
                }
1407
 
                
1408
 
                public virtual S VisitOperatorDeclaration (OperatorDeclaration operatorDeclaration, T data)
1409
 
                {
1410
 
                        return VisitChildren (operatorDeclaration, data);
1411
 
                }
1412
 
                
1413
 
                public virtual S VisitPropertyDeclaration (PropertyDeclaration propertyDeclaration, T data)
1414
 
                {
1415
 
                        return VisitChildren (propertyDeclaration, data);
1416
 
                }
1417
 
                
1418
 
                public virtual S VisitAccessor (Accessor accessor, T data)
1419
 
                {
1420
 
                        return VisitChildren (accessor, data);
1421
 
                }
1422
 
                
1423
 
                public virtual S VisitVariableInitializer (VariableInitializer variableInitializer, T data)
1424
 
                {
1425
 
                        return VisitChildren (variableInitializer, data);
1426
 
                }
1427
 
                
1428
 
                public virtual S VisitParameterDeclaration (ParameterDeclaration parameterDeclaration, T data)
1429
 
                {
1430
 
                        return VisitChildren (parameterDeclaration, data);
1431
 
                }
1432
 
                
1433
 
                public virtual S VisitConstraint (Constraint constraint, T data)
1434
 
                {
1435
 
                        return VisitChildren (constraint, data);
1436
 
                }
1437
 
                
1438
 
                public virtual S VisitBlockStatement (BlockStatement blockStatement, T data)
1439
 
                {
1440
 
                        return VisitChildren (blockStatement, data);
1441
 
                }
1442
 
                
1443
 
                public virtual S VisitExpressionStatement (ExpressionStatement expressionStatement, T data)
1444
 
                {
1445
 
                        return VisitChildren (expressionStatement, data);
1446
 
                }
1447
 
                
1448
 
                public virtual S VisitBreakStatement (BreakStatement breakStatement, T data)
1449
 
                {
1450
 
                        return VisitChildren (breakStatement, data);
1451
 
                }
1452
 
                
1453
 
                public virtual S VisitCheckedStatement (CheckedStatement checkedStatement, T data)
1454
 
                {
1455
 
                        return VisitChildren (checkedStatement, data);
1456
 
                }
1457
 
                
1458
 
                public virtual S VisitContinueStatement (ContinueStatement continueStatement, T data)
1459
 
                {
1460
 
                        return VisitChildren (continueStatement, data);
1461
 
                }
1462
 
                
1463
 
                public virtual S VisitDoWhileStatement (DoWhileStatement doWhileStatement, T data)
1464
 
                {
1465
 
                        return VisitChildren (doWhileStatement, data);
1466
 
                }
1467
 
                
1468
 
                public virtual S VisitEmptyStatement (EmptyStatement emptyStatement, T data)
1469
 
                {
1470
 
                        return VisitChildren (emptyStatement, data);
1471
 
                }
1472
 
                
1473
 
                public virtual S VisitFixedStatement (FixedStatement fixedStatement, T data)
1474
 
                {
1475
 
                        return VisitChildren (fixedStatement, data);
1476
 
                }
1477
 
                
1478
 
                public virtual S VisitForeachStatement (ForeachStatement foreachStatement, T data)
1479
 
                {
1480
 
                        return VisitChildren (foreachStatement, data);
1481
 
                }
1482
 
                
1483
 
                public virtual S VisitForStatement (ForStatement forStatement, T data)
1484
 
                {
1485
 
                        return VisitChildren (forStatement, data);
1486
 
                }
1487
 
                
1488
 
                public virtual S VisitGotoCaseStatement (GotoCaseStatement gotoCaseStatement, T data)
1489
 
                {
1490
 
                        return VisitChildren (gotoCaseStatement, data);
1491
 
                }
1492
 
                
1493
 
                public virtual S VisitGotoDefaultStatement (GotoDefaultStatement gotoDefaultStatement, T data)
1494
 
                {
1495
 
                        return VisitChildren (gotoDefaultStatement, data);
1496
 
                }
1497
 
                
1498
 
                public virtual S VisitGotoStatement (GotoStatement gotoStatement, T data)
1499
 
                {
1500
 
                        return VisitChildren (gotoStatement, data);
1501
 
                }
1502
 
                
1503
 
                public virtual S VisitIfElseStatement (IfElseStatement ifElseStatement, T data)
1504
 
                {
1505
 
                        return VisitChildren (ifElseStatement, data);
1506
 
                }
1507
 
                
1508
 
                public virtual S VisitLabelStatement (LabelStatement labelStatement, T data)
1509
 
                {
1510
 
                        return VisitChildren (labelStatement, data);
1511
 
                }
1512
 
                
1513
 
                public virtual S VisitLockStatement (LockStatement lockStatement, T data)
1514
 
                {
1515
 
                        return VisitChildren (lockStatement, data);
1516
 
                }
1517
 
                
1518
 
                public virtual S VisitReturnStatement (ReturnStatement returnStatement, T data)
1519
 
                {
1520
 
                        return VisitChildren (returnStatement, data);
1521
 
                }
1522
 
                
1523
 
                public virtual S VisitSwitchStatement (SwitchStatement switchStatement, T data)
1524
 
                {
1525
 
                        return VisitChildren (switchStatement, data);
1526
 
                }
1527
 
                
1528
 
                public virtual S VisitSwitchSection (SwitchSection switchSection, T data)
1529
 
                {
1530
 
                        return VisitChildren (switchSection, data);
1531
 
                }
1532
 
                
1533
 
                public virtual S VisitCaseLabel (CaseLabel caseLabel, T data)
1534
 
                {
1535
 
                        return VisitChildren (caseLabel, data);
1536
 
                }
1537
 
                
1538
 
                public virtual S VisitThrowStatement (ThrowStatement throwStatement, T data)
1539
 
                {
1540
 
                        return VisitChildren (throwStatement, data);
1541
 
                }
1542
 
                
1543
 
                public virtual S VisitTryCatchStatement (TryCatchStatement tryCatchStatement, T data)
1544
 
                {
1545
 
                        return VisitChildren (tryCatchStatement, data);
1546
 
                }
1547
 
                
1548
 
                public virtual S VisitCatchClause (CatchClause catchClause, T data)
1549
 
                {
1550
 
                        return VisitChildren (catchClause, data);
1551
 
                }
1552
 
                
1553
 
                public virtual S VisitUncheckedStatement (UncheckedStatement uncheckedStatement, T data)
1554
 
                {
1555
 
                        return VisitChildren (uncheckedStatement, data);
1556
 
                }
1557
 
                
1558
 
                public virtual S VisitUnsafeStatement (UnsafeStatement unsafeStatement, T data)
1559
 
                {
1560
 
                        return VisitChildren (unsafeStatement, data);
1561
 
                }
1562
 
                
1563
 
                public virtual S VisitUsingStatement (UsingStatement usingStatement, T data)
1564
 
                {
1565
 
                        return VisitChildren (usingStatement, data);
1566
 
                }
1567
 
                
1568
 
                public virtual S VisitVariableDeclarationStatement (VariableDeclarationStatement variableDeclarationStatement, T data)
1569
 
                {
1570
 
                        return VisitChildren (variableDeclarationStatement, data);
1571
 
                }
1572
 
                
1573
 
                public virtual S VisitWhileStatement (WhileStatement whileStatement, T data)
1574
 
                {
1575
 
                        return VisitChildren (whileStatement, data);
1576
 
                }
1577
 
                
1578
 
                public virtual S VisitYieldBreakStatement (YieldBreakStatement yieldBreakStatement, T data)
1579
 
                {
1580
 
                        return VisitChildren (yieldBreakStatement, data);
1581
 
                }
1582
 
                
1583
 
                public virtual S VisitYieldReturnStatement (YieldReturnStatement yieldReturnStatement, T data)
1584
 
                {
1585
 
                        return VisitChildren (yieldReturnStatement, data);
1586
 
                }
1587
 
                
1588
 
                public virtual S VisitAnonymousMethodExpression (AnonymousMethodExpression anonymousMethodExpression, T data)
1589
 
                {
1590
 
                        return VisitChildren (anonymousMethodExpression, data);
1591
 
                }
1592
 
                
1593
 
                public virtual S VisitLambdaExpression (LambdaExpression lambdaExpression, T data)
1594
 
                {
1595
 
                        return VisitChildren (lambdaExpression, data);
1596
 
                }
1597
 
                
1598
 
                public virtual S VisitAssignmentExpression (AssignmentExpression assignmentExpression, T data)
1599
 
                {
1600
 
                        return VisitChildren (assignmentExpression, data);
1601
 
                }
1602
 
                
1603
 
                public virtual S VisitBaseReferenceExpression (BaseReferenceExpression baseReferenceExpression, T data)
1604
 
                {
1605
 
                        return VisitChildren (baseReferenceExpression, data);
1606
 
                }
1607
 
                
1608
 
                public virtual S VisitBinaryOperatorExpression (BinaryOperatorExpression binaryOperatorExpression, T data)
1609
 
                {
1610
 
                        return VisitChildren (binaryOperatorExpression, data);
1611
 
                }
1612
 
                
1613
 
                public virtual S VisitCastExpression (CastExpression castExpression, T data)
1614
 
                {
1615
 
                        return VisitChildren (castExpression, data);
1616
 
                }
1617
 
                
1618
 
                public virtual S VisitCheckedExpression (CheckedExpression checkedExpression, T data)
1619
 
                {
1620
 
                        return VisitChildren (checkedExpression, data);
1621
 
                }
1622
 
                
1623
 
                public virtual S VisitConditionalExpression (ConditionalExpression conditionalExpression, T data)
1624
 
                {
1625
 
                        return VisitChildren (conditionalExpression, data);
1626
 
                }
1627
 
                
1628
 
                public virtual S VisitIdentifierExpression (IdentifierExpression identifierExpression, T data)
1629
 
                {
1630
 
                        return VisitChildren (identifierExpression, data);
1631
 
                }
1632
 
                
1633
 
                public virtual S VisitIndexerExpression (IndexerExpression indexerExpression, T data)
1634
 
                {
1635
 
                        return VisitChildren (indexerExpression, data);
1636
 
                }
1637
 
                
1638
 
                public virtual S VisitInvocationExpression (InvocationExpression invocationExpression, T data)
1639
 
                {
1640
 
                        return VisitChildren (invocationExpression, data);
1641
 
                }
1642
 
                
1643
 
                public virtual S VisitDirectionExpression (DirectionExpression directionExpression, T data)
1644
 
                {
1645
 
                        return VisitChildren (directionExpression, data);
1646
 
                }
1647
 
                
1648
 
                public virtual S VisitMemberReferenceExpression (MemberReferenceExpression memberReferenceExpression, T data)
1649
 
                {
1650
 
                        return VisitChildren (memberReferenceExpression, data);
1651
 
                }
1652
 
                
1653
 
                public virtual S VisitNullReferenceExpression (NullReferenceExpression nullReferenceExpression, T data)
1654
 
                {
1655
 
                        return VisitChildren (nullReferenceExpression, data);
1656
 
                }
1657
 
                
1658
 
                public virtual S VisitObjectCreateExpression (ObjectCreateExpression objectCreateExpression, T data)
1659
 
                {
1660
 
                        return VisitChildren (objectCreateExpression, data);
1661
 
                }
1662
 
                
1663
 
                public virtual S VisitAnonymousTypeCreateExpression(AnonymousTypeCreateExpression anonymousTypeCreateExpression, T data)
1664
 
                {
1665
 
                        return VisitChildren (anonymousTypeCreateExpression, data);
1666
 
                }
1667
 
                
1668
 
                public virtual S VisitArrayCreateExpression (ArrayCreateExpression arrayCreateExpression, T data)
1669
 
                {
1670
 
                        return VisitChildren (arrayCreateExpression, data);
1671
 
                }
1672
 
                
1673
 
                public virtual S VisitParenthesizedExpression (ParenthesizedExpression parenthesizedExpression, T data)
1674
 
                {
1675
 
                        return VisitChildren (parenthesizedExpression, data);
1676
 
                }
1677
 
                
1678
 
                public virtual S VisitPointerReferenceExpression (PointerReferenceExpression pointerReferenceExpression, T data)
1679
 
                {
1680
 
                        return VisitChildren (pointerReferenceExpression, data);
1681
 
                }
1682
 
                
1683
 
                public virtual S VisitPrimitiveExpression(PrimitiveExpression primitiveExpression, T data)
1684
 
                {
1685
 
                        return VisitChildren (primitiveExpression, data);
1686
 
                }
1687
 
                
1688
 
                public virtual S VisitSizeOfExpression (SizeOfExpression sizeOfExpression, T data)
1689
 
                {
1690
 
                        return VisitChildren (sizeOfExpression, data);
1691
 
                }
1692
 
                
1693
 
                public virtual S VisitStackAllocExpression (StackAllocExpression stackAllocExpression, T data)
1694
 
                {
1695
 
                        return VisitChildren (stackAllocExpression, data);
1696
 
                }
1697
 
                
1698
 
                public virtual S VisitThisReferenceExpression(ThisReferenceExpression thisReferenceExpression, T data)
1699
 
                {
1700
 
                        return VisitChildren (thisReferenceExpression, data);
1701
 
                }
1702
 
                
1703
 
                public virtual S VisitTypeOfExpression (TypeOfExpression typeOfExpression, T data)
1704
 
                {
1705
 
                        return VisitChildren (typeOfExpression, data);
1706
 
                }
1707
 
                
1708
 
                public virtual S VisitTypeReferenceExpression(TypeReferenceExpression typeReferenceExpression, T data)
1709
 
                {
1710
 
                        return VisitChildren (typeReferenceExpression, data);
1711
 
                }
1712
 
                
1713
 
                public virtual S VisitUnaryOperatorExpression (UnaryOperatorExpression unaryOperatorExpression, T data)
1714
 
                {
1715
 
                        return VisitChildren (unaryOperatorExpression, data);
1716
 
                }
1717
 
                
1718
 
                public virtual S VisitUncheckedExpression (UncheckedExpression uncheckedExpression, T data)
1719
 
                {
1720
 
                        return VisitChildren (uncheckedExpression, data);
1721
 
                }
1722
 
                
1723
 
                public virtual S VisitQueryExpression(QueryExpression queryExpression, T data)
1724
 
                {
1725
 
                        return VisitChildren (queryExpression, data);
1726
 
                }
1727
 
                
1728
 
                public virtual S VisitQueryContinuationClause(QueryContinuationClause queryContinuationClause, T data)
1729
 
                {
1730
 
                        return VisitChildren (queryContinuationClause, data);
1731
 
                }
1732
 
                
1733
 
                public virtual S VisitQueryFromClause(QueryFromClause queryFromClause, T data)
1734
 
                {
1735
 
                        return VisitChildren (queryFromClause, data);
1736
 
                }
1737
 
                
1738
 
                public virtual S VisitQueryLetClause(QueryLetClause queryLetClause, T data)
1739
 
                {
1740
 
                        return VisitChildren (queryLetClause, data);
1741
 
                }
1742
 
                
1743
 
                public virtual S VisitQueryWhereClause(QueryWhereClause queryWhereClause, T data)
1744
 
                {
1745
 
                        return VisitChildren (queryWhereClause, data);
1746
 
                }
1747
 
                
1748
 
                public virtual S VisitQueryJoinClause(QueryJoinClause queryJoinClause, T data)
1749
 
                {
1750
 
                        return VisitChildren (queryJoinClause, data);
1751
 
                }
1752
 
                
1753
 
                public virtual S VisitQueryOrderClause(QueryOrderClause queryOrderClause, T data)
1754
 
                {
1755
 
                        return VisitChildren (queryOrderClause, data);
1756
 
                }
1757
 
                
1758
 
                public virtual S VisitQueryOrdering(QueryOrdering queryOrdering, T data)
1759
 
                {
1760
 
                        return VisitChildren (queryOrdering, data);
1761
 
                }
1762
 
                
1763
 
                public virtual S VisitQuerySelectClause(QuerySelectClause querySelectClause, T data)
1764
 
                {
1765
 
                        return VisitChildren (querySelectClause, data);
1766
 
                }
1767
 
                
1768
 
                public virtual S VisitQueryGroupClause(QueryGroupClause queryGroupClause, T data)
1769
 
                {
1770
 
                        return VisitChildren (queryGroupClause, data);
1771
 
                }
1772
 
                
1773
 
                public virtual S VisitAsExpression (AsExpression asExpression, T data)
1774
 
                {
1775
 
                        return VisitChildren (asExpression, data);
1776
 
                }
1777
 
                
1778
 
                public virtual S VisitIsExpression (IsExpression isExpression, T data)
1779
 
                {
1780
 
                        return VisitChildren (isExpression, data);
1781
 
                }
1782
 
                
1783
 
                public virtual S VisitDefaultValueExpression (DefaultValueExpression defaultValueExpression, T data)
1784
 
                {
1785
 
                        return VisitChildren (defaultValueExpression, data);
1786
 
                }
1787
 
                
1788
 
                public virtual S VisitUndocumentedExpression (UndocumentedExpression undocumentedExpression, T data)
1789
 
                {
1790
 
                        return VisitChildren (undocumentedExpression, data);
1791
 
                }
1792
 
                
1793
 
                public virtual S VisitArrayInitializerExpression (ArrayInitializerExpression arrayInitializerExpression, T data)
1794
 
                {
1795
 
                        return VisitChildren (arrayInitializerExpression, data);
1796
 
                }
1797
 
                
1798
 
                public virtual S VisitArraySpecifier (ArraySpecifier arraySpecifier, T data)
1799
 
                {
1800
 
                        return VisitChildren (arraySpecifier, data);
1801
 
                }
1802
 
                
1803
 
                public virtual S VisitNamedArgumentExpression (NamedArgumentExpression namedArgumentExpression, T data)
1804
 
                {
1805
 
                        return VisitChildren (namedArgumentExpression, data);
1806
 
                }
1807
 
                
1808
 
                public virtual S VisitNamedExpression (NamedExpression namedExpression, T data)
1809
 
                {
1810
 
                        return VisitChildren (namedExpression, data);
1811
 
                }
1812
 
                
1813
 
                public virtual S VisitEmptyExpression (EmptyExpression emptyExpression, T data)
1814
 
                {
1815
 
                        return VisitChildren (emptyExpression, data);
1816
 
                }
1817
 
                
1818
 
                public virtual S VisitPatternPlaceholder(AstNode placeholder, PatternMatching.Pattern pattern, T data)
1819
 
                {
1820
 
                        return VisitChildren (placeholder, data);
1821
 
                }
1822
 
        }
1823
 
}