1// Code generated by mknode.go. DO NOT EDIT.
2
3package ir
4
5import "fmt"
6
7func (n *AddStringExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
8func (n *AddStringExpr) copy() Node {
9	c := *n
10	c.init = copyNodes(c.init)
11	c.List = copyNodes(c.List)
12	return &c
13}
14func (n *AddStringExpr) doChildren(do func(Node) bool) bool {
15	if doNodes(n.init, do) {
16		return true
17	}
18	if doNodes(n.List, do) {
19		return true
20	}
21	if n.Prealloc != nil && do(n.Prealloc) {
22		return true
23	}
24	return false
25}
26func (n *AddStringExpr) editChildren(edit func(Node) Node) {
27	editNodes(n.init, edit)
28	editNodes(n.List, edit)
29	if n.Prealloc != nil {
30		n.Prealloc = edit(n.Prealloc).(*Name)
31	}
32}
33func (n *AddStringExpr) editChildrenWithHidden(edit func(Node) Node) {
34	editNodes(n.init, edit)
35	editNodes(n.List, edit)
36	if n.Prealloc != nil {
37		n.Prealloc = edit(n.Prealloc).(*Name)
38	}
39}
40
41func (n *AddrExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
42func (n *AddrExpr) copy() Node {
43	c := *n
44	c.init = copyNodes(c.init)
45	return &c
46}
47func (n *AddrExpr) doChildren(do func(Node) bool) bool {
48	if doNodes(n.init, do) {
49		return true
50	}
51	if n.X != nil && do(n.X) {
52		return true
53	}
54	if n.Prealloc != nil && do(n.Prealloc) {
55		return true
56	}
57	return false
58}
59func (n *AddrExpr) editChildren(edit func(Node) Node) {
60	editNodes(n.init, edit)
61	if n.X != nil {
62		n.X = edit(n.X).(Node)
63	}
64	if n.Prealloc != nil {
65		n.Prealloc = edit(n.Prealloc).(*Name)
66	}
67}
68func (n *AddrExpr) editChildrenWithHidden(edit func(Node) Node) {
69	editNodes(n.init, edit)
70	if n.X != nil {
71		n.X = edit(n.X).(Node)
72	}
73	if n.Prealloc != nil {
74		n.Prealloc = edit(n.Prealloc).(*Name)
75	}
76}
77
78func (n *AssignListStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
79func (n *AssignListStmt) copy() Node {
80	c := *n
81	c.init = copyNodes(c.init)
82	c.Lhs = copyNodes(c.Lhs)
83	c.Rhs = copyNodes(c.Rhs)
84	return &c
85}
86func (n *AssignListStmt) doChildren(do func(Node) bool) bool {
87	if doNodes(n.init, do) {
88		return true
89	}
90	if doNodes(n.Lhs, do) {
91		return true
92	}
93	if doNodes(n.Rhs, do) {
94		return true
95	}
96	return false
97}
98func (n *AssignListStmt) editChildren(edit func(Node) Node) {
99	editNodes(n.init, edit)
100	editNodes(n.Lhs, edit)
101	editNodes(n.Rhs, edit)
102}
103func (n *AssignListStmt) editChildrenWithHidden(edit func(Node) Node) {
104	editNodes(n.init, edit)
105	editNodes(n.Lhs, edit)
106	editNodes(n.Rhs, edit)
107}
108
109func (n *AssignOpStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
110func (n *AssignOpStmt) copy() Node {
111	c := *n
112	c.init = copyNodes(c.init)
113	return &c
114}
115func (n *AssignOpStmt) doChildren(do func(Node) bool) bool {
116	if doNodes(n.init, do) {
117		return true
118	}
119	if n.X != nil && do(n.X) {
120		return true
121	}
122	if n.Y != nil && do(n.Y) {
123		return true
124	}
125	return false
126}
127func (n *AssignOpStmt) editChildren(edit func(Node) Node) {
128	editNodes(n.init, edit)
129	if n.X != nil {
130		n.X = edit(n.X).(Node)
131	}
132	if n.Y != nil {
133		n.Y = edit(n.Y).(Node)
134	}
135}
136func (n *AssignOpStmt) editChildrenWithHidden(edit func(Node) Node) {
137	editNodes(n.init, edit)
138	if n.X != nil {
139		n.X = edit(n.X).(Node)
140	}
141	if n.Y != nil {
142		n.Y = edit(n.Y).(Node)
143	}
144}
145
146func (n *AssignStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
147func (n *AssignStmt) copy() Node {
148	c := *n
149	c.init = copyNodes(c.init)
150	return &c
151}
152func (n *AssignStmt) doChildren(do func(Node) bool) bool {
153	if doNodes(n.init, do) {
154		return true
155	}
156	if n.X != nil && do(n.X) {
157		return true
158	}
159	if n.Y != nil && do(n.Y) {
160		return true
161	}
162	return false
163}
164func (n *AssignStmt) editChildren(edit func(Node) Node) {
165	editNodes(n.init, edit)
166	if n.X != nil {
167		n.X = edit(n.X).(Node)
168	}
169	if n.Y != nil {
170		n.Y = edit(n.Y).(Node)
171	}
172}
173func (n *AssignStmt) editChildrenWithHidden(edit func(Node) Node) {
174	editNodes(n.init, edit)
175	if n.X != nil {
176		n.X = edit(n.X).(Node)
177	}
178	if n.Y != nil {
179		n.Y = edit(n.Y).(Node)
180	}
181}
182
183func (n *BasicLit) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
184func (n *BasicLit) copy() Node {
185	c := *n
186	c.init = copyNodes(c.init)
187	return &c
188}
189func (n *BasicLit) doChildren(do func(Node) bool) bool {
190	if doNodes(n.init, do) {
191		return true
192	}
193	return false
194}
195func (n *BasicLit) editChildren(edit func(Node) Node) {
196	editNodes(n.init, edit)
197}
198func (n *BasicLit) editChildrenWithHidden(edit func(Node) Node) {
199	editNodes(n.init, edit)
200}
201
202func (n *BinaryExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
203func (n *BinaryExpr) copy() Node {
204	c := *n
205	c.init = copyNodes(c.init)
206	return &c
207}
208func (n *BinaryExpr) doChildren(do func(Node) bool) bool {
209	if doNodes(n.init, do) {
210		return true
211	}
212	if n.X != nil && do(n.X) {
213		return true
214	}
215	if n.Y != nil && do(n.Y) {
216		return true
217	}
218	return false
219}
220func (n *BinaryExpr) editChildren(edit func(Node) Node) {
221	editNodes(n.init, edit)
222	if n.X != nil {
223		n.X = edit(n.X).(Node)
224	}
225	if n.Y != nil {
226		n.Y = edit(n.Y).(Node)
227	}
228}
229func (n *BinaryExpr) editChildrenWithHidden(edit func(Node) Node) {
230	editNodes(n.init, edit)
231	if n.X != nil {
232		n.X = edit(n.X).(Node)
233	}
234	if n.Y != nil {
235		n.Y = edit(n.Y).(Node)
236	}
237	if n.RType != nil {
238		n.RType = edit(n.RType).(Node)
239	}
240}
241
242func (n *BlockStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
243func (n *BlockStmt) copy() Node {
244	c := *n
245	c.init = copyNodes(c.init)
246	c.List = copyNodes(c.List)
247	return &c
248}
249func (n *BlockStmt) doChildren(do func(Node) bool) bool {
250	if doNodes(n.init, do) {
251		return true
252	}
253	if doNodes(n.List, do) {
254		return true
255	}
256	return false
257}
258func (n *BlockStmt) editChildren(edit func(Node) Node) {
259	editNodes(n.init, edit)
260	editNodes(n.List, edit)
261}
262func (n *BlockStmt) editChildrenWithHidden(edit func(Node) Node) {
263	editNodes(n.init, edit)
264	editNodes(n.List, edit)
265}
266
267func (n *BranchStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
268func (n *BranchStmt) copy() Node {
269	c := *n
270	c.init = copyNodes(c.init)
271	return &c
272}
273func (n *BranchStmt) doChildren(do func(Node) bool) bool {
274	if doNodes(n.init, do) {
275		return true
276	}
277	return false
278}
279func (n *BranchStmt) editChildren(edit func(Node) Node) {
280	editNodes(n.init, edit)
281}
282func (n *BranchStmt) editChildrenWithHidden(edit func(Node) Node) {
283	editNodes(n.init, edit)
284}
285
286func (n *CallExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
287func (n *CallExpr) copy() Node {
288	c := *n
289	c.init = copyNodes(c.init)
290	c.Args = copyNodes(c.Args)
291	c.KeepAlive = copyNames(c.KeepAlive)
292	return &c
293}
294func (n *CallExpr) doChildren(do func(Node) bool) bool {
295	if doNodes(n.init, do) {
296		return true
297	}
298	if n.Fun != nil && do(n.Fun) {
299		return true
300	}
301	if doNodes(n.Args, do) {
302		return true
303	}
304	if doNames(n.KeepAlive, do) {
305		return true
306	}
307	return false
308}
309func (n *CallExpr) editChildren(edit func(Node) Node) {
310	editNodes(n.init, edit)
311	if n.Fun != nil {
312		n.Fun = edit(n.Fun).(Node)
313	}
314	editNodes(n.Args, edit)
315	editNames(n.KeepAlive, edit)
316}
317func (n *CallExpr) editChildrenWithHidden(edit func(Node) Node) {
318	editNodes(n.init, edit)
319	if n.Fun != nil {
320		n.Fun = edit(n.Fun).(Node)
321	}
322	editNodes(n.Args, edit)
323	if n.RType != nil {
324		n.RType = edit(n.RType).(Node)
325	}
326	editNames(n.KeepAlive, edit)
327}
328
329func (n *CaseClause) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
330func (n *CaseClause) copy() Node {
331	c := *n
332	c.init = copyNodes(c.init)
333	c.List = copyNodes(c.List)
334	c.RTypes = copyNodes(c.RTypes)
335	c.Body = copyNodes(c.Body)
336	return &c
337}
338func (n *CaseClause) doChildren(do func(Node) bool) bool {
339	if doNodes(n.init, do) {
340		return true
341	}
342	if n.Var != nil && do(n.Var) {
343		return true
344	}
345	if doNodes(n.List, do) {
346		return true
347	}
348	if doNodes(n.RTypes, do) {
349		return true
350	}
351	if doNodes(n.Body, do) {
352		return true
353	}
354	return false
355}
356func (n *CaseClause) editChildren(edit func(Node) Node) {
357	editNodes(n.init, edit)
358	if n.Var != nil {
359		n.Var = edit(n.Var).(*Name)
360	}
361	editNodes(n.List, edit)
362	editNodes(n.RTypes, edit)
363	editNodes(n.Body, edit)
364}
365func (n *CaseClause) editChildrenWithHidden(edit func(Node) Node) {
366	editNodes(n.init, edit)
367	if n.Var != nil {
368		n.Var = edit(n.Var).(*Name)
369	}
370	editNodes(n.List, edit)
371	editNodes(n.RTypes, edit)
372	editNodes(n.Body, edit)
373}
374
375func (n *ClosureExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
376func (n *ClosureExpr) copy() Node {
377	c := *n
378	c.init = copyNodes(c.init)
379	return &c
380}
381func (n *ClosureExpr) doChildren(do func(Node) bool) bool {
382	if doNodes(n.init, do) {
383		return true
384	}
385	if n.Prealloc != nil && do(n.Prealloc) {
386		return true
387	}
388	return false
389}
390func (n *ClosureExpr) editChildren(edit func(Node) Node) {
391	editNodes(n.init, edit)
392	if n.Prealloc != nil {
393		n.Prealloc = edit(n.Prealloc).(*Name)
394	}
395}
396func (n *ClosureExpr) editChildrenWithHidden(edit func(Node) Node) {
397	editNodes(n.init, edit)
398	if n.Prealloc != nil {
399		n.Prealloc = edit(n.Prealloc).(*Name)
400	}
401}
402
403func (n *CommClause) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
404func (n *CommClause) copy() Node {
405	c := *n
406	c.init = copyNodes(c.init)
407	c.Body = copyNodes(c.Body)
408	return &c
409}
410func (n *CommClause) doChildren(do func(Node) bool) bool {
411	if doNodes(n.init, do) {
412		return true
413	}
414	if n.Comm != nil && do(n.Comm) {
415		return true
416	}
417	if doNodes(n.Body, do) {
418		return true
419	}
420	return false
421}
422func (n *CommClause) editChildren(edit func(Node) Node) {
423	editNodes(n.init, edit)
424	if n.Comm != nil {
425		n.Comm = edit(n.Comm).(Node)
426	}
427	editNodes(n.Body, edit)
428}
429func (n *CommClause) editChildrenWithHidden(edit func(Node) Node) {
430	editNodes(n.init, edit)
431	if n.Comm != nil {
432		n.Comm = edit(n.Comm).(Node)
433	}
434	editNodes(n.Body, edit)
435}
436
437func (n *CompLitExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
438func (n *CompLitExpr) copy() Node {
439	c := *n
440	c.init = copyNodes(c.init)
441	c.List = copyNodes(c.List)
442	return &c
443}
444func (n *CompLitExpr) doChildren(do func(Node) bool) bool {
445	if doNodes(n.init, do) {
446		return true
447	}
448	if doNodes(n.List, do) {
449		return true
450	}
451	if n.Prealloc != nil && do(n.Prealloc) {
452		return true
453	}
454	return false
455}
456func (n *CompLitExpr) editChildren(edit func(Node) Node) {
457	editNodes(n.init, edit)
458	editNodes(n.List, edit)
459	if n.Prealloc != nil {
460		n.Prealloc = edit(n.Prealloc).(*Name)
461	}
462}
463func (n *CompLitExpr) editChildrenWithHidden(edit func(Node) Node) {
464	editNodes(n.init, edit)
465	editNodes(n.List, edit)
466	if n.RType != nil {
467		n.RType = edit(n.RType).(Node)
468	}
469	if n.Prealloc != nil {
470		n.Prealloc = edit(n.Prealloc).(*Name)
471	}
472}
473
474func (n *ConvExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
475func (n *ConvExpr) copy() Node {
476	c := *n
477	c.init = copyNodes(c.init)
478	return &c
479}
480func (n *ConvExpr) doChildren(do func(Node) bool) bool {
481	if doNodes(n.init, do) {
482		return true
483	}
484	if n.X != nil && do(n.X) {
485		return true
486	}
487	return false
488}
489func (n *ConvExpr) editChildren(edit func(Node) Node) {
490	editNodes(n.init, edit)
491	if n.X != nil {
492		n.X = edit(n.X).(Node)
493	}
494}
495func (n *ConvExpr) editChildrenWithHidden(edit func(Node) Node) {
496	editNodes(n.init, edit)
497	if n.X != nil {
498		n.X = edit(n.X).(Node)
499	}
500	if n.TypeWord != nil {
501		n.TypeWord = edit(n.TypeWord).(Node)
502	}
503	if n.SrcRType != nil {
504		n.SrcRType = edit(n.SrcRType).(Node)
505	}
506	if n.ElemRType != nil {
507		n.ElemRType = edit(n.ElemRType).(Node)
508	}
509	if n.ElemElemRType != nil {
510		n.ElemElemRType = edit(n.ElemElemRType).(Node)
511	}
512}
513
514func (n *Decl) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
515func (n *Decl) copy() Node {
516	c := *n
517	return &c
518}
519func (n *Decl) doChildren(do func(Node) bool) bool {
520	if n.X != nil && do(n.X) {
521		return true
522	}
523	return false
524}
525func (n *Decl) editChildren(edit func(Node) Node) {
526	if n.X != nil {
527		n.X = edit(n.X).(*Name)
528	}
529}
530func (n *Decl) editChildrenWithHidden(edit func(Node) Node) {
531	if n.X != nil {
532		n.X = edit(n.X).(*Name)
533	}
534}
535
536func (n *DynamicType) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
537func (n *DynamicType) copy() Node {
538	c := *n
539	c.init = copyNodes(c.init)
540	return &c
541}
542func (n *DynamicType) doChildren(do func(Node) bool) bool {
543	if doNodes(n.init, do) {
544		return true
545	}
546	if n.RType != nil && do(n.RType) {
547		return true
548	}
549	if n.ITab != nil && do(n.ITab) {
550		return true
551	}
552	return false
553}
554func (n *DynamicType) editChildren(edit func(Node) Node) {
555	editNodes(n.init, edit)
556	if n.RType != nil {
557		n.RType = edit(n.RType).(Node)
558	}
559	if n.ITab != nil {
560		n.ITab = edit(n.ITab).(Node)
561	}
562}
563func (n *DynamicType) editChildrenWithHidden(edit func(Node) Node) {
564	editNodes(n.init, edit)
565	if n.RType != nil {
566		n.RType = edit(n.RType).(Node)
567	}
568	if n.ITab != nil {
569		n.ITab = edit(n.ITab).(Node)
570	}
571}
572
573func (n *DynamicTypeAssertExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
574func (n *DynamicTypeAssertExpr) copy() Node {
575	c := *n
576	c.init = copyNodes(c.init)
577	return &c
578}
579func (n *DynamicTypeAssertExpr) doChildren(do func(Node) bool) bool {
580	if doNodes(n.init, do) {
581		return true
582	}
583	if n.X != nil && do(n.X) {
584		return true
585	}
586	if n.SrcRType != nil && do(n.SrcRType) {
587		return true
588	}
589	if n.RType != nil && do(n.RType) {
590		return true
591	}
592	if n.ITab != nil && do(n.ITab) {
593		return true
594	}
595	return false
596}
597func (n *DynamicTypeAssertExpr) editChildren(edit func(Node) Node) {
598	editNodes(n.init, edit)
599	if n.X != nil {
600		n.X = edit(n.X).(Node)
601	}
602	if n.SrcRType != nil {
603		n.SrcRType = edit(n.SrcRType).(Node)
604	}
605	if n.RType != nil {
606		n.RType = edit(n.RType).(Node)
607	}
608	if n.ITab != nil {
609		n.ITab = edit(n.ITab).(Node)
610	}
611}
612func (n *DynamicTypeAssertExpr) editChildrenWithHidden(edit func(Node) Node) {
613	editNodes(n.init, edit)
614	if n.X != nil {
615		n.X = edit(n.X).(Node)
616	}
617	if n.SrcRType != nil {
618		n.SrcRType = edit(n.SrcRType).(Node)
619	}
620	if n.RType != nil {
621		n.RType = edit(n.RType).(Node)
622	}
623	if n.ITab != nil {
624		n.ITab = edit(n.ITab).(Node)
625	}
626}
627
628func (n *ForStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
629func (n *ForStmt) copy() Node {
630	c := *n
631	c.init = copyNodes(c.init)
632	c.Body = copyNodes(c.Body)
633	return &c
634}
635func (n *ForStmt) doChildren(do func(Node) bool) bool {
636	if doNodes(n.init, do) {
637		return true
638	}
639	if n.Cond != nil && do(n.Cond) {
640		return true
641	}
642	if n.Post != nil && do(n.Post) {
643		return true
644	}
645	if doNodes(n.Body, do) {
646		return true
647	}
648	return false
649}
650func (n *ForStmt) editChildren(edit func(Node) Node) {
651	editNodes(n.init, edit)
652	if n.Cond != nil {
653		n.Cond = edit(n.Cond).(Node)
654	}
655	if n.Post != nil {
656		n.Post = edit(n.Post).(Node)
657	}
658	editNodes(n.Body, edit)
659}
660func (n *ForStmt) editChildrenWithHidden(edit func(Node) Node) {
661	editNodes(n.init, edit)
662	if n.Cond != nil {
663		n.Cond = edit(n.Cond).(Node)
664	}
665	if n.Post != nil {
666		n.Post = edit(n.Post).(Node)
667	}
668	editNodes(n.Body, edit)
669}
670
671func (n *Func) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
672
673func (n *GoDeferStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
674func (n *GoDeferStmt) copy() Node {
675	c := *n
676	c.init = copyNodes(c.init)
677	return &c
678}
679func (n *GoDeferStmt) doChildren(do func(Node) bool) bool {
680	if doNodes(n.init, do) {
681		return true
682	}
683	if n.Call != nil && do(n.Call) {
684		return true
685	}
686	return false
687}
688func (n *GoDeferStmt) editChildren(edit func(Node) Node) {
689	editNodes(n.init, edit)
690	if n.Call != nil {
691		n.Call = edit(n.Call).(Node)
692	}
693}
694func (n *GoDeferStmt) editChildrenWithHidden(edit func(Node) Node) {
695	editNodes(n.init, edit)
696	if n.Call != nil {
697		n.Call = edit(n.Call).(Node)
698	}
699}
700
701func (n *Ident) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
702func (n *Ident) copy() Node {
703	c := *n
704	c.init = copyNodes(c.init)
705	return &c
706}
707func (n *Ident) doChildren(do func(Node) bool) bool {
708	if doNodes(n.init, do) {
709		return true
710	}
711	return false
712}
713func (n *Ident) editChildren(edit func(Node) Node) {
714	editNodes(n.init, edit)
715}
716func (n *Ident) editChildrenWithHidden(edit func(Node) Node) {
717	editNodes(n.init, edit)
718}
719
720func (n *IfStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
721func (n *IfStmt) copy() Node {
722	c := *n
723	c.init = copyNodes(c.init)
724	c.Body = copyNodes(c.Body)
725	c.Else = copyNodes(c.Else)
726	return &c
727}
728func (n *IfStmt) doChildren(do func(Node) bool) bool {
729	if doNodes(n.init, do) {
730		return true
731	}
732	if n.Cond != nil && do(n.Cond) {
733		return true
734	}
735	if doNodes(n.Body, do) {
736		return true
737	}
738	if doNodes(n.Else, do) {
739		return true
740	}
741	return false
742}
743func (n *IfStmt) editChildren(edit func(Node) Node) {
744	editNodes(n.init, edit)
745	if n.Cond != nil {
746		n.Cond = edit(n.Cond).(Node)
747	}
748	editNodes(n.Body, edit)
749	editNodes(n.Else, edit)
750}
751func (n *IfStmt) editChildrenWithHidden(edit func(Node) Node) {
752	editNodes(n.init, edit)
753	if n.Cond != nil {
754		n.Cond = edit(n.Cond).(Node)
755	}
756	editNodes(n.Body, edit)
757	editNodes(n.Else, edit)
758}
759
760func (n *IndexExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
761func (n *IndexExpr) copy() Node {
762	c := *n
763	c.init = copyNodes(c.init)
764	return &c
765}
766func (n *IndexExpr) doChildren(do func(Node) bool) bool {
767	if doNodes(n.init, do) {
768		return true
769	}
770	if n.X != nil && do(n.X) {
771		return true
772	}
773	if n.Index != nil && do(n.Index) {
774		return true
775	}
776	return false
777}
778func (n *IndexExpr) editChildren(edit func(Node) Node) {
779	editNodes(n.init, edit)
780	if n.X != nil {
781		n.X = edit(n.X).(Node)
782	}
783	if n.Index != nil {
784		n.Index = edit(n.Index).(Node)
785	}
786}
787func (n *IndexExpr) editChildrenWithHidden(edit func(Node) Node) {
788	editNodes(n.init, edit)
789	if n.X != nil {
790		n.X = edit(n.X).(Node)
791	}
792	if n.Index != nil {
793		n.Index = edit(n.Index).(Node)
794	}
795	if n.RType != nil {
796		n.RType = edit(n.RType).(Node)
797	}
798}
799
800func (n *InlineMarkStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
801func (n *InlineMarkStmt) copy() Node {
802	c := *n
803	c.init = copyNodes(c.init)
804	return &c
805}
806func (n *InlineMarkStmt) doChildren(do func(Node) bool) bool {
807	if doNodes(n.init, do) {
808		return true
809	}
810	return false
811}
812func (n *InlineMarkStmt) editChildren(edit func(Node) Node) {
813	editNodes(n.init, edit)
814}
815func (n *InlineMarkStmt) editChildrenWithHidden(edit func(Node) Node) {
816	editNodes(n.init, edit)
817}
818
819func (n *InlinedCallExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
820func (n *InlinedCallExpr) copy() Node {
821	c := *n
822	c.init = copyNodes(c.init)
823	c.Body = copyNodes(c.Body)
824	c.ReturnVars = copyNodes(c.ReturnVars)
825	return &c
826}
827func (n *InlinedCallExpr) doChildren(do func(Node) bool) bool {
828	if doNodes(n.init, do) {
829		return true
830	}
831	if doNodes(n.Body, do) {
832		return true
833	}
834	if doNodes(n.ReturnVars, do) {
835		return true
836	}
837	return false
838}
839func (n *InlinedCallExpr) editChildren(edit func(Node) Node) {
840	editNodes(n.init, edit)
841	editNodes(n.Body, edit)
842	editNodes(n.ReturnVars, edit)
843}
844func (n *InlinedCallExpr) editChildrenWithHidden(edit func(Node) Node) {
845	editNodes(n.init, edit)
846	editNodes(n.Body, edit)
847	editNodes(n.ReturnVars, edit)
848}
849
850func (n *InterfaceSwitchStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
851func (n *InterfaceSwitchStmt) copy() Node {
852	c := *n
853	c.init = copyNodes(c.init)
854	return &c
855}
856func (n *InterfaceSwitchStmt) doChildren(do func(Node) bool) bool {
857	if doNodes(n.init, do) {
858		return true
859	}
860	if n.Case != nil && do(n.Case) {
861		return true
862	}
863	if n.Itab != nil && do(n.Itab) {
864		return true
865	}
866	if n.RuntimeType != nil && do(n.RuntimeType) {
867		return true
868	}
869	return false
870}
871func (n *InterfaceSwitchStmt) editChildren(edit func(Node) Node) {
872	editNodes(n.init, edit)
873	if n.Case != nil {
874		n.Case = edit(n.Case).(Node)
875	}
876	if n.Itab != nil {
877		n.Itab = edit(n.Itab).(Node)
878	}
879	if n.RuntimeType != nil {
880		n.RuntimeType = edit(n.RuntimeType).(Node)
881	}
882}
883func (n *InterfaceSwitchStmt) editChildrenWithHidden(edit func(Node) Node) {
884	editNodes(n.init, edit)
885	if n.Case != nil {
886		n.Case = edit(n.Case).(Node)
887	}
888	if n.Itab != nil {
889		n.Itab = edit(n.Itab).(Node)
890	}
891	if n.RuntimeType != nil {
892		n.RuntimeType = edit(n.RuntimeType).(Node)
893	}
894}
895
896func (n *JumpTableStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
897func (n *JumpTableStmt) copy() Node {
898	c := *n
899	c.init = copyNodes(c.init)
900	return &c
901}
902func (n *JumpTableStmt) doChildren(do func(Node) bool) bool {
903	if doNodes(n.init, do) {
904		return true
905	}
906	if n.Idx != nil && do(n.Idx) {
907		return true
908	}
909	return false
910}
911func (n *JumpTableStmt) editChildren(edit func(Node) Node) {
912	editNodes(n.init, edit)
913	if n.Idx != nil {
914		n.Idx = edit(n.Idx).(Node)
915	}
916}
917func (n *JumpTableStmt) editChildrenWithHidden(edit func(Node) Node) {
918	editNodes(n.init, edit)
919	if n.Idx != nil {
920		n.Idx = edit(n.Idx).(Node)
921	}
922}
923
924func (n *KeyExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
925func (n *KeyExpr) copy() Node {
926	c := *n
927	c.init = copyNodes(c.init)
928	return &c
929}
930func (n *KeyExpr) doChildren(do func(Node) bool) bool {
931	if doNodes(n.init, do) {
932		return true
933	}
934	if n.Key != nil && do(n.Key) {
935		return true
936	}
937	if n.Value != nil && do(n.Value) {
938		return true
939	}
940	return false
941}
942func (n *KeyExpr) editChildren(edit func(Node) Node) {
943	editNodes(n.init, edit)
944	if n.Key != nil {
945		n.Key = edit(n.Key).(Node)
946	}
947	if n.Value != nil {
948		n.Value = edit(n.Value).(Node)
949	}
950}
951func (n *KeyExpr) editChildrenWithHidden(edit func(Node) Node) {
952	editNodes(n.init, edit)
953	if n.Key != nil {
954		n.Key = edit(n.Key).(Node)
955	}
956	if n.Value != nil {
957		n.Value = edit(n.Value).(Node)
958	}
959}
960
961func (n *LabelStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
962func (n *LabelStmt) copy() Node {
963	c := *n
964	c.init = copyNodes(c.init)
965	return &c
966}
967func (n *LabelStmt) doChildren(do func(Node) bool) bool {
968	if doNodes(n.init, do) {
969		return true
970	}
971	return false
972}
973func (n *LabelStmt) editChildren(edit func(Node) Node) {
974	editNodes(n.init, edit)
975}
976func (n *LabelStmt) editChildrenWithHidden(edit func(Node) Node) {
977	editNodes(n.init, edit)
978}
979
980func (n *LinksymOffsetExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
981func (n *LinksymOffsetExpr) copy() Node {
982	c := *n
983	c.init = copyNodes(c.init)
984	return &c
985}
986func (n *LinksymOffsetExpr) doChildren(do func(Node) bool) bool {
987	if doNodes(n.init, do) {
988		return true
989	}
990	return false
991}
992func (n *LinksymOffsetExpr) editChildren(edit func(Node) Node) {
993	editNodes(n.init, edit)
994}
995func (n *LinksymOffsetExpr) editChildrenWithHidden(edit func(Node) Node) {
996	editNodes(n.init, edit)
997}
998
999func (n *LogicalExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
1000func (n *LogicalExpr) copy() Node {
1001	c := *n
1002	c.init = copyNodes(c.init)
1003	return &c
1004}
1005func (n *LogicalExpr) doChildren(do func(Node) bool) bool {
1006	if doNodes(n.init, do) {
1007		return true
1008	}
1009	if n.X != nil && do(n.X) {
1010		return true
1011	}
1012	if n.Y != nil && do(n.Y) {
1013		return true
1014	}
1015	return false
1016}
1017func (n *LogicalExpr) editChildren(edit func(Node) Node) {
1018	editNodes(n.init, edit)
1019	if n.X != nil {
1020		n.X = edit(n.X).(Node)
1021	}
1022	if n.Y != nil {
1023		n.Y = edit(n.Y).(Node)
1024	}
1025}
1026func (n *LogicalExpr) editChildrenWithHidden(edit func(Node) Node) {
1027	editNodes(n.init, edit)
1028	if n.X != nil {
1029		n.X = edit(n.X).(Node)
1030	}
1031	if n.Y != nil {
1032		n.Y = edit(n.Y).(Node)
1033	}
1034}
1035
1036func (n *MakeExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
1037func (n *MakeExpr) copy() Node {
1038	c := *n
1039	c.init = copyNodes(c.init)
1040	return &c
1041}
1042func (n *MakeExpr) doChildren(do func(Node) bool) bool {
1043	if doNodes(n.init, do) {
1044		return true
1045	}
1046	if n.Len != nil && do(n.Len) {
1047		return true
1048	}
1049	if n.Cap != nil && do(n.Cap) {
1050		return true
1051	}
1052	return false
1053}
1054func (n *MakeExpr) editChildren(edit func(Node) Node) {
1055	editNodes(n.init, edit)
1056	if n.Len != nil {
1057		n.Len = edit(n.Len).(Node)
1058	}
1059	if n.Cap != nil {
1060		n.Cap = edit(n.Cap).(Node)
1061	}
1062}
1063func (n *MakeExpr) editChildrenWithHidden(edit func(Node) Node) {
1064	editNodes(n.init, edit)
1065	if n.RType != nil {
1066		n.RType = edit(n.RType).(Node)
1067	}
1068	if n.Len != nil {
1069		n.Len = edit(n.Len).(Node)
1070	}
1071	if n.Cap != nil {
1072		n.Cap = edit(n.Cap).(Node)
1073	}
1074}
1075
1076func (n *Name) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
1077
1078func (n *NilExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
1079func (n *NilExpr) copy() Node {
1080	c := *n
1081	c.init = copyNodes(c.init)
1082	return &c
1083}
1084func (n *NilExpr) doChildren(do func(Node) bool) bool {
1085	if doNodes(n.init, do) {
1086		return true
1087	}
1088	return false
1089}
1090func (n *NilExpr) editChildren(edit func(Node) Node) {
1091	editNodes(n.init, edit)
1092}
1093func (n *NilExpr) editChildrenWithHidden(edit func(Node) Node) {
1094	editNodes(n.init, edit)
1095}
1096
1097func (n *ParenExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
1098func (n *ParenExpr) copy() Node {
1099	c := *n
1100	c.init = copyNodes(c.init)
1101	return &c
1102}
1103func (n *ParenExpr) doChildren(do func(Node) bool) bool {
1104	if doNodes(n.init, do) {
1105		return true
1106	}
1107	if n.X != nil && do(n.X) {
1108		return true
1109	}
1110	return false
1111}
1112func (n *ParenExpr) editChildren(edit func(Node) Node) {
1113	editNodes(n.init, edit)
1114	if n.X != nil {
1115		n.X = edit(n.X).(Node)
1116	}
1117}
1118func (n *ParenExpr) editChildrenWithHidden(edit func(Node) Node) {
1119	editNodes(n.init, edit)
1120	if n.X != nil {
1121		n.X = edit(n.X).(Node)
1122	}
1123}
1124
1125func (n *RangeStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
1126func (n *RangeStmt) copy() Node {
1127	c := *n
1128	c.init = copyNodes(c.init)
1129	c.Body = copyNodes(c.Body)
1130	return &c
1131}
1132func (n *RangeStmt) doChildren(do func(Node) bool) bool {
1133	if doNodes(n.init, do) {
1134		return true
1135	}
1136	if n.X != nil && do(n.X) {
1137		return true
1138	}
1139	if n.Key != nil && do(n.Key) {
1140		return true
1141	}
1142	if n.Value != nil && do(n.Value) {
1143		return true
1144	}
1145	if doNodes(n.Body, do) {
1146		return true
1147	}
1148	if n.Prealloc != nil && do(n.Prealloc) {
1149		return true
1150	}
1151	return false
1152}
1153func (n *RangeStmt) editChildren(edit func(Node) Node) {
1154	editNodes(n.init, edit)
1155	if n.X != nil {
1156		n.X = edit(n.X).(Node)
1157	}
1158	if n.Key != nil {
1159		n.Key = edit(n.Key).(Node)
1160	}
1161	if n.Value != nil {
1162		n.Value = edit(n.Value).(Node)
1163	}
1164	editNodes(n.Body, edit)
1165	if n.Prealloc != nil {
1166		n.Prealloc = edit(n.Prealloc).(*Name)
1167	}
1168}
1169func (n *RangeStmt) editChildrenWithHidden(edit func(Node) Node) {
1170	editNodes(n.init, edit)
1171	if n.X != nil {
1172		n.X = edit(n.X).(Node)
1173	}
1174	if n.RType != nil {
1175		n.RType = edit(n.RType).(Node)
1176	}
1177	if n.Key != nil {
1178		n.Key = edit(n.Key).(Node)
1179	}
1180	if n.Value != nil {
1181		n.Value = edit(n.Value).(Node)
1182	}
1183	editNodes(n.Body, edit)
1184	if n.Prealloc != nil {
1185		n.Prealloc = edit(n.Prealloc).(*Name)
1186	}
1187	if n.KeyTypeWord != nil {
1188		n.KeyTypeWord = edit(n.KeyTypeWord).(Node)
1189	}
1190	if n.KeySrcRType != nil {
1191		n.KeySrcRType = edit(n.KeySrcRType).(Node)
1192	}
1193	if n.ValueTypeWord != nil {
1194		n.ValueTypeWord = edit(n.ValueTypeWord).(Node)
1195	}
1196	if n.ValueSrcRType != nil {
1197		n.ValueSrcRType = edit(n.ValueSrcRType).(Node)
1198	}
1199}
1200
1201func (n *ResultExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
1202func (n *ResultExpr) copy() Node {
1203	c := *n
1204	c.init = copyNodes(c.init)
1205	return &c
1206}
1207func (n *ResultExpr) doChildren(do func(Node) bool) bool {
1208	if doNodes(n.init, do) {
1209		return true
1210	}
1211	return false
1212}
1213func (n *ResultExpr) editChildren(edit func(Node) Node) {
1214	editNodes(n.init, edit)
1215}
1216func (n *ResultExpr) editChildrenWithHidden(edit func(Node) Node) {
1217	editNodes(n.init, edit)
1218}
1219
1220func (n *ReturnStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
1221func (n *ReturnStmt) copy() Node {
1222	c := *n
1223	c.init = copyNodes(c.init)
1224	c.Results = copyNodes(c.Results)
1225	return &c
1226}
1227func (n *ReturnStmt) doChildren(do func(Node) bool) bool {
1228	if doNodes(n.init, do) {
1229		return true
1230	}
1231	if doNodes(n.Results, do) {
1232		return true
1233	}
1234	return false
1235}
1236func (n *ReturnStmt) editChildren(edit func(Node) Node) {
1237	editNodes(n.init, edit)
1238	editNodes(n.Results, edit)
1239}
1240func (n *ReturnStmt) editChildrenWithHidden(edit func(Node) Node) {
1241	editNodes(n.init, edit)
1242	editNodes(n.Results, edit)
1243}
1244
1245func (n *SelectStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
1246func (n *SelectStmt) copy() Node {
1247	c := *n
1248	c.init = copyNodes(c.init)
1249	c.Cases = copyCommClauses(c.Cases)
1250	c.Compiled = copyNodes(c.Compiled)
1251	return &c
1252}
1253func (n *SelectStmt) doChildren(do func(Node) bool) bool {
1254	if doNodes(n.init, do) {
1255		return true
1256	}
1257	if doCommClauses(n.Cases, do) {
1258		return true
1259	}
1260	if doNodes(n.Compiled, do) {
1261		return true
1262	}
1263	return false
1264}
1265func (n *SelectStmt) editChildren(edit func(Node) Node) {
1266	editNodes(n.init, edit)
1267	editCommClauses(n.Cases, edit)
1268	editNodes(n.Compiled, edit)
1269}
1270func (n *SelectStmt) editChildrenWithHidden(edit func(Node) Node) {
1271	editNodes(n.init, edit)
1272	editCommClauses(n.Cases, edit)
1273	editNodes(n.Compiled, edit)
1274}
1275
1276func (n *SelectorExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
1277func (n *SelectorExpr) copy() Node {
1278	c := *n
1279	c.init = copyNodes(c.init)
1280	return &c
1281}
1282func (n *SelectorExpr) doChildren(do func(Node) bool) bool {
1283	if doNodes(n.init, do) {
1284		return true
1285	}
1286	if n.X != nil && do(n.X) {
1287		return true
1288	}
1289	if n.Prealloc != nil && do(n.Prealloc) {
1290		return true
1291	}
1292	return false
1293}
1294func (n *SelectorExpr) editChildren(edit func(Node) Node) {
1295	editNodes(n.init, edit)
1296	if n.X != nil {
1297		n.X = edit(n.X).(Node)
1298	}
1299	if n.Prealloc != nil {
1300		n.Prealloc = edit(n.Prealloc).(*Name)
1301	}
1302}
1303func (n *SelectorExpr) editChildrenWithHidden(edit func(Node) Node) {
1304	editNodes(n.init, edit)
1305	if n.X != nil {
1306		n.X = edit(n.X).(Node)
1307	}
1308	if n.Prealloc != nil {
1309		n.Prealloc = edit(n.Prealloc).(*Name)
1310	}
1311}
1312
1313func (n *SendStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
1314func (n *SendStmt) copy() Node {
1315	c := *n
1316	c.init = copyNodes(c.init)
1317	return &c
1318}
1319func (n *SendStmt) doChildren(do func(Node) bool) bool {
1320	if doNodes(n.init, do) {
1321		return true
1322	}
1323	if n.Chan != nil && do(n.Chan) {
1324		return true
1325	}
1326	if n.Value != nil && do(n.Value) {
1327		return true
1328	}
1329	return false
1330}
1331func (n *SendStmt) editChildren(edit func(Node) Node) {
1332	editNodes(n.init, edit)
1333	if n.Chan != nil {
1334		n.Chan = edit(n.Chan).(Node)
1335	}
1336	if n.Value != nil {
1337		n.Value = edit(n.Value).(Node)
1338	}
1339}
1340func (n *SendStmt) editChildrenWithHidden(edit func(Node) Node) {
1341	editNodes(n.init, edit)
1342	if n.Chan != nil {
1343		n.Chan = edit(n.Chan).(Node)
1344	}
1345	if n.Value != nil {
1346		n.Value = edit(n.Value).(Node)
1347	}
1348}
1349
1350func (n *SliceExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
1351func (n *SliceExpr) copy() Node {
1352	c := *n
1353	c.init = copyNodes(c.init)
1354	return &c
1355}
1356func (n *SliceExpr) doChildren(do func(Node) bool) bool {
1357	if doNodes(n.init, do) {
1358		return true
1359	}
1360	if n.X != nil && do(n.X) {
1361		return true
1362	}
1363	if n.Low != nil && do(n.Low) {
1364		return true
1365	}
1366	if n.High != nil && do(n.High) {
1367		return true
1368	}
1369	if n.Max != nil && do(n.Max) {
1370		return true
1371	}
1372	return false
1373}
1374func (n *SliceExpr) editChildren(edit func(Node) Node) {
1375	editNodes(n.init, edit)
1376	if n.X != nil {
1377		n.X = edit(n.X).(Node)
1378	}
1379	if n.Low != nil {
1380		n.Low = edit(n.Low).(Node)
1381	}
1382	if n.High != nil {
1383		n.High = edit(n.High).(Node)
1384	}
1385	if n.Max != nil {
1386		n.Max = edit(n.Max).(Node)
1387	}
1388}
1389func (n *SliceExpr) editChildrenWithHidden(edit func(Node) Node) {
1390	editNodes(n.init, edit)
1391	if n.X != nil {
1392		n.X = edit(n.X).(Node)
1393	}
1394	if n.Low != nil {
1395		n.Low = edit(n.Low).(Node)
1396	}
1397	if n.High != nil {
1398		n.High = edit(n.High).(Node)
1399	}
1400	if n.Max != nil {
1401		n.Max = edit(n.Max).(Node)
1402	}
1403}
1404
1405func (n *SliceHeaderExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
1406func (n *SliceHeaderExpr) copy() Node {
1407	c := *n
1408	c.init = copyNodes(c.init)
1409	return &c
1410}
1411func (n *SliceHeaderExpr) doChildren(do func(Node) bool) bool {
1412	if doNodes(n.init, do) {
1413		return true
1414	}
1415	if n.Ptr != nil && do(n.Ptr) {
1416		return true
1417	}
1418	if n.Len != nil && do(n.Len) {
1419		return true
1420	}
1421	if n.Cap != nil && do(n.Cap) {
1422		return true
1423	}
1424	return false
1425}
1426func (n *SliceHeaderExpr) editChildren(edit func(Node) Node) {
1427	editNodes(n.init, edit)
1428	if n.Ptr != nil {
1429		n.Ptr = edit(n.Ptr).(Node)
1430	}
1431	if n.Len != nil {
1432		n.Len = edit(n.Len).(Node)
1433	}
1434	if n.Cap != nil {
1435		n.Cap = edit(n.Cap).(Node)
1436	}
1437}
1438func (n *SliceHeaderExpr) editChildrenWithHidden(edit func(Node) Node) {
1439	editNodes(n.init, edit)
1440	if n.Ptr != nil {
1441		n.Ptr = edit(n.Ptr).(Node)
1442	}
1443	if n.Len != nil {
1444		n.Len = edit(n.Len).(Node)
1445	}
1446	if n.Cap != nil {
1447		n.Cap = edit(n.Cap).(Node)
1448	}
1449}
1450
1451func (n *StarExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
1452func (n *StarExpr) copy() Node {
1453	c := *n
1454	c.init = copyNodes(c.init)
1455	return &c
1456}
1457func (n *StarExpr) doChildren(do func(Node) bool) bool {
1458	if doNodes(n.init, do) {
1459		return true
1460	}
1461	if n.X != nil && do(n.X) {
1462		return true
1463	}
1464	return false
1465}
1466func (n *StarExpr) editChildren(edit func(Node) Node) {
1467	editNodes(n.init, edit)
1468	if n.X != nil {
1469		n.X = edit(n.X).(Node)
1470	}
1471}
1472func (n *StarExpr) editChildrenWithHidden(edit func(Node) Node) {
1473	editNodes(n.init, edit)
1474	if n.X != nil {
1475		n.X = edit(n.X).(Node)
1476	}
1477}
1478
1479func (n *StringHeaderExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
1480func (n *StringHeaderExpr) copy() Node {
1481	c := *n
1482	c.init = copyNodes(c.init)
1483	return &c
1484}
1485func (n *StringHeaderExpr) doChildren(do func(Node) bool) bool {
1486	if doNodes(n.init, do) {
1487		return true
1488	}
1489	if n.Ptr != nil && do(n.Ptr) {
1490		return true
1491	}
1492	if n.Len != nil && do(n.Len) {
1493		return true
1494	}
1495	return false
1496}
1497func (n *StringHeaderExpr) editChildren(edit func(Node) Node) {
1498	editNodes(n.init, edit)
1499	if n.Ptr != nil {
1500		n.Ptr = edit(n.Ptr).(Node)
1501	}
1502	if n.Len != nil {
1503		n.Len = edit(n.Len).(Node)
1504	}
1505}
1506func (n *StringHeaderExpr) editChildrenWithHidden(edit func(Node) Node) {
1507	editNodes(n.init, edit)
1508	if n.Ptr != nil {
1509		n.Ptr = edit(n.Ptr).(Node)
1510	}
1511	if n.Len != nil {
1512		n.Len = edit(n.Len).(Node)
1513	}
1514}
1515
1516func (n *StructKeyExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
1517func (n *StructKeyExpr) copy() Node {
1518	c := *n
1519	c.init = copyNodes(c.init)
1520	return &c
1521}
1522func (n *StructKeyExpr) doChildren(do func(Node) bool) bool {
1523	if doNodes(n.init, do) {
1524		return true
1525	}
1526	if n.Value != nil && do(n.Value) {
1527		return true
1528	}
1529	return false
1530}
1531func (n *StructKeyExpr) editChildren(edit func(Node) Node) {
1532	editNodes(n.init, edit)
1533	if n.Value != nil {
1534		n.Value = edit(n.Value).(Node)
1535	}
1536}
1537func (n *StructKeyExpr) editChildrenWithHidden(edit func(Node) Node) {
1538	editNodes(n.init, edit)
1539	if n.Value != nil {
1540		n.Value = edit(n.Value).(Node)
1541	}
1542}
1543
1544func (n *SwitchStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
1545func (n *SwitchStmt) copy() Node {
1546	c := *n
1547	c.init = copyNodes(c.init)
1548	c.Cases = copyCaseClauses(c.Cases)
1549	c.Compiled = copyNodes(c.Compiled)
1550	return &c
1551}
1552func (n *SwitchStmt) doChildren(do func(Node) bool) bool {
1553	if doNodes(n.init, do) {
1554		return true
1555	}
1556	if n.Tag != nil && do(n.Tag) {
1557		return true
1558	}
1559	if doCaseClauses(n.Cases, do) {
1560		return true
1561	}
1562	if doNodes(n.Compiled, do) {
1563		return true
1564	}
1565	return false
1566}
1567func (n *SwitchStmt) editChildren(edit func(Node) Node) {
1568	editNodes(n.init, edit)
1569	if n.Tag != nil {
1570		n.Tag = edit(n.Tag).(Node)
1571	}
1572	editCaseClauses(n.Cases, edit)
1573	editNodes(n.Compiled, edit)
1574}
1575func (n *SwitchStmt) editChildrenWithHidden(edit func(Node) Node) {
1576	editNodes(n.init, edit)
1577	if n.Tag != nil {
1578		n.Tag = edit(n.Tag).(Node)
1579	}
1580	editCaseClauses(n.Cases, edit)
1581	editNodes(n.Compiled, edit)
1582}
1583
1584func (n *TailCallStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
1585func (n *TailCallStmt) copy() Node {
1586	c := *n
1587	c.init = copyNodes(c.init)
1588	return &c
1589}
1590func (n *TailCallStmt) doChildren(do func(Node) bool) bool {
1591	if doNodes(n.init, do) {
1592		return true
1593	}
1594	if n.Call != nil && do(n.Call) {
1595		return true
1596	}
1597	return false
1598}
1599func (n *TailCallStmt) editChildren(edit func(Node) Node) {
1600	editNodes(n.init, edit)
1601	if n.Call != nil {
1602		n.Call = edit(n.Call).(*CallExpr)
1603	}
1604}
1605func (n *TailCallStmt) editChildrenWithHidden(edit func(Node) Node) {
1606	editNodes(n.init, edit)
1607	if n.Call != nil {
1608		n.Call = edit(n.Call).(*CallExpr)
1609	}
1610}
1611
1612func (n *TypeAssertExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
1613func (n *TypeAssertExpr) copy() Node {
1614	c := *n
1615	c.init = copyNodes(c.init)
1616	return &c
1617}
1618func (n *TypeAssertExpr) doChildren(do func(Node) bool) bool {
1619	if doNodes(n.init, do) {
1620		return true
1621	}
1622	if n.X != nil && do(n.X) {
1623		return true
1624	}
1625	return false
1626}
1627func (n *TypeAssertExpr) editChildren(edit func(Node) Node) {
1628	editNodes(n.init, edit)
1629	if n.X != nil {
1630		n.X = edit(n.X).(Node)
1631	}
1632}
1633func (n *TypeAssertExpr) editChildrenWithHidden(edit func(Node) Node) {
1634	editNodes(n.init, edit)
1635	if n.X != nil {
1636		n.X = edit(n.X).(Node)
1637	}
1638	if n.ITab != nil {
1639		n.ITab = edit(n.ITab).(Node)
1640	}
1641}
1642
1643func (n *TypeSwitchGuard) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
1644func (n *TypeSwitchGuard) copy() Node {
1645	c := *n
1646	return &c
1647}
1648func (n *TypeSwitchGuard) doChildren(do func(Node) bool) bool {
1649	if n.Tag != nil && do(n.Tag) {
1650		return true
1651	}
1652	if n.X != nil && do(n.X) {
1653		return true
1654	}
1655	return false
1656}
1657func (n *TypeSwitchGuard) editChildren(edit func(Node) Node) {
1658	if n.Tag != nil {
1659		n.Tag = edit(n.Tag).(*Ident)
1660	}
1661	if n.X != nil {
1662		n.X = edit(n.X).(Node)
1663	}
1664}
1665func (n *TypeSwitchGuard) editChildrenWithHidden(edit func(Node) Node) {
1666	if n.Tag != nil {
1667		n.Tag = edit(n.Tag).(*Ident)
1668	}
1669	if n.X != nil {
1670		n.X = edit(n.X).(Node)
1671	}
1672}
1673
1674func (n *UnaryExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
1675func (n *UnaryExpr) copy() Node {
1676	c := *n
1677	c.init = copyNodes(c.init)
1678	return &c
1679}
1680func (n *UnaryExpr) doChildren(do func(Node) bool) bool {
1681	if doNodes(n.init, do) {
1682		return true
1683	}
1684	if n.X != nil && do(n.X) {
1685		return true
1686	}
1687	return false
1688}
1689func (n *UnaryExpr) editChildren(edit func(Node) Node) {
1690	editNodes(n.init, edit)
1691	if n.X != nil {
1692		n.X = edit(n.X).(Node)
1693	}
1694}
1695func (n *UnaryExpr) editChildrenWithHidden(edit func(Node) Node) {
1696	editNodes(n.init, edit)
1697	if n.X != nil {
1698		n.X = edit(n.X).(Node)
1699	}
1700}
1701
1702func (n *typeNode) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
1703func (n *typeNode) copy() Node {
1704	c := *n
1705	return &c
1706}
1707func (n *typeNode) doChildren(do func(Node) bool) bool {
1708	return false
1709}
1710func (n *typeNode) editChildren(edit func(Node) Node) {
1711}
1712func (n *typeNode) editChildrenWithHidden(edit func(Node) Node) {
1713}
1714
1715func copyCaseClauses(list []*CaseClause) []*CaseClause {
1716	if list == nil {
1717		return nil
1718	}
1719	c := make([]*CaseClause, len(list))
1720	copy(c, list)
1721	return c
1722}
1723func doCaseClauses(list []*CaseClause, do func(Node) bool) bool {
1724	for _, x := range list {
1725		if x != nil && do(x) {
1726			return true
1727		}
1728	}
1729	return false
1730}
1731func editCaseClauses(list []*CaseClause, edit func(Node) Node) {
1732	for i, x := range list {
1733		if x != nil {
1734			list[i] = edit(x).(*CaseClause)
1735		}
1736	}
1737}
1738
1739func copyCommClauses(list []*CommClause) []*CommClause {
1740	if list == nil {
1741		return nil
1742	}
1743	c := make([]*CommClause, len(list))
1744	copy(c, list)
1745	return c
1746}
1747func doCommClauses(list []*CommClause, do func(Node) bool) bool {
1748	for _, x := range list {
1749		if x != nil && do(x) {
1750			return true
1751		}
1752	}
1753	return false
1754}
1755func editCommClauses(list []*CommClause, edit func(Node) Node) {
1756	for i, x := range list {
1757		if x != nil {
1758			list[i] = edit(x).(*CommClause)
1759		}
1760	}
1761}
1762
1763func copyNames(list []*Name) []*Name {
1764	if list == nil {
1765		return nil
1766	}
1767	c := make([]*Name, len(list))
1768	copy(c, list)
1769	return c
1770}
1771func doNames(list []*Name, do func(Node) bool) bool {
1772	for _, x := range list {
1773		if x != nil && do(x) {
1774			return true
1775		}
1776	}
1777	return false
1778}
1779func editNames(list []*Name, edit func(Node) Node) {
1780	for i, x := range list {
1781		if x != nil {
1782			list[i] = edit(x).(*Name)
1783		}
1784	}
1785}
1786
1787func copyNodes(list []Node) []Node {
1788	if list == nil {
1789		return nil
1790	}
1791	c := make([]Node, len(list))
1792	copy(c, list)
1793	return c
1794}
1795func doNodes(list []Node, do func(Node) bool) bool {
1796	for _, x := range list {
1797		if x != nil && do(x) {
1798			return true
1799		}
1800	}
1801	return false
1802}
1803func editNodes(list []Node, edit func(Node) Node) {
1804	for i, x := range list {
1805		if x != nil {
1806			list[i] = edit(x).(Node)
1807		}
1808	}
1809}
1810