syn_pub_items/gen/
visit.rs

1// THIS FILE IS AUTOMATICALLY GENERATED; DO NOT EDIT
2
3#![cfg_attr(feature = "cargo-clippy", allow(trivially_copy_pass_by_ref))]
4#[cfg(any(feature = "full", feature = "derive"))]
5use gen::helper::visit::*;
6use proc_macro2::Span;
7#[cfg(any(feature = "full", feature = "derive"))]
8use punctuated::Punctuated;
9use *;
10#[cfg(feature = "full")]
11macro_rules! full {
12    ($e:expr) => {
13        $e
14    };
15}
16#[cfg(all(feature = "derive", not(feature = "full")))]
17macro_rules! full {
18    ($e:expr) => {
19        unreachable!()
20    };
21}
22#[cfg(any(feature = "full", feature = "derive"))]
23macro_rules! skip {
24    ($($tt:tt)*) => {};
25}
26/// Syntax tree traversal to walk a shared borrow of a syntax tree.
27///
28/// See the [module documentation] for details.
29///
30/// [module documentation]: index.html
31///
32/// *This trait is available if Syn is built with the `"visit"` feature.*
33pub trait Visit<'ast> {
34    #[cfg(any(feature = "derive", feature = "full"))]
35    fn visit_abi(&mut self, i: &'ast Abi) {
36        visit_abi(self, i)
37    }
38    #[cfg(any(feature = "derive", feature = "full"))]
39    fn visit_angle_bracketed_generic_arguments(&mut self, i: &'ast AngleBracketedGenericArguments) {
40        visit_angle_bracketed_generic_arguments(self, i)
41    }
42    #[cfg(feature = "full")]
43    fn visit_arg_captured(&mut self, i: &'ast ArgCaptured) {
44        visit_arg_captured(self, i)
45    }
46    #[cfg(feature = "full")]
47    fn visit_arg_self(&mut self, i: &'ast ArgSelf) {
48        visit_arg_self(self, i)
49    }
50    #[cfg(feature = "full")]
51    fn visit_arg_self_ref(&mut self, i: &'ast ArgSelfRef) {
52        visit_arg_self_ref(self, i)
53    }
54    #[cfg(feature = "full")]
55    fn visit_arm(&mut self, i: &'ast Arm) {
56        visit_arm(self, i)
57    }
58    #[cfg(any(feature = "derive", feature = "full"))]
59    fn visit_attr_style(&mut self, i: &'ast AttrStyle) {
60        visit_attr_style(self, i)
61    }
62    #[cfg(any(feature = "derive", feature = "full"))]
63    fn visit_attribute(&mut self, i: &'ast Attribute) {
64        visit_attribute(self, i)
65    }
66    #[cfg(any(feature = "derive", feature = "full"))]
67    fn visit_bare_fn_arg(&mut self, i: &'ast BareFnArg) {
68        visit_bare_fn_arg(self, i)
69    }
70    #[cfg(any(feature = "derive", feature = "full"))]
71    fn visit_bare_fn_arg_name(&mut self, i: &'ast BareFnArgName) {
72        visit_bare_fn_arg_name(self, i)
73    }
74    #[cfg(any(feature = "derive", feature = "full"))]
75    fn visit_bin_op(&mut self, i: &'ast BinOp) {
76        visit_bin_op(self, i)
77    }
78    #[cfg(any(feature = "derive", feature = "full"))]
79    fn visit_binding(&mut self, i: &'ast Binding) {
80        visit_binding(self, i)
81    }
82    #[cfg(feature = "full")]
83    fn visit_block(&mut self, i: &'ast Block) {
84        visit_block(self, i)
85    }
86    #[cfg(any(feature = "derive", feature = "full"))]
87    fn visit_bound_lifetimes(&mut self, i: &'ast BoundLifetimes) {
88        visit_bound_lifetimes(self, i)
89    }
90    #[cfg(any(feature = "derive", feature = "full"))]
91    fn visit_const_param(&mut self, i: &'ast ConstParam) {
92        visit_const_param(self, i)
93    }
94    #[cfg(any(feature = "derive", feature = "full"))]
95    fn visit_constraint(&mut self, i: &'ast Constraint) {
96        visit_constraint(self, i)
97    }
98    #[cfg(feature = "derive")]
99    fn visit_data(&mut self, i: &'ast Data) {
100        visit_data(self, i)
101    }
102    #[cfg(feature = "derive")]
103    fn visit_data_enum(&mut self, i: &'ast DataEnum) {
104        visit_data_enum(self, i)
105    }
106    #[cfg(feature = "derive")]
107    fn visit_data_struct(&mut self, i: &'ast DataStruct) {
108        visit_data_struct(self, i)
109    }
110    #[cfg(feature = "derive")]
111    fn visit_data_union(&mut self, i: &'ast DataUnion) {
112        visit_data_union(self, i)
113    }
114    #[cfg(feature = "derive")]
115    fn visit_derive_input(&mut self, i: &'ast DeriveInput) {
116        visit_derive_input(self, i)
117    }
118    #[cfg(any(feature = "derive", feature = "full"))]
119    fn visit_expr(&mut self, i: &'ast Expr) {
120        visit_expr(self, i)
121    }
122    #[cfg(feature = "full")]
123    fn visit_expr_array(&mut self, i: &'ast ExprArray) {
124        visit_expr_array(self, i)
125    }
126    #[cfg(feature = "full")]
127    fn visit_expr_assign(&mut self, i: &'ast ExprAssign) {
128        visit_expr_assign(self, i)
129    }
130    #[cfg(feature = "full")]
131    fn visit_expr_assign_op(&mut self, i: &'ast ExprAssignOp) {
132        visit_expr_assign_op(self, i)
133    }
134    #[cfg(feature = "full")]
135    fn visit_expr_async(&mut self, i: &'ast ExprAsync) {
136        visit_expr_async(self, i)
137    }
138    #[cfg(any(feature = "derive", feature = "full"))]
139    fn visit_expr_binary(&mut self, i: &'ast ExprBinary) {
140        visit_expr_binary(self, i)
141    }
142    #[cfg(feature = "full")]
143    fn visit_expr_block(&mut self, i: &'ast ExprBlock) {
144        visit_expr_block(self, i)
145    }
146    #[cfg(feature = "full")]
147    fn visit_expr_box(&mut self, i: &'ast ExprBox) {
148        visit_expr_box(self, i)
149    }
150    #[cfg(feature = "full")]
151    fn visit_expr_break(&mut self, i: &'ast ExprBreak) {
152        visit_expr_break(self, i)
153    }
154    #[cfg(any(feature = "derive", feature = "full"))]
155    fn visit_expr_call(&mut self, i: &'ast ExprCall) {
156        visit_expr_call(self, i)
157    }
158    #[cfg(any(feature = "derive", feature = "full"))]
159    fn visit_expr_cast(&mut self, i: &'ast ExprCast) {
160        visit_expr_cast(self, i)
161    }
162    #[cfg(feature = "full")]
163    fn visit_expr_closure(&mut self, i: &'ast ExprClosure) {
164        visit_expr_closure(self, i)
165    }
166    #[cfg(feature = "full")]
167    fn visit_expr_continue(&mut self, i: &'ast ExprContinue) {
168        visit_expr_continue(self, i)
169    }
170    #[cfg(any(feature = "derive", feature = "full"))]
171    fn visit_expr_field(&mut self, i: &'ast ExprField) {
172        visit_expr_field(self, i)
173    }
174    #[cfg(feature = "full")]
175    fn visit_expr_for_loop(&mut self, i: &'ast ExprForLoop) {
176        visit_expr_for_loop(self, i)
177    }
178    #[cfg(feature = "full")]
179    fn visit_expr_group(&mut self, i: &'ast ExprGroup) {
180        visit_expr_group(self, i)
181    }
182    #[cfg(feature = "full")]
183    fn visit_expr_if(&mut self, i: &'ast ExprIf) {
184        visit_expr_if(self, i)
185    }
186    #[cfg(feature = "full")]
187    fn visit_expr_in_place(&mut self, i: &'ast ExprInPlace) {
188        visit_expr_in_place(self, i)
189    }
190    #[cfg(any(feature = "derive", feature = "full"))]
191    fn visit_expr_index(&mut self, i: &'ast ExprIndex) {
192        visit_expr_index(self, i)
193    }
194    #[cfg(feature = "full")]
195    fn visit_expr_let(&mut self, i: &'ast ExprLet) {
196        visit_expr_let(self, i)
197    }
198    #[cfg(any(feature = "derive", feature = "full"))]
199    fn visit_expr_lit(&mut self, i: &'ast ExprLit) {
200        visit_expr_lit(self, i)
201    }
202    #[cfg(feature = "full")]
203    fn visit_expr_loop(&mut self, i: &'ast ExprLoop) {
204        visit_expr_loop(self, i)
205    }
206    #[cfg(feature = "full")]
207    fn visit_expr_macro(&mut self, i: &'ast ExprMacro) {
208        visit_expr_macro(self, i)
209    }
210    #[cfg(feature = "full")]
211    fn visit_expr_match(&mut self, i: &'ast ExprMatch) {
212        visit_expr_match(self, i)
213    }
214    #[cfg(feature = "full")]
215    fn visit_expr_method_call(&mut self, i: &'ast ExprMethodCall) {
216        visit_expr_method_call(self, i)
217    }
218    #[cfg(any(feature = "derive", feature = "full"))]
219    fn visit_expr_paren(&mut self, i: &'ast ExprParen) {
220        visit_expr_paren(self, i)
221    }
222    #[cfg(any(feature = "derive", feature = "full"))]
223    fn visit_expr_path(&mut self, i: &'ast ExprPath) {
224        visit_expr_path(self, i)
225    }
226    #[cfg(feature = "full")]
227    fn visit_expr_range(&mut self, i: &'ast ExprRange) {
228        visit_expr_range(self, i)
229    }
230    #[cfg(feature = "full")]
231    fn visit_expr_reference(&mut self, i: &'ast ExprReference) {
232        visit_expr_reference(self, i)
233    }
234    #[cfg(feature = "full")]
235    fn visit_expr_repeat(&mut self, i: &'ast ExprRepeat) {
236        visit_expr_repeat(self, i)
237    }
238    #[cfg(feature = "full")]
239    fn visit_expr_return(&mut self, i: &'ast ExprReturn) {
240        visit_expr_return(self, i)
241    }
242    #[cfg(feature = "full")]
243    fn visit_expr_struct(&mut self, i: &'ast ExprStruct) {
244        visit_expr_struct(self, i)
245    }
246    #[cfg(feature = "full")]
247    fn visit_expr_try(&mut self, i: &'ast ExprTry) {
248        visit_expr_try(self, i)
249    }
250    #[cfg(feature = "full")]
251    fn visit_expr_try_block(&mut self, i: &'ast ExprTryBlock) {
252        visit_expr_try_block(self, i)
253    }
254    #[cfg(feature = "full")]
255    fn visit_expr_tuple(&mut self, i: &'ast ExprTuple) {
256        visit_expr_tuple(self, i)
257    }
258    #[cfg(feature = "full")]
259    fn visit_expr_type(&mut self, i: &'ast ExprType) {
260        visit_expr_type(self, i)
261    }
262    #[cfg(any(feature = "derive", feature = "full"))]
263    fn visit_expr_unary(&mut self, i: &'ast ExprUnary) {
264        visit_expr_unary(self, i)
265    }
266    #[cfg(feature = "full")]
267    fn visit_expr_unsafe(&mut self, i: &'ast ExprUnsafe) {
268        visit_expr_unsafe(self, i)
269    }
270    #[cfg(any(feature = "derive", feature = "full"))]
271    fn visit_expr_verbatim(&mut self, i: &'ast ExprVerbatim) {
272        visit_expr_verbatim(self, i)
273    }
274    #[cfg(feature = "full")]
275    fn visit_expr_while(&mut self, i: &'ast ExprWhile) {
276        visit_expr_while(self, i)
277    }
278    #[cfg(feature = "full")]
279    fn visit_expr_yield(&mut self, i: &'ast ExprYield) {
280        visit_expr_yield(self, i)
281    }
282    #[cfg(any(feature = "derive", feature = "full"))]
283    fn visit_field(&mut self, i: &'ast Field) {
284        visit_field(self, i)
285    }
286    #[cfg(feature = "full")]
287    fn visit_field_pat(&mut self, i: &'ast FieldPat) {
288        visit_field_pat(self, i)
289    }
290    #[cfg(feature = "full")]
291    fn visit_field_value(&mut self, i: &'ast FieldValue) {
292        visit_field_value(self, i)
293    }
294    #[cfg(any(feature = "derive", feature = "full"))]
295    fn visit_fields(&mut self, i: &'ast Fields) {
296        visit_fields(self, i)
297    }
298    #[cfg(any(feature = "derive", feature = "full"))]
299    fn visit_fields_named(&mut self, i: &'ast FieldsNamed) {
300        visit_fields_named(self, i)
301    }
302    #[cfg(any(feature = "derive", feature = "full"))]
303    fn visit_fields_unnamed(&mut self, i: &'ast FieldsUnnamed) {
304        visit_fields_unnamed(self, i)
305    }
306    #[cfg(feature = "full")]
307    fn visit_file(&mut self, i: &'ast File) {
308        visit_file(self, i)
309    }
310    #[cfg(feature = "full")]
311    fn visit_fn_arg(&mut self, i: &'ast FnArg) {
312        visit_fn_arg(self, i)
313    }
314    #[cfg(feature = "full")]
315    fn visit_fn_decl(&mut self, i: &'ast FnDecl) {
316        visit_fn_decl(self, i)
317    }
318    #[cfg(feature = "full")]
319    fn visit_foreign_item(&mut self, i: &'ast ForeignItem) {
320        visit_foreign_item(self, i)
321    }
322    #[cfg(feature = "full")]
323    fn visit_foreign_item_fn(&mut self, i: &'ast ForeignItemFn) {
324        visit_foreign_item_fn(self, i)
325    }
326    #[cfg(feature = "full")]
327    fn visit_foreign_item_macro(&mut self, i: &'ast ForeignItemMacro) {
328        visit_foreign_item_macro(self, i)
329    }
330    #[cfg(feature = "full")]
331    fn visit_foreign_item_static(&mut self, i: &'ast ForeignItemStatic) {
332        visit_foreign_item_static(self, i)
333    }
334    #[cfg(feature = "full")]
335    fn visit_foreign_item_type(&mut self, i: &'ast ForeignItemType) {
336        visit_foreign_item_type(self, i)
337    }
338    #[cfg(feature = "full")]
339    fn visit_foreign_item_verbatim(&mut self, i: &'ast ForeignItemVerbatim) {
340        visit_foreign_item_verbatim(self, i)
341    }
342    #[cfg(any(feature = "derive", feature = "full"))]
343    fn visit_generic_argument(&mut self, i: &'ast GenericArgument) {
344        visit_generic_argument(self, i)
345    }
346    #[cfg(feature = "full")]
347    fn visit_generic_method_argument(&mut self, i: &'ast GenericMethodArgument) {
348        visit_generic_method_argument(self, i)
349    }
350    #[cfg(any(feature = "derive", feature = "full"))]
351    fn visit_generic_param(&mut self, i: &'ast GenericParam) {
352        visit_generic_param(self, i)
353    }
354    #[cfg(any(feature = "derive", feature = "full"))]
355    fn visit_generics(&mut self, i: &'ast Generics) {
356        visit_generics(self, i)
357    }
358    #[cfg(feature = "full")]
359    fn visit_impl_item(&mut self, i: &'ast ImplItem) {
360        visit_impl_item(self, i)
361    }
362    #[cfg(feature = "full")]
363    fn visit_impl_item_const(&mut self, i: &'ast ImplItemConst) {
364        visit_impl_item_const(self, i)
365    }
366    #[cfg(feature = "full")]
367    fn visit_impl_item_existential(&mut self, i: &'ast ImplItemExistential) {
368        visit_impl_item_existential(self, i)
369    }
370    #[cfg(feature = "full")]
371    fn visit_impl_item_macro(&mut self, i: &'ast ImplItemMacro) {
372        visit_impl_item_macro(self, i)
373    }
374    #[cfg(feature = "full")]
375    fn visit_impl_item_method(&mut self, i: &'ast ImplItemMethod) {
376        visit_impl_item_method(self, i)
377    }
378    #[cfg(feature = "full")]
379    fn visit_impl_item_type(&mut self, i: &'ast ImplItemType) {
380        visit_impl_item_type(self, i)
381    }
382    #[cfg(feature = "full")]
383    fn visit_impl_item_verbatim(&mut self, i: &'ast ImplItemVerbatim) {
384        visit_impl_item_verbatim(self, i)
385    }
386    #[cfg(any(feature = "derive", feature = "full"))]
387    fn visit_index(&mut self, i: &'ast Index) {
388        visit_index(self, i)
389    }
390    #[cfg(feature = "full")]
391    fn visit_item(&mut self, i: &'ast Item) {
392        visit_item(self, i)
393    }
394    #[cfg(feature = "full")]
395    fn visit_item_const(&mut self, i: &'ast ItemConst) {
396        visit_item_const(self, i)
397    }
398    #[cfg(feature = "full")]
399    fn visit_item_enum(&mut self, i: &'ast ItemEnum) {
400        visit_item_enum(self, i)
401    }
402    #[cfg(feature = "full")]
403    fn visit_item_existential(&mut self, i: &'ast ItemExistential) {
404        visit_item_existential(self, i)
405    }
406    #[cfg(feature = "full")]
407    fn visit_item_extern_crate(&mut self, i: &'ast ItemExternCrate) {
408        visit_item_extern_crate(self, i)
409    }
410    #[cfg(feature = "full")]
411    fn visit_item_fn(&mut self, i: &'ast ItemFn) {
412        visit_item_fn(self, i)
413    }
414    #[cfg(feature = "full")]
415    fn visit_item_foreign_mod(&mut self, i: &'ast ItemForeignMod) {
416        visit_item_foreign_mod(self, i)
417    }
418    #[cfg(feature = "full")]
419    fn visit_item_impl(&mut self, i: &'ast ItemImpl) {
420        visit_item_impl(self, i)
421    }
422    #[cfg(feature = "full")]
423    fn visit_item_macro(&mut self, i: &'ast ItemMacro) {
424        visit_item_macro(self, i)
425    }
426    #[cfg(feature = "full")]
427    fn visit_item_macro2(&mut self, i: &'ast ItemMacro2) {
428        visit_item_macro2(self, i)
429    }
430    #[cfg(feature = "full")]
431    fn visit_item_mod(&mut self, i: &'ast ItemMod) {
432        visit_item_mod(self, i)
433    }
434    #[cfg(feature = "full")]
435    fn visit_item_static(&mut self, i: &'ast ItemStatic) {
436        visit_item_static(self, i)
437    }
438    #[cfg(feature = "full")]
439    fn visit_item_struct(&mut self, i: &'ast ItemStruct) {
440        visit_item_struct(self, i)
441    }
442    #[cfg(feature = "full")]
443    fn visit_item_trait(&mut self, i: &'ast ItemTrait) {
444        visit_item_trait(self, i)
445    }
446    #[cfg(feature = "full")]
447    fn visit_item_trait_alias(&mut self, i: &'ast ItemTraitAlias) {
448        visit_item_trait_alias(self, i)
449    }
450    #[cfg(feature = "full")]
451    fn visit_item_type(&mut self, i: &'ast ItemType) {
452        visit_item_type(self, i)
453    }
454    #[cfg(feature = "full")]
455    fn visit_item_union(&mut self, i: &'ast ItemUnion) {
456        visit_item_union(self, i)
457    }
458    #[cfg(feature = "full")]
459    fn visit_item_use(&mut self, i: &'ast ItemUse) {
460        visit_item_use(self, i)
461    }
462    #[cfg(feature = "full")]
463    fn visit_item_verbatim(&mut self, i: &'ast ItemVerbatim) {
464        visit_item_verbatim(self, i)
465    }
466    #[cfg(feature = "full")]
467    fn visit_label(&mut self, i: &'ast Label) {
468        visit_label(self, i)
469    }
470    fn visit_lifetime(&mut self, i: &'ast Lifetime) {
471        visit_lifetime(self, i)
472    }
473    #[cfg(any(feature = "derive", feature = "full"))]
474    fn visit_lifetime_def(&mut self, i: &'ast LifetimeDef) {
475        visit_lifetime_def(self, i)
476    }
477    #[cfg(any(feature = "derive", feature = "full"))]
478    fn visit_lit(&mut self, i: &'ast Lit) {
479        visit_lit(self, i)
480    }
481    #[cfg(any(feature = "derive", feature = "full"))]
482    fn visit_lit_bool(&mut self, i: &'ast LitBool) {
483        visit_lit_bool(self, i)
484    }
485    #[cfg(any(feature = "derive", feature = "full"))]
486    fn visit_lit_byte(&mut self, i: &'ast LitByte) {
487        visit_lit_byte(self, i)
488    }
489    #[cfg(any(feature = "derive", feature = "full"))]
490    fn visit_lit_byte_str(&mut self, i: &'ast LitByteStr) {
491        visit_lit_byte_str(self, i)
492    }
493    #[cfg(any(feature = "derive", feature = "full"))]
494    fn visit_lit_char(&mut self, i: &'ast LitChar) {
495        visit_lit_char(self, i)
496    }
497    #[cfg(any(feature = "derive", feature = "full"))]
498    fn visit_lit_float(&mut self, i: &'ast LitFloat) {
499        visit_lit_float(self, i)
500    }
501    #[cfg(any(feature = "derive", feature = "full"))]
502    fn visit_lit_int(&mut self, i: &'ast LitInt) {
503        visit_lit_int(self, i)
504    }
505    #[cfg(any(feature = "derive", feature = "full"))]
506    fn visit_lit_str(&mut self, i: &'ast LitStr) {
507        visit_lit_str(self, i)
508    }
509    #[cfg(any(feature = "derive", feature = "full"))]
510    fn visit_lit_verbatim(&mut self, i: &'ast LitVerbatim) {
511        visit_lit_verbatim(self, i)
512    }
513    #[cfg(feature = "full")]
514    fn visit_local(&mut self, i: &'ast Local) {
515        visit_local(self, i)
516    }
517    #[cfg(any(feature = "derive", feature = "full"))]
518    fn visit_macro(&mut self, i: &'ast Macro) {
519        visit_macro(self, i)
520    }
521    #[cfg(any(feature = "derive", feature = "full"))]
522    fn visit_macro_delimiter(&mut self, i: &'ast MacroDelimiter) {
523        visit_macro_delimiter(self, i)
524    }
525    #[cfg(any(feature = "derive", feature = "full"))]
526    fn visit_member(&mut self, i: &'ast Member) {
527        visit_member(self, i)
528    }
529    #[cfg(any(feature = "derive", feature = "full"))]
530    fn visit_meta(&mut self, i: &'ast Meta) {
531        visit_meta(self, i)
532    }
533    #[cfg(any(feature = "derive", feature = "full"))]
534    fn visit_meta_list(&mut self, i: &'ast MetaList) {
535        visit_meta_list(self, i)
536    }
537    #[cfg(any(feature = "derive", feature = "full"))]
538    fn visit_meta_name_value(&mut self, i: &'ast MetaNameValue) {
539        visit_meta_name_value(self, i)
540    }
541    #[cfg(feature = "full")]
542    fn visit_method_sig(&mut self, i: &'ast MethodSig) {
543        visit_method_sig(self, i)
544    }
545    #[cfg(feature = "full")]
546    fn visit_method_turbofish(&mut self, i: &'ast MethodTurbofish) {
547        visit_method_turbofish(self, i)
548    }
549    #[cfg(any(feature = "derive", feature = "full"))]
550    fn visit_nested_meta(&mut self, i: &'ast NestedMeta) {
551        visit_nested_meta(self, i)
552    }
553    #[cfg(any(feature = "derive", feature = "full"))]
554    fn visit_parenthesized_generic_arguments(&mut self, i: &'ast ParenthesizedGenericArguments) {
555        visit_parenthesized_generic_arguments(self, i)
556    }
557    #[cfg(feature = "full")]
558    fn visit_pat(&mut self, i: &'ast Pat) {
559        visit_pat(self, i)
560    }
561    #[cfg(feature = "full")]
562    fn visit_pat_box(&mut self, i: &'ast PatBox) {
563        visit_pat_box(self, i)
564    }
565    #[cfg(feature = "full")]
566    fn visit_pat_ident(&mut self, i: &'ast PatIdent) {
567        visit_pat_ident(self, i)
568    }
569    #[cfg(feature = "full")]
570    fn visit_pat_lit(&mut self, i: &'ast PatLit) {
571        visit_pat_lit(self, i)
572    }
573    #[cfg(feature = "full")]
574    fn visit_pat_macro(&mut self, i: &'ast PatMacro) {
575        visit_pat_macro(self, i)
576    }
577    #[cfg(feature = "full")]
578    fn visit_pat_path(&mut self, i: &'ast PatPath) {
579        visit_pat_path(self, i)
580    }
581    #[cfg(feature = "full")]
582    fn visit_pat_range(&mut self, i: &'ast PatRange) {
583        visit_pat_range(self, i)
584    }
585    #[cfg(feature = "full")]
586    fn visit_pat_ref(&mut self, i: &'ast PatRef) {
587        visit_pat_ref(self, i)
588    }
589    #[cfg(feature = "full")]
590    fn visit_pat_slice(&mut self, i: &'ast PatSlice) {
591        visit_pat_slice(self, i)
592    }
593    #[cfg(feature = "full")]
594    fn visit_pat_struct(&mut self, i: &'ast PatStruct) {
595        visit_pat_struct(self, i)
596    }
597    #[cfg(feature = "full")]
598    fn visit_pat_tuple(&mut self, i: &'ast PatTuple) {
599        visit_pat_tuple(self, i)
600    }
601    #[cfg(feature = "full")]
602    fn visit_pat_tuple_struct(&mut self, i: &'ast PatTupleStruct) {
603        visit_pat_tuple_struct(self, i)
604    }
605    #[cfg(feature = "full")]
606    fn visit_pat_verbatim(&mut self, i: &'ast PatVerbatim) {
607        visit_pat_verbatim(self, i)
608    }
609    #[cfg(feature = "full")]
610    fn visit_pat_wild(&mut self, i: &'ast PatWild) {
611        visit_pat_wild(self, i)
612    }
613    #[cfg(any(feature = "derive", feature = "full"))]
614    fn visit_path(&mut self, i: &'ast Path) {
615        visit_path(self, i)
616    }
617    #[cfg(any(feature = "derive", feature = "full"))]
618    fn visit_path_arguments(&mut self, i: &'ast PathArguments) {
619        visit_path_arguments(self, i)
620    }
621    #[cfg(any(feature = "derive", feature = "full"))]
622    fn visit_path_segment(&mut self, i: &'ast PathSegment) {
623        visit_path_segment(self, i)
624    }
625    #[cfg(any(feature = "derive", feature = "full"))]
626    fn visit_predicate_eq(&mut self, i: &'ast PredicateEq) {
627        visit_predicate_eq(self, i)
628    }
629    #[cfg(any(feature = "derive", feature = "full"))]
630    fn visit_predicate_lifetime(&mut self, i: &'ast PredicateLifetime) {
631        visit_predicate_lifetime(self, i)
632    }
633    #[cfg(any(feature = "derive", feature = "full"))]
634    fn visit_predicate_type(&mut self, i: &'ast PredicateType) {
635        visit_predicate_type(self, i)
636    }
637    #[cfg(any(feature = "derive", feature = "full"))]
638    fn visit_qself(&mut self, i: &'ast QSelf) {
639        visit_qself(self, i)
640    }
641    #[cfg(feature = "full")]
642    fn visit_range_limits(&mut self, i: &'ast RangeLimits) {
643        visit_range_limits(self, i)
644    }
645    #[cfg(any(feature = "derive", feature = "full"))]
646    fn visit_return_type(&mut self, i: &'ast ReturnType) {
647        visit_return_type(self, i)
648    }
649    #[cfg(feature = "full")]
650    fn visit_stmt(&mut self, i: &'ast Stmt) {
651        visit_stmt(self, i)
652    }
653    #[cfg(any(feature = "derive", feature = "full"))]
654    fn visit_trait_bound(&mut self, i: &'ast TraitBound) {
655        visit_trait_bound(self, i)
656    }
657    #[cfg(any(feature = "derive", feature = "full"))]
658    fn visit_trait_bound_modifier(&mut self, i: &'ast TraitBoundModifier) {
659        visit_trait_bound_modifier(self, i)
660    }
661    #[cfg(feature = "full")]
662    fn visit_trait_item(&mut self, i: &'ast TraitItem) {
663        visit_trait_item(self, i)
664    }
665    #[cfg(feature = "full")]
666    fn visit_trait_item_const(&mut self, i: &'ast TraitItemConst) {
667        visit_trait_item_const(self, i)
668    }
669    #[cfg(feature = "full")]
670    fn visit_trait_item_macro(&mut self, i: &'ast TraitItemMacro) {
671        visit_trait_item_macro(self, i)
672    }
673    #[cfg(feature = "full")]
674    fn visit_trait_item_method(&mut self, i: &'ast TraitItemMethod) {
675        visit_trait_item_method(self, i)
676    }
677    #[cfg(feature = "full")]
678    fn visit_trait_item_type(&mut self, i: &'ast TraitItemType) {
679        visit_trait_item_type(self, i)
680    }
681    #[cfg(feature = "full")]
682    fn visit_trait_item_verbatim(&mut self, i: &'ast TraitItemVerbatim) {
683        visit_trait_item_verbatim(self, i)
684    }
685    #[cfg(any(feature = "derive", feature = "full"))]
686    fn visit_type(&mut self, i: &'ast Type) {
687        visit_type(self, i)
688    }
689    #[cfg(any(feature = "derive", feature = "full"))]
690    fn visit_type_array(&mut self, i: &'ast TypeArray) {
691        visit_type_array(self, i)
692    }
693    #[cfg(any(feature = "derive", feature = "full"))]
694    fn visit_type_bare_fn(&mut self, i: &'ast TypeBareFn) {
695        visit_type_bare_fn(self, i)
696    }
697    #[cfg(any(feature = "derive", feature = "full"))]
698    fn visit_type_group(&mut self, i: &'ast TypeGroup) {
699        visit_type_group(self, i)
700    }
701    #[cfg(any(feature = "derive", feature = "full"))]
702    fn visit_type_impl_trait(&mut self, i: &'ast TypeImplTrait) {
703        visit_type_impl_trait(self, i)
704    }
705    #[cfg(any(feature = "derive", feature = "full"))]
706    fn visit_type_infer(&mut self, i: &'ast TypeInfer) {
707        visit_type_infer(self, i)
708    }
709    #[cfg(any(feature = "derive", feature = "full"))]
710    fn visit_type_macro(&mut self, i: &'ast TypeMacro) {
711        visit_type_macro(self, i)
712    }
713    #[cfg(any(feature = "derive", feature = "full"))]
714    fn visit_type_never(&mut self, i: &'ast TypeNever) {
715        visit_type_never(self, i)
716    }
717    #[cfg(any(feature = "derive", feature = "full"))]
718    fn visit_type_param(&mut self, i: &'ast TypeParam) {
719        visit_type_param(self, i)
720    }
721    #[cfg(any(feature = "derive", feature = "full"))]
722    fn visit_type_param_bound(&mut self, i: &'ast TypeParamBound) {
723        visit_type_param_bound(self, i)
724    }
725    #[cfg(any(feature = "derive", feature = "full"))]
726    fn visit_type_paren(&mut self, i: &'ast TypeParen) {
727        visit_type_paren(self, i)
728    }
729    #[cfg(any(feature = "derive", feature = "full"))]
730    fn visit_type_path(&mut self, i: &'ast TypePath) {
731        visit_type_path(self, i)
732    }
733    #[cfg(any(feature = "derive", feature = "full"))]
734    fn visit_type_ptr(&mut self, i: &'ast TypePtr) {
735        visit_type_ptr(self, i)
736    }
737    #[cfg(any(feature = "derive", feature = "full"))]
738    fn visit_type_reference(&mut self, i: &'ast TypeReference) {
739        visit_type_reference(self, i)
740    }
741    #[cfg(any(feature = "derive", feature = "full"))]
742    fn visit_type_slice(&mut self, i: &'ast TypeSlice) {
743        visit_type_slice(self, i)
744    }
745    #[cfg(any(feature = "derive", feature = "full"))]
746    fn visit_type_trait_object(&mut self, i: &'ast TypeTraitObject) {
747        visit_type_trait_object(self, i)
748    }
749    #[cfg(any(feature = "derive", feature = "full"))]
750    fn visit_type_tuple(&mut self, i: &'ast TypeTuple) {
751        visit_type_tuple(self, i)
752    }
753    #[cfg(any(feature = "derive", feature = "full"))]
754    fn visit_type_verbatim(&mut self, i: &'ast TypeVerbatim) {
755        visit_type_verbatim(self, i)
756    }
757    #[cfg(any(feature = "derive", feature = "full"))]
758    fn visit_un_op(&mut self, i: &'ast UnOp) {
759        visit_un_op(self, i)
760    }
761    #[cfg(feature = "full")]
762    fn visit_use_glob(&mut self, i: &'ast UseGlob) {
763        visit_use_glob(self, i)
764    }
765    #[cfg(feature = "full")]
766    fn visit_use_group(&mut self, i: &'ast UseGroup) {
767        visit_use_group(self, i)
768    }
769    #[cfg(feature = "full")]
770    fn visit_use_name(&mut self, i: &'ast UseName) {
771        visit_use_name(self, i)
772    }
773    #[cfg(feature = "full")]
774    fn visit_use_path(&mut self, i: &'ast UsePath) {
775        visit_use_path(self, i)
776    }
777    #[cfg(feature = "full")]
778    fn visit_use_rename(&mut self, i: &'ast UseRename) {
779        visit_use_rename(self, i)
780    }
781    #[cfg(feature = "full")]
782    fn visit_use_tree(&mut self, i: &'ast UseTree) {
783        visit_use_tree(self, i)
784    }
785    #[cfg(any(feature = "derive", feature = "full"))]
786    fn visit_variant(&mut self, i: &'ast Variant) {
787        visit_variant(self, i)
788    }
789    #[cfg(any(feature = "derive", feature = "full"))]
790    fn visit_vis_crate(&mut self, i: &'ast VisCrate) {
791        visit_vis_crate(self, i)
792    }
793    #[cfg(any(feature = "derive", feature = "full"))]
794    fn visit_vis_public(&mut self, i: &'ast VisPublic) {
795        visit_vis_public(self, i)
796    }
797    #[cfg(any(feature = "derive", feature = "full"))]
798    fn visit_vis_restricted(&mut self, i: &'ast VisRestricted) {
799        visit_vis_restricted(self, i)
800    }
801    #[cfg(any(feature = "derive", feature = "full"))]
802    fn visit_visibility(&mut self, i: &'ast Visibility) {
803        visit_visibility(self, i)
804    }
805    #[cfg(any(feature = "derive", feature = "full"))]
806    fn visit_where_clause(&mut self, i: &'ast WhereClause) {
807        visit_where_clause(self, i)
808    }
809    #[cfg(any(feature = "derive", feature = "full"))]
810    fn visit_where_predicate(&mut self, i: &'ast WherePredicate) {
811        visit_where_predicate(self, i)
812    }
813    fn visit_span(&mut self, i: &'ast Span) {
814        visit_span(self, i)
815    }
816    fn visit_ident(&mut self, i: &'ast Ident) {
817        visit_ident(self, i)
818    }
819}
820#[cfg(any(feature = "derive", feature = "full"))]
821pub fn visit_abi<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast Abi) {
822    tokens_helper(_visitor, &_i.extern_token.span);
823    if let Some(ref it) = _i.name {
824        _visitor.visit_lit_str(it)
825    };
826}
827#[cfg(any(feature = "derive", feature = "full"))]
828pub fn visit_angle_bracketed_generic_arguments<'ast, V: Visit<'ast> + ?Sized>(
829    _visitor: &mut V,
830    _i: &'ast AngleBracketedGenericArguments,
831) {
832    if let Some(ref it) = _i.colon2_token {
833        tokens_helper(_visitor, &it.spans)
834    };
835    tokens_helper(_visitor, &_i.lt_token.spans);
836    for el in Punctuated::pairs(&_i.args) {
837        let it = el.value();
838        _visitor.visit_generic_argument(it)
839    }
840    tokens_helper(_visitor, &_i.gt_token.spans);
841}
842#[cfg(feature = "full")]
843pub fn visit_arg_captured<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ArgCaptured) {
844    _visitor.visit_pat(&_i.pat);
845    tokens_helper(_visitor, &_i.colon_token.spans);
846    _visitor.visit_type(&_i.ty);
847}
848#[cfg(feature = "full")]
849pub fn visit_arg_self<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ArgSelf) {
850    if let Some(ref it) = _i.mutability {
851        tokens_helper(_visitor, &it.span)
852    };
853    tokens_helper(_visitor, &_i.self_token.span);
854}
855#[cfg(feature = "full")]
856pub fn visit_arg_self_ref<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ArgSelfRef) {
857    tokens_helper(_visitor, &_i.and_token.spans);
858    if let Some(ref it) = _i.lifetime {
859        _visitor.visit_lifetime(it)
860    };
861    if let Some(ref it) = _i.mutability {
862        tokens_helper(_visitor, &it.span)
863    };
864    tokens_helper(_visitor, &_i.self_token.span);
865}
866#[cfg(feature = "full")]
867pub fn visit_arm<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast Arm) {
868    for it in &_i.attrs {
869        _visitor.visit_attribute(it)
870    }
871    if let Some(ref it) = _i.leading_vert {
872        tokens_helper(_visitor, &it.spans)
873    };
874    for el in Punctuated::pairs(&_i.pats) {
875        let it = el.value();
876        _visitor.visit_pat(it)
877    }
878    if let Some(ref it) = _i.guard {
879        tokens_helper(_visitor, &(it).0.span);
880        _visitor.visit_expr(&*(it).1);
881    };
882    tokens_helper(_visitor, &_i.fat_arrow_token.spans);
883    _visitor.visit_expr(&*_i.body);
884    if let Some(ref it) = _i.comma {
885        tokens_helper(_visitor, &it.spans)
886    };
887}
888#[cfg(any(feature = "derive", feature = "full"))]
889pub fn visit_attr_style<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast AttrStyle) {
890    match *_i {
891        AttrStyle::Outer => {}
892        AttrStyle::Inner(ref _binding_0) => {
893            tokens_helper(_visitor, &_binding_0.spans);
894        }
895    }
896}
897#[cfg(any(feature = "derive", feature = "full"))]
898pub fn visit_attribute<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast Attribute) {
899    tokens_helper(_visitor, &_i.pound_token.spans);
900    _visitor.visit_attr_style(&_i.style);
901    tokens_helper(_visitor, &_i.bracket_token.span);
902    _visitor.visit_path(&_i.path);
903    skip!(_i.tts);
904}
905#[cfg(any(feature = "derive", feature = "full"))]
906pub fn visit_bare_fn_arg<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast BareFnArg) {
907    if let Some(ref it) = _i.name {
908        _visitor.visit_bare_fn_arg_name(&(it).0);
909        tokens_helper(_visitor, &(it).1.spans);
910    };
911    _visitor.visit_type(&_i.ty);
912}
913#[cfg(any(feature = "derive", feature = "full"))]
914pub fn visit_bare_fn_arg_name<'ast, V: Visit<'ast> + ?Sized>(
915    _visitor: &mut V,
916    _i: &'ast BareFnArgName,
917) {
918    match *_i {
919        BareFnArgName::Named(ref _binding_0) => {
920            _visitor.visit_ident(_binding_0);
921        }
922        BareFnArgName::Wild(ref _binding_0) => {
923            tokens_helper(_visitor, &_binding_0.spans);
924        }
925    }
926}
927#[cfg(any(feature = "derive", feature = "full"))]
928pub fn visit_bin_op<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast BinOp) {
929    match *_i {
930        BinOp::Add(ref _binding_0) => {
931            tokens_helper(_visitor, &_binding_0.spans);
932        }
933        BinOp::Sub(ref _binding_0) => {
934            tokens_helper(_visitor, &_binding_0.spans);
935        }
936        BinOp::Mul(ref _binding_0) => {
937            tokens_helper(_visitor, &_binding_0.spans);
938        }
939        BinOp::Div(ref _binding_0) => {
940            tokens_helper(_visitor, &_binding_0.spans);
941        }
942        BinOp::Rem(ref _binding_0) => {
943            tokens_helper(_visitor, &_binding_0.spans);
944        }
945        BinOp::And(ref _binding_0) => {
946            tokens_helper(_visitor, &_binding_0.spans);
947        }
948        BinOp::Or(ref _binding_0) => {
949            tokens_helper(_visitor, &_binding_0.spans);
950        }
951        BinOp::BitXor(ref _binding_0) => {
952            tokens_helper(_visitor, &_binding_0.spans);
953        }
954        BinOp::BitAnd(ref _binding_0) => {
955            tokens_helper(_visitor, &_binding_0.spans);
956        }
957        BinOp::BitOr(ref _binding_0) => {
958            tokens_helper(_visitor, &_binding_0.spans);
959        }
960        BinOp::Shl(ref _binding_0) => {
961            tokens_helper(_visitor, &_binding_0.spans);
962        }
963        BinOp::Shr(ref _binding_0) => {
964            tokens_helper(_visitor, &_binding_0.spans);
965        }
966        BinOp::Eq(ref _binding_0) => {
967            tokens_helper(_visitor, &_binding_0.spans);
968        }
969        BinOp::Lt(ref _binding_0) => {
970            tokens_helper(_visitor, &_binding_0.spans);
971        }
972        BinOp::Le(ref _binding_0) => {
973            tokens_helper(_visitor, &_binding_0.spans);
974        }
975        BinOp::Ne(ref _binding_0) => {
976            tokens_helper(_visitor, &_binding_0.spans);
977        }
978        BinOp::Ge(ref _binding_0) => {
979            tokens_helper(_visitor, &_binding_0.spans);
980        }
981        BinOp::Gt(ref _binding_0) => {
982            tokens_helper(_visitor, &_binding_0.spans);
983        }
984        BinOp::AddEq(ref _binding_0) => {
985            tokens_helper(_visitor, &_binding_0.spans);
986        }
987        BinOp::SubEq(ref _binding_0) => {
988            tokens_helper(_visitor, &_binding_0.spans);
989        }
990        BinOp::MulEq(ref _binding_0) => {
991            tokens_helper(_visitor, &_binding_0.spans);
992        }
993        BinOp::DivEq(ref _binding_0) => {
994            tokens_helper(_visitor, &_binding_0.spans);
995        }
996        BinOp::RemEq(ref _binding_0) => {
997            tokens_helper(_visitor, &_binding_0.spans);
998        }
999        BinOp::BitXorEq(ref _binding_0) => {
1000            tokens_helper(_visitor, &_binding_0.spans);
1001        }
1002        BinOp::BitAndEq(ref _binding_0) => {
1003            tokens_helper(_visitor, &_binding_0.spans);
1004        }
1005        BinOp::BitOrEq(ref _binding_0) => {
1006            tokens_helper(_visitor, &_binding_0.spans);
1007        }
1008        BinOp::ShlEq(ref _binding_0) => {
1009            tokens_helper(_visitor, &_binding_0.spans);
1010        }
1011        BinOp::ShrEq(ref _binding_0) => {
1012            tokens_helper(_visitor, &_binding_0.spans);
1013        }
1014    }
1015}
1016#[cfg(any(feature = "derive", feature = "full"))]
1017pub fn visit_binding<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast Binding) {
1018    _visitor.visit_ident(&_i.ident);
1019    tokens_helper(_visitor, &_i.eq_token.spans);
1020    _visitor.visit_type(&_i.ty);
1021}
1022#[cfg(feature = "full")]
1023pub fn visit_block<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast Block) {
1024    tokens_helper(_visitor, &_i.brace_token.span);
1025    for it in &_i.stmts {
1026        _visitor.visit_stmt(it)
1027    }
1028}
1029#[cfg(any(feature = "derive", feature = "full"))]
1030pub fn visit_bound_lifetimes<'ast, V: Visit<'ast> + ?Sized>(
1031    _visitor: &mut V,
1032    _i: &'ast BoundLifetimes,
1033) {
1034    tokens_helper(_visitor, &_i.for_token.span);
1035    tokens_helper(_visitor, &_i.lt_token.spans);
1036    for el in Punctuated::pairs(&_i.lifetimes) {
1037        let it = el.value();
1038        _visitor.visit_lifetime_def(it)
1039    }
1040    tokens_helper(_visitor, &_i.gt_token.spans);
1041}
1042#[cfg(any(feature = "derive", feature = "full"))]
1043pub fn visit_const_param<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ConstParam) {
1044    for it in &_i.attrs {
1045        _visitor.visit_attribute(it)
1046    }
1047    tokens_helper(_visitor, &_i.const_token.span);
1048    _visitor.visit_ident(&_i.ident);
1049    tokens_helper(_visitor, &_i.colon_token.spans);
1050    _visitor.visit_type(&_i.ty);
1051    if let Some(ref it) = _i.eq_token {
1052        tokens_helper(_visitor, &it.spans)
1053    };
1054    if let Some(ref it) = _i.default {
1055        _visitor.visit_expr(it)
1056    };
1057}
1058#[cfg(any(feature = "derive", feature = "full"))]
1059pub fn visit_constraint<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast Constraint) {
1060    _visitor.visit_ident(&_i.ident);
1061    tokens_helper(_visitor, &_i.colon_token.spans);
1062    for el in Punctuated::pairs(&_i.bounds) {
1063        let it = el.value();
1064        _visitor.visit_type_param_bound(it)
1065    }
1066}
1067#[cfg(feature = "derive")]
1068pub fn visit_data<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast Data) {
1069    match *_i {
1070        Data::Struct(ref _binding_0) => {
1071            _visitor.visit_data_struct(_binding_0);
1072        }
1073        Data::Enum(ref _binding_0) => {
1074            _visitor.visit_data_enum(_binding_0);
1075        }
1076        Data::Union(ref _binding_0) => {
1077            _visitor.visit_data_union(_binding_0);
1078        }
1079    }
1080}
1081#[cfg(feature = "derive")]
1082pub fn visit_data_enum<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast DataEnum) {
1083    tokens_helper(_visitor, &_i.enum_token.span);
1084    tokens_helper(_visitor, &_i.brace_token.span);
1085    for el in Punctuated::pairs(&_i.variants) {
1086        let it = el.value();
1087        _visitor.visit_variant(it)
1088    }
1089}
1090#[cfg(feature = "derive")]
1091pub fn visit_data_struct<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast DataStruct) {
1092    tokens_helper(_visitor, &_i.struct_token.span);
1093    _visitor.visit_fields(&_i.fields);
1094    if let Some(ref it) = _i.semi_token {
1095        tokens_helper(_visitor, &it.spans)
1096    };
1097}
1098#[cfg(feature = "derive")]
1099pub fn visit_data_union<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast DataUnion) {
1100    tokens_helper(_visitor, &_i.union_token.span);
1101    _visitor.visit_fields_named(&_i.fields);
1102}
1103#[cfg(feature = "derive")]
1104pub fn visit_derive_input<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast DeriveInput) {
1105    for it in &_i.attrs {
1106        _visitor.visit_attribute(it)
1107    }
1108    _visitor.visit_visibility(&_i.vis);
1109    _visitor.visit_ident(&_i.ident);
1110    _visitor.visit_generics(&_i.generics);
1111    _visitor.visit_data(&_i.data);
1112}
1113#[cfg(any(feature = "derive", feature = "full"))]
1114pub fn visit_expr<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast Expr) {
1115    match *_i {
1116        Expr::Box(ref _binding_0) => {
1117            full!(_visitor.visit_expr_box(_binding_0));
1118        }
1119        Expr::InPlace(ref _binding_0) => {
1120            full!(_visitor.visit_expr_in_place(_binding_0));
1121        }
1122        Expr::Array(ref _binding_0) => {
1123            full!(_visitor.visit_expr_array(_binding_0));
1124        }
1125        Expr::Call(ref _binding_0) => {
1126            _visitor.visit_expr_call(_binding_0);
1127        }
1128        Expr::MethodCall(ref _binding_0) => {
1129            full!(_visitor.visit_expr_method_call(_binding_0));
1130        }
1131        Expr::Tuple(ref _binding_0) => {
1132            full!(_visitor.visit_expr_tuple(_binding_0));
1133        }
1134        Expr::Binary(ref _binding_0) => {
1135            _visitor.visit_expr_binary(_binding_0);
1136        }
1137        Expr::Unary(ref _binding_0) => {
1138            _visitor.visit_expr_unary(_binding_0);
1139        }
1140        Expr::Lit(ref _binding_0) => {
1141            _visitor.visit_expr_lit(_binding_0);
1142        }
1143        Expr::Cast(ref _binding_0) => {
1144            _visitor.visit_expr_cast(_binding_0);
1145        }
1146        Expr::Type(ref _binding_0) => {
1147            full!(_visitor.visit_expr_type(_binding_0));
1148        }
1149        Expr::Let(ref _binding_0) => {
1150            full!(_visitor.visit_expr_let(_binding_0));
1151        }
1152        Expr::If(ref _binding_0) => {
1153            full!(_visitor.visit_expr_if(_binding_0));
1154        }
1155        Expr::While(ref _binding_0) => {
1156            full!(_visitor.visit_expr_while(_binding_0));
1157        }
1158        Expr::ForLoop(ref _binding_0) => {
1159            full!(_visitor.visit_expr_for_loop(_binding_0));
1160        }
1161        Expr::Loop(ref _binding_0) => {
1162            full!(_visitor.visit_expr_loop(_binding_0));
1163        }
1164        Expr::Match(ref _binding_0) => {
1165            full!(_visitor.visit_expr_match(_binding_0));
1166        }
1167        Expr::Closure(ref _binding_0) => {
1168            full!(_visitor.visit_expr_closure(_binding_0));
1169        }
1170        Expr::Unsafe(ref _binding_0) => {
1171            full!(_visitor.visit_expr_unsafe(_binding_0));
1172        }
1173        Expr::Block(ref _binding_0) => {
1174            full!(_visitor.visit_expr_block(_binding_0));
1175        }
1176        Expr::Assign(ref _binding_0) => {
1177            full!(_visitor.visit_expr_assign(_binding_0));
1178        }
1179        Expr::AssignOp(ref _binding_0) => {
1180            full!(_visitor.visit_expr_assign_op(_binding_0));
1181        }
1182        Expr::Field(ref _binding_0) => {
1183            _visitor.visit_expr_field(_binding_0);
1184        }
1185        Expr::Index(ref _binding_0) => {
1186            _visitor.visit_expr_index(_binding_0);
1187        }
1188        Expr::Range(ref _binding_0) => {
1189            full!(_visitor.visit_expr_range(_binding_0));
1190        }
1191        Expr::Path(ref _binding_0) => {
1192            _visitor.visit_expr_path(_binding_0);
1193        }
1194        Expr::Reference(ref _binding_0) => {
1195            full!(_visitor.visit_expr_reference(_binding_0));
1196        }
1197        Expr::Break(ref _binding_0) => {
1198            full!(_visitor.visit_expr_break(_binding_0));
1199        }
1200        Expr::Continue(ref _binding_0) => {
1201            full!(_visitor.visit_expr_continue(_binding_0));
1202        }
1203        Expr::Return(ref _binding_0) => {
1204            full!(_visitor.visit_expr_return(_binding_0));
1205        }
1206        Expr::Macro(ref _binding_0) => {
1207            full!(_visitor.visit_expr_macro(_binding_0));
1208        }
1209        Expr::Struct(ref _binding_0) => {
1210            full!(_visitor.visit_expr_struct(_binding_0));
1211        }
1212        Expr::Repeat(ref _binding_0) => {
1213            full!(_visitor.visit_expr_repeat(_binding_0));
1214        }
1215        Expr::Paren(ref _binding_0) => {
1216            _visitor.visit_expr_paren(_binding_0);
1217        }
1218        Expr::Group(ref _binding_0) => {
1219            full!(_visitor.visit_expr_group(_binding_0));
1220        }
1221        Expr::Try(ref _binding_0) => {
1222            full!(_visitor.visit_expr_try(_binding_0));
1223        }
1224        Expr::Async(ref _binding_0) => {
1225            full!(_visitor.visit_expr_async(_binding_0));
1226        }
1227        Expr::TryBlock(ref _binding_0) => {
1228            full!(_visitor.visit_expr_try_block(_binding_0));
1229        }
1230        Expr::Yield(ref _binding_0) => {
1231            full!(_visitor.visit_expr_yield(_binding_0));
1232        }
1233        Expr::Verbatim(ref _binding_0) => {
1234            _visitor.visit_expr_verbatim(_binding_0);
1235        }
1236    }
1237}
1238#[cfg(feature = "full")]
1239pub fn visit_expr_array<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprArray) {
1240    for it in &_i.attrs {
1241        _visitor.visit_attribute(it)
1242    }
1243    tokens_helper(_visitor, &_i.bracket_token.span);
1244    for el in Punctuated::pairs(&_i.elems) {
1245        let it = el.value();
1246        _visitor.visit_expr(it)
1247    }
1248}
1249#[cfg(feature = "full")]
1250pub fn visit_expr_assign<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprAssign) {
1251    for it in &_i.attrs {
1252        _visitor.visit_attribute(it)
1253    }
1254    _visitor.visit_expr(&*_i.left);
1255    tokens_helper(_visitor, &_i.eq_token.spans);
1256    _visitor.visit_expr(&*_i.right);
1257}
1258#[cfg(feature = "full")]
1259pub fn visit_expr_assign_op<'ast, V: Visit<'ast> + ?Sized>(
1260    _visitor: &mut V,
1261    _i: &'ast ExprAssignOp,
1262) {
1263    for it in &_i.attrs {
1264        _visitor.visit_attribute(it)
1265    }
1266    _visitor.visit_expr(&*_i.left);
1267    _visitor.visit_bin_op(&_i.op);
1268    _visitor.visit_expr(&*_i.right);
1269}
1270#[cfg(feature = "full")]
1271pub fn visit_expr_async<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprAsync) {
1272    for it in &_i.attrs {
1273        _visitor.visit_attribute(it)
1274    }
1275    tokens_helper(_visitor, &_i.async_token.span);
1276    if let Some(ref it) = _i.capture {
1277        tokens_helper(_visitor, &it.span)
1278    };
1279    _visitor.visit_block(&_i.block);
1280}
1281#[cfg(any(feature = "derive", feature = "full"))]
1282pub fn visit_expr_binary<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprBinary) {
1283    for it in &_i.attrs {
1284        _visitor.visit_attribute(it)
1285    }
1286    _visitor.visit_expr(&*_i.left);
1287    _visitor.visit_bin_op(&_i.op);
1288    _visitor.visit_expr(&*_i.right);
1289}
1290#[cfg(feature = "full")]
1291pub fn visit_expr_block<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprBlock) {
1292    for it in &_i.attrs {
1293        _visitor.visit_attribute(it)
1294    }
1295    if let Some(ref it) = _i.label {
1296        _visitor.visit_label(it)
1297    };
1298    _visitor.visit_block(&_i.block);
1299}
1300#[cfg(feature = "full")]
1301pub fn visit_expr_box<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprBox) {
1302    for it in &_i.attrs {
1303        _visitor.visit_attribute(it)
1304    }
1305    tokens_helper(_visitor, &_i.box_token.span);
1306    _visitor.visit_expr(&*_i.expr);
1307}
1308#[cfg(feature = "full")]
1309pub fn visit_expr_break<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprBreak) {
1310    for it in &_i.attrs {
1311        _visitor.visit_attribute(it)
1312    }
1313    tokens_helper(_visitor, &_i.break_token.span);
1314    if let Some(ref it) = _i.label {
1315        _visitor.visit_lifetime(it)
1316    };
1317    if let Some(ref it) = _i.expr {
1318        _visitor.visit_expr(&**it)
1319    };
1320}
1321#[cfg(any(feature = "derive", feature = "full"))]
1322pub fn visit_expr_call<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprCall) {
1323    for it in &_i.attrs {
1324        _visitor.visit_attribute(it)
1325    }
1326    _visitor.visit_expr(&*_i.func);
1327    tokens_helper(_visitor, &_i.paren_token.span);
1328    for el in Punctuated::pairs(&_i.args) {
1329        let it = el.value();
1330        _visitor.visit_expr(it)
1331    }
1332}
1333#[cfg(any(feature = "derive", feature = "full"))]
1334pub fn visit_expr_cast<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprCast) {
1335    for it in &_i.attrs {
1336        _visitor.visit_attribute(it)
1337    }
1338    _visitor.visit_expr(&*_i.expr);
1339    tokens_helper(_visitor, &_i.as_token.span);
1340    _visitor.visit_type(&*_i.ty);
1341}
1342#[cfg(feature = "full")]
1343pub fn visit_expr_closure<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprClosure) {
1344    for it in &_i.attrs {
1345        _visitor.visit_attribute(it)
1346    }
1347    if let Some(ref it) = _i.asyncness {
1348        tokens_helper(_visitor, &it.span)
1349    };
1350    if let Some(ref it) = _i.movability {
1351        tokens_helper(_visitor, &it.span)
1352    };
1353    if let Some(ref it) = _i.capture {
1354        tokens_helper(_visitor, &it.span)
1355    };
1356    tokens_helper(_visitor, &_i.or1_token.spans);
1357    for el in Punctuated::pairs(&_i.inputs) {
1358        let it = el.value();
1359        _visitor.visit_fn_arg(it)
1360    }
1361    tokens_helper(_visitor, &_i.or2_token.spans);
1362    _visitor.visit_return_type(&_i.output);
1363    _visitor.visit_expr(&*_i.body);
1364}
1365#[cfg(feature = "full")]
1366pub fn visit_expr_continue<'ast, V: Visit<'ast> + ?Sized>(
1367    _visitor: &mut V,
1368    _i: &'ast ExprContinue,
1369) {
1370    for it in &_i.attrs {
1371        _visitor.visit_attribute(it)
1372    }
1373    tokens_helper(_visitor, &_i.continue_token.span);
1374    if let Some(ref it) = _i.label {
1375        _visitor.visit_lifetime(it)
1376    };
1377}
1378#[cfg(any(feature = "derive", feature = "full"))]
1379pub fn visit_expr_field<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprField) {
1380    for it in &_i.attrs {
1381        _visitor.visit_attribute(it)
1382    }
1383    _visitor.visit_expr(&*_i.base);
1384    tokens_helper(_visitor, &_i.dot_token.spans);
1385    _visitor.visit_member(&_i.member);
1386}
1387#[cfg(feature = "full")]
1388pub fn visit_expr_for_loop<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprForLoop) {
1389    for it in &_i.attrs {
1390        _visitor.visit_attribute(it)
1391    }
1392    if let Some(ref it) = _i.label {
1393        _visitor.visit_label(it)
1394    };
1395    tokens_helper(_visitor, &_i.for_token.span);
1396    _visitor.visit_pat(&*_i.pat);
1397    tokens_helper(_visitor, &_i.in_token.span);
1398    _visitor.visit_expr(&*_i.expr);
1399    _visitor.visit_block(&_i.body);
1400}
1401#[cfg(feature = "full")]
1402pub fn visit_expr_group<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprGroup) {
1403    for it in &_i.attrs {
1404        _visitor.visit_attribute(it)
1405    }
1406    tokens_helper(_visitor, &_i.group_token.span);
1407    _visitor.visit_expr(&*_i.expr);
1408}
1409#[cfg(feature = "full")]
1410pub fn visit_expr_if<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprIf) {
1411    for it in &_i.attrs {
1412        _visitor.visit_attribute(it)
1413    }
1414    tokens_helper(_visitor, &_i.if_token.span);
1415    _visitor.visit_expr(&*_i.cond);
1416    _visitor.visit_block(&_i.then_branch);
1417    if let Some(ref it) = _i.else_branch {
1418        tokens_helper(_visitor, &(it).0.span);
1419        _visitor.visit_expr(&*(it).1);
1420    };
1421}
1422#[cfg(feature = "full")]
1423pub fn visit_expr_in_place<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprInPlace) {
1424    for it in &_i.attrs {
1425        _visitor.visit_attribute(it)
1426    }
1427    _visitor.visit_expr(&*_i.place);
1428    tokens_helper(_visitor, &_i.arrow_token.spans);
1429    _visitor.visit_expr(&*_i.value);
1430}
1431#[cfg(any(feature = "derive", feature = "full"))]
1432pub fn visit_expr_index<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprIndex) {
1433    for it in &_i.attrs {
1434        _visitor.visit_attribute(it)
1435    }
1436    _visitor.visit_expr(&*_i.expr);
1437    tokens_helper(_visitor, &_i.bracket_token.span);
1438    _visitor.visit_expr(&*_i.index);
1439}
1440#[cfg(feature = "full")]
1441pub fn visit_expr_let<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprLet) {
1442    for it in &_i.attrs {
1443        _visitor.visit_attribute(it)
1444    }
1445    tokens_helper(_visitor, &_i.let_token.span);
1446    for el in Punctuated::pairs(&_i.pats) {
1447        let it = el.value();
1448        _visitor.visit_pat(it)
1449    }
1450    tokens_helper(_visitor, &_i.eq_token.spans);
1451    _visitor.visit_expr(&*_i.expr);
1452}
1453#[cfg(any(feature = "derive", feature = "full"))]
1454pub fn visit_expr_lit<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprLit) {
1455    for it in &_i.attrs {
1456        _visitor.visit_attribute(it)
1457    }
1458    _visitor.visit_lit(&_i.lit);
1459}
1460#[cfg(feature = "full")]
1461pub fn visit_expr_loop<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprLoop) {
1462    for it in &_i.attrs {
1463        _visitor.visit_attribute(it)
1464    }
1465    if let Some(ref it) = _i.label {
1466        _visitor.visit_label(it)
1467    };
1468    tokens_helper(_visitor, &_i.loop_token.span);
1469    _visitor.visit_block(&_i.body);
1470}
1471#[cfg(feature = "full")]
1472pub fn visit_expr_macro<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprMacro) {
1473    for it in &_i.attrs {
1474        _visitor.visit_attribute(it)
1475    }
1476    _visitor.visit_macro(&_i.mac);
1477}
1478#[cfg(feature = "full")]
1479pub fn visit_expr_match<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprMatch) {
1480    for it in &_i.attrs {
1481        _visitor.visit_attribute(it)
1482    }
1483    tokens_helper(_visitor, &_i.match_token.span);
1484    _visitor.visit_expr(&*_i.expr);
1485    tokens_helper(_visitor, &_i.brace_token.span);
1486    for it in &_i.arms {
1487        _visitor.visit_arm(it)
1488    }
1489}
1490#[cfg(feature = "full")]
1491pub fn visit_expr_method_call<'ast, V: Visit<'ast> + ?Sized>(
1492    _visitor: &mut V,
1493    _i: &'ast ExprMethodCall,
1494) {
1495    for it in &_i.attrs {
1496        _visitor.visit_attribute(it)
1497    }
1498    _visitor.visit_expr(&*_i.receiver);
1499    tokens_helper(_visitor, &_i.dot_token.spans);
1500    _visitor.visit_ident(&_i.method);
1501    if let Some(ref it) = _i.turbofish {
1502        _visitor.visit_method_turbofish(it)
1503    };
1504    tokens_helper(_visitor, &_i.paren_token.span);
1505    for el in Punctuated::pairs(&_i.args) {
1506        let it = el.value();
1507        _visitor.visit_expr(it)
1508    }
1509}
1510#[cfg(any(feature = "derive", feature = "full"))]
1511pub fn visit_expr_paren<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprParen) {
1512    for it in &_i.attrs {
1513        _visitor.visit_attribute(it)
1514    }
1515    tokens_helper(_visitor, &_i.paren_token.span);
1516    _visitor.visit_expr(&*_i.expr);
1517}
1518#[cfg(any(feature = "derive", feature = "full"))]
1519pub fn visit_expr_path<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprPath) {
1520    for it in &_i.attrs {
1521        _visitor.visit_attribute(it)
1522    }
1523    if let Some(ref it) = _i.qself {
1524        _visitor.visit_qself(it)
1525    };
1526    _visitor.visit_path(&_i.path);
1527}
1528#[cfg(feature = "full")]
1529pub fn visit_expr_range<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprRange) {
1530    for it in &_i.attrs {
1531        _visitor.visit_attribute(it)
1532    }
1533    if let Some(ref it) = _i.from {
1534        _visitor.visit_expr(&**it)
1535    };
1536    _visitor.visit_range_limits(&_i.limits);
1537    if let Some(ref it) = _i.to {
1538        _visitor.visit_expr(&**it)
1539    };
1540}
1541#[cfg(feature = "full")]
1542pub fn visit_expr_reference<'ast, V: Visit<'ast> + ?Sized>(
1543    _visitor: &mut V,
1544    _i: &'ast ExprReference,
1545) {
1546    for it in &_i.attrs {
1547        _visitor.visit_attribute(it)
1548    }
1549    tokens_helper(_visitor, &_i.and_token.spans);
1550    if let Some(ref it) = _i.mutability {
1551        tokens_helper(_visitor, &it.span)
1552    };
1553    _visitor.visit_expr(&*_i.expr);
1554}
1555#[cfg(feature = "full")]
1556pub fn visit_expr_repeat<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprRepeat) {
1557    for it in &_i.attrs {
1558        _visitor.visit_attribute(it)
1559    }
1560    tokens_helper(_visitor, &_i.bracket_token.span);
1561    _visitor.visit_expr(&*_i.expr);
1562    tokens_helper(_visitor, &_i.semi_token.spans);
1563    _visitor.visit_expr(&*_i.len);
1564}
1565#[cfg(feature = "full")]
1566pub fn visit_expr_return<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprReturn) {
1567    for it in &_i.attrs {
1568        _visitor.visit_attribute(it)
1569    }
1570    tokens_helper(_visitor, &_i.return_token.span);
1571    if let Some(ref it) = _i.expr {
1572        _visitor.visit_expr(&**it)
1573    };
1574}
1575#[cfg(feature = "full")]
1576pub fn visit_expr_struct<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprStruct) {
1577    for it in &_i.attrs {
1578        _visitor.visit_attribute(it)
1579    }
1580    _visitor.visit_path(&_i.path);
1581    tokens_helper(_visitor, &_i.brace_token.span);
1582    for el in Punctuated::pairs(&_i.fields) {
1583        let it = el.value();
1584        _visitor.visit_field_value(it)
1585    }
1586    if let Some(ref it) = _i.dot2_token {
1587        tokens_helper(_visitor, &it.spans)
1588    };
1589    if let Some(ref it) = _i.rest {
1590        _visitor.visit_expr(&**it)
1591    };
1592}
1593#[cfg(feature = "full")]
1594pub fn visit_expr_try<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprTry) {
1595    for it in &_i.attrs {
1596        _visitor.visit_attribute(it)
1597    }
1598    _visitor.visit_expr(&*_i.expr);
1599    tokens_helper(_visitor, &_i.question_token.spans);
1600}
1601#[cfg(feature = "full")]
1602pub fn visit_expr_try_block<'ast, V: Visit<'ast> + ?Sized>(
1603    _visitor: &mut V,
1604    _i: &'ast ExprTryBlock,
1605) {
1606    for it in &_i.attrs {
1607        _visitor.visit_attribute(it)
1608    }
1609    tokens_helper(_visitor, &_i.try_token.span);
1610    _visitor.visit_block(&_i.block);
1611}
1612#[cfg(feature = "full")]
1613pub fn visit_expr_tuple<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprTuple) {
1614    for it in &_i.attrs {
1615        _visitor.visit_attribute(it)
1616    }
1617    tokens_helper(_visitor, &_i.paren_token.span);
1618    for el in Punctuated::pairs(&_i.elems) {
1619        let it = el.value();
1620        _visitor.visit_expr(it)
1621    }
1622}
1623#[cfg(feature = "full")]
1624pub fn visit_expr_type<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprType) {
1625    for it in &_i.attrs {
1626        _visitor.visit_attribute(it)
1627    }
1628    _visitor.visit_expr(&*_i.expr);
1629    tokens_helper(_visitor, &_i.colon_token.spans);
1630    _visitor.visit_type(&*_i.ty);
1631}
1632#[cfg(any(feature = "derive", feature = "full"))]
1633pub fn visit_expr_unary<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprUnary) {
1634    for it in &_i.attrs {
1635        _visitor.visit_attribute(it)
1636    }
1637    _visitor.visit_un_op(&_i.op);
1638    _visitor.visit_expr(&*_i.expr);
1639}
1640#[cfg(feature = "full")]
1641pub fn visit_expr_unsafe<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprUnsafe) {
1642    for it in &_i.attrs {
1643        _visitor.visit_attribute(it)
1644    }
1645    tokens_helper(_visitor, &_i.unsafe_token.span);
1646    _visitor.visit_block(&_i.block);
1647}
1648#[cfg(any(feature = "derive", feature = "full"))]
1649pub fn visit_expr_verbatim<'ast, V: Visit<'ast> + ?Sized>(
1650    _visitor: &mut V,
1651    _i: &'ast ExprVerbatim,
1652) {
1653    skip!(_i.tts);
1654}
1655#[cfg(feature = "full")]
1656pub fn visit_expr_while<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprWhile) {
1657    for it in &_i.attrs {
1658        _visitor.visit_attribute(it)
1659    }
1660    if let Some(ref it) = _i.label {
1661        _visitor.visit_label(it)
1662    };
1663    tokens_helper(_visitor, &_i.while_token.span);
1664    _visitor.visit_expr(&*_i.cond);
1665    _visitor.visit_block(&_i.body);
1666}
1667#[cfg(feature = "full")]
1668pub fn visit_expr_yield<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprYield) {
1669    for it in &_i.attrs {
1670        _visitor.visit_attribute(it)
1671    }
1672    tokens_helper(_visitor, &_i.yield_token.span);
1673    if let Some(ref it) = _i.expr {
1674        _visitor.visit_expr(&**it)
1675    };
1676}
1677#[cfg(any(feature = "derive", feature = "full"))]
1678pub fn visit_field<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast Field) {
1679    for it in &_i.attrs {
1680        _visitor.visit_attribute(it)
1681    }
1682    _visitor.visit_visibility(&_i.vis);
1683    if let Some(ref it) = _i.ident {
1684        _visitor.visit_ident(it)
1685    };
1686    if let Some(ref it) = _i.colon_token {
1687        tokens_helper(_visitor, &it.spans)
1688    };
1689    _visitor.visit_type(&_i.ty);
1690}
1691#[cfg(feature = "full")]
1692pub fn visit_field_pat<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast FieldPat) {
1693    for it in &_i.attrs {
1694        _visitor.visit_attribute(it)
1695    }
1696    _visitor.visit_member(&_i.member);
1697    if let Some(ref it) = _i.colon_token {
1698        tokens_helper(_visitor, &it.spans)
1699    };
1700    _visitor.visit_pat(&*_i.pat);
1701}
1702#[cfg(feature = "full")]
1703pub fn visit_field_value<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast FieldValue) {
1704    for it in &_i.attrs {
1705        _visitor.visit_attribute(it)
1706    }
1707    _visitor.visit_member(&_i.member);
1708    if let Some(ref it) = _i.colon_token {
1709        tokens_helper(_visitor, &it.spans)
1710    };
1711    _visitor.visit_expr(&_i.expr);
1712}
1713#[cfg(any(feature = "derive", feature = "full"))]
1714pub fn visit_fields<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast Fields) {
1715    match *_i {
1716        Fields::Named(ref _binding_0) => {
1717            _visitor.visit_fields_named(_binding_0);
1718        }
1719        Fields::Unnamed(ref _binding_0) => {
1720            _visitor.visit_fields_unnamed(_binding_0);
1721        }
1722        Fields::Unit => {}
1723    }
1724}
1725#[cfg(any(feature = "derive", feature = "full"))]
1726pub fn visit_fields_named<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast FieldsNamed) {
1727    tokens_helper(_visitor, &_i.brace_token.span);
1728    for el in Punctuated::pairs(&_i.named) {
1729        let it = el.value();
1730        _visitor.visit_field(it)
1731    }
1732}
1733#[cfg(any(feature = "derive", feature = "full"))]
1734pub fn visit_fields_unnamed<'ast, V: Visit<'ast> + ?Sized>(
1735    _visitor: &mut V,
1736    _i: &'ast FieldsUnnamed,
1737) {
1738    tokens_helper(_visitor, &_i.paren_token.span);
1739    for el in Punctuated::pairs(&_i.unnamed) {
1740        let it = el.value();
1741        _visitor.visit_field(it)
1742    }
1743}
1744#[cfg(feature = "full")]
1745pub fn visit_file<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast File) {
1746    skip!(_i.shebang);
1747    for it in &_i.attrs {
1748        _visitor.visit_attribute(it)
1749    }
1750    for it in &_i.items {
1751        _visitor.visit_item(it)
1752    }
1753}
1754#[cfg(feature = "full")]
1755pub fn visit_fn_arg<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast FnArg) {
1756    match *_i {
1757        FnArg::SelfRef(ref _binding_0) => {
1758            _visitor.visit_arg_self_ref(_binding_0);
1759        }
1760        FnArg::SelfValue(ref _binding_0) => {
1761            _visitor.visit_arg_self(_binding_0);
1762        }
1763        FnArg::Captured(ref _binding_0) => {
1764            _visitor.visit_arg_captured(_binding_0);
1765        }
1766        FnArg::Inferred(ref _binding_0) => {
1767            _visitor.visit_pat(_binding_0);
1768        }
1769        FnArg::Ignored(ref _binding_0) => {
1770            _visitor.visit_type(_binding_0);
1771        }
1772    }
1773}
1774#[cfg(feature = "full")]
1775pub fn visit_fn_decl<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast FnDecl) {
1776    tokens_helper(_visitor, &_i.fn_token.span);
1777    _visitor.visit_generics(&_i.generics);
1778    tokens_helper(_visitor, &_i.paren_token.span);
1779    for el in Punctuated::pairs(&_i.inputs) {
1780        let it = el.value();
1781        _visitor.visit_fn_arg(it)
1782    }
1783    if let Some(ref it) = _i.variadic {
1784        tokens_helper(_visitor, &it.spans)
1785    };
1786    _visitor.visit_return_type(&_i.output);
1787}
1788#[cfg(feature = "full")]
1789pub fn visit_foreign_item<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ForeignItem) {
1790    match *_i {
1791        ForeignItem::Fn(ref _binding_0) => {
1792            _visitor.visit_foreign_item_fn(_binding_0);
1793        }
1794        ForeignItem::Static(ref _binding_0) => {
1795            _visitor.visit_foreign_item_static(_binding_0);
1796        }
1797        ForeignItem::Type(ref _binding_0) => {
1798            _visitor.visit_foreign_item_type(_binding_0);
1799        }
1800        ForeignItem::Macro(ref _binding_0) => {
1801            _visitor.visit_foreign_item_macro(_binding_0);
1802        }
1803        ForeignItem::Verbatim(ref _binding_0) => {
1804            _visitor.visit_foreign_item_verbatim(_binding_0);
1805        }
1806    }
1807}
1808#[cfg(feature = "full")]
1809pub fn visit_foreign_item_fn<'ast, V: Visit<'ast> + ?Sized>(
1810    _visitor: &mut V,
1811    _i: &'ast ForeignItemFn,
1812) {
1813    for it in &_i.attrs {
1814        _visitor.visit_attribute(it)
1815    }
1816    _visitor.visit_visibility(&_i.vis);
1817    _visitor.visit_ident(&_i.ident);
1818    _visitor.visit_fn_decl(&*_i.decl);
1819    tokens_helper(_visitor, &_i.semi_token.spans);
1820}
1821#[cfg(feature = "full")]
1822pub fn visit_foreign_item_macro<'ast, V: Visit<'ast> + ?Sized>(
1823    _visitor: &mut V,
1824    _i: &'ast ForeignItemMacro,
1825) {
1826    for it in &_i.attrs {
1827        _visitor.visit_attribute(it)
1828    }
1829    _visitor.visit_macro(&_i.mac);
1830    if let Some(ref it) = _i.semi_token {
1831        tokens_helper(_visitor, &it.spans)
1832    };
1833}
1834#[cfg(feature = "full")]
1835pub fn visit_foreign_item_static<'ast, V: Visit<'ast> + ?Sized>(
1836    _visitor: &mut V,
1837    _i: &'ast ForeignItemStatic,
1838) {
1839    for it in &_i.attrs {
1840        _visitor.visit_attribute(it)
1841    }
1842    _visitor.visit_visibility(&_i.vis);
1843    tokens_helper(_visitor, &_i.static_token.span);
1844    if let Some(ref it) = _i.mutability {
1845        tokens_helper(_visitor, &it.span)
1846    };
1847    _visitor.visit_ident(&_i.ident);
1848    tokens_helper(_visitor, &_i.colon_token.spans);
1849    _visitor.visit_type(&*_i.ty);
1850    tokens_helper(_visitor, &_i.semi_token.spans);
1851}
1852#[cfg(feature = "full")]
1853pub fn visit_foreign_item_type<'ast, V: Visit<'ast> + ?Sized>(
1854    _visitor: &mut V,
1855    _i: &'ast ForeignItemType,
1856) {
1857    for it in &_i.attrs {
1858        _visitor.visit_attribute(it)
1859    }
1860    _visitor.visit_visibility(&_i.vis);
1861    tokens_helper(_visitor, &_i.type_token.span);
1862    _visitor.visit_ident(&_i.ident);
1863    tokens_helper(_visitor, &_i.semi_token.spans);
1864}
1865#[cfg(feature = "full")]
1866pub fn visit_foreign_item_verbatim<'ast, V: Visit<'ast> + ?Sized>(
1867    _visitor: &mut V,
1868    _i: &'ast ForeignItemVerbatim,
1869) {
1870    skip!(_i.tts);
1871}
1872#[cfg(any(feature = "derive", feature = "full"))]
1873pub fn visit_generic_argument<'ast, V: Visit<'ast> + ?Sized>(
1874    _visitor: &mut V,
1875    _i: &'ast GenericArgument,
1876) {
1877    match *_i {
1878        GenericArgument::Lifetime(ref _binding_0) => {
1879            _visitor.visit_lifetime(_binding_0);
1880        }
1881        GenericArgument::Type(ref _binding_0) => {
1882            _visitor.visit_type(_binding_0);
1883        }
1884        GenericArgument::Binding(ref _binding_0) => {
1885            _visitor.visit_binding(_binding_0);
1886        }
1887        GenericArgument::Constraint(ref _binding_0) => {
1888            _visitor.visit_constraint(_binding_0);
1889        }
1890        GenericArgument::Const(ref _binding_0) => {
1891            _visitor.visit_expr(_binding_0);
1892        }
1893    }
1894}
1895#[cfg(feature = "full")]
1896pub fn visit_generic_method_argument<'ast, V: Visit<'ast> + ?Sized>(
1897    _visitor: &mut V,
1898    _i: &'ast GenericMethodArgument,
1899) {
1900    match *_i {
1901        GenericMethodArgument::Type(ref _binding_0) => {
1902            _visitor.visit_type(_binding_0);
1903        }
1904        GenericMethodArgument::Const(ref _binding_0) => {
1905            _visitor.visit_expr(_binding_0);
1906        }
1907    }
1908}
1909#[cfg(any(feature = "derive", feature = "full"))]
1910pub fn visit_generic_param<'ast, V: Visit<'ast> + ?Sized>(
1911    _visitor: &mut V,
1912    _i: &'ast GenericParam,
1913) {
1914    match *_i {
1915        GenericParam::Type(ref _binding_0) => {
1916            _visitor.visit_type_param(_binding_0);
1917        }
1918        GenericParam::Lifetime(ref _binding_0) => {
1919            _visitor.visit_lifetime_def(_binding_0);
1920        }
1921        GenericParam::Const(ref _binding_0) => {
1922            _visitor.visit_const_param(_binding_0);
1923        }
1924    }
1925}
1926#[cfg(any(feature = "derive", feature = "full"))]
1927pub fn visit_generics<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast Generics) {
1928    if let Some(ref it) = _i.lt_token {
1929        tokens_helper(_visitor, &it.spans)
1930    };
1931    for el in Punctuated::pairs(&_i.params) {
1932        let it = el.value();
1933        _visitor.visit_generic_param(it)
1934    }
1935    if let Some(ref it) = _i.gt_token {
1936        tokens_helper(_visitor, &it.spans)
1937    };
1938    if let Some(ref it) = _i.where_clause {
1939        _visitor.visit_where_clause(it)
1940    };
1941}
1942#[cfg(feature = "full")]
1943pub fn visit_impl_item<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ImplItem) {
1944    match *_i {
1945        ImplItem::Const(ref _binding_0) => {
1946            _visitor.visit_impl_item_const(_binding_0);
1947        }
1948        ImplItem::Method(ref _binding_0) => {
1949            _visitor.visit_impl_item_method(_binding_0);
1950        }
1951        ImplItem::Type(ref _binding_0) => {
1952            _visitor.visit_impl_item_type(_binding_0);
1953        }
1954        ImplItem::Existential(ref _binding_0) => {
1955            _visitor.visit_impl_item_existential(_binding_0);
1956        }
1957        ImplItem::Macro(ref _binding_0) => {
1958            _visitor.visit_impl_item_macro(_binding_0);
1959        }
1960        ImplItem::Verbatim(ref _binding_0) => {
1961            _visitor.visit_impl_item_verbatim(_binding_0);
1962        }
1963    }
1964}
1965#[cfg(feature = "full")]
1966pub fn visit_impl_item_const<'ast, V: Visit<'ast> + ?Sized>(
1967    _visitor: &mut V,
1968    _i: &'ast ImplItemConst,
1969) {
1970    for it in &_i.attrs {
1971        _visitor.visit_attribute(it)
1972    }
1973    _visitor.visit_visibility(&_i.vis);
1974    if let Some(ref it) = _i.defaultness {
1975        tokens_helper(_visitor, &it.span)
1976    };
1977    tokens_helper(_visitor, &_i.const_token.span);
1978    _visitor.visit_ident(&_i.ident);
1979    tokens_helper(_visitor, &_i.colon_token.spans);
1980    _visitor.visit_type(&_i.ty);
1981    tokens_helper(_visitor, &_i.eq_token.spans);
1982    _visitor.visit_expr(&_i.expr);
1983    tokens_helper(_visitor, &_i.semi_token.spans);
1984}
1985#[cfg(feature = "full")]
1986pub fn visit_impl_item_existential<'ast, V: Visit<'ast> + ?Sized>(
1987    _visitor: &mut V,
1988    _i: &'ast ImplItemExistential,
1989) {
1990    for it in &_i.attrs {
1991        _visitor.visit_attribute(it)
1992    }
1993    tokens_helper(_visitor, &_i.existential_token.span);
1994    tokens_helper(_visitor, &_i.type_token.span);
1995    _visitor.visit_ident(&_i.ident);
1996    _visitor.visit_generics(&_i.generics);
1997    if let Some(ref it) = _i.colon_token {
1998        tokens_helper(_visitor, &it.spans)
1999    };
2000    for el in Punctuated::pairs(&_i.bounds) {
2001        let it = el.value();
2002        _visitor.visit_type_param_bound(it)
2003    }
2004    tokens_helper(_visitor, &_i.semi_token.spans);
2005}
2006#[cfg(feature = "full")]
2007pub fn visit_impl_item_macro<'ast, V: Visit<'ast> + ?Sized>(
2008    _visitor: &mut V,
2009    _i: &'ast ImplItemMacro,
2010) {
2011    for it in &_i.attrs {
2012        _visitor.visit_attribute(it)
2013    }
2014    _visitor.visit_macro(&_i.mac);
2015    if let Some(ref it) = _i.semi_token {
2016        tokens_helper(_visitor, &it.spans)
2017    };
2018}
2019#[cfg(feature = "full")]
2020pub fn visit_impl_item_method<'ast, V: Visit<'ast> + ?Sized>(
2021    _visitor: &mut V,
2022    _i: &'ast ImplItemMethod,
2023) {
2024    for it in &_i.attrs {
2025        _visitor.visit_attribute(it)
2026    }
2027    _visitor.visit_visibility(&_i.vis);
2028    if let Some(ref it) = _i.defaultness {
2029        tokens_helper(_visitor, &it.span)
2030    };
2031    _visitor.visit_method_sig(&_i.sig);
2032    _visitor.visit_block(&_i.block);
2033}
2034#[cfg(feature = "full")]
2035pub fn visit_impl_item_type<'ast, V: Visit<'ast> + ?Sized>(
2036    _visitor: &mut V,
2037    _i: &'ast ImplItemType,
2038) {
2039    for it in &_i.attrs {
2040        _visitor.visit_attribute(it)
2041    }
2042    _visitor.visit_visibility(&_i.vis);
2043    if let Some(ref it) = _i.defaultness {
2044        tokens_helper(_visitor, &it.span)
2045    };
2046    tokens_helper(_visitor, &_i.type_token.span);
2047    _visitor.visit_ident(&_i.ident);
2048    _visitor.visit_generics(&_i.generics);
2049    tokens_helper(_visitor, &_i.eq_token.spans);
2050    _visitor.visit_type(&_i.ty);
2051    tokens_helper(_visitor, &_i.semi_token.spans);
2052}
2053#[cfg(feature = "full")]
2054pub fn visit_impl_item_verbatim<'ast, V: Visit<'ast> + ?Sized>(
2055    _visitor: &mut V,
2056    _i: &'ast ImplItemVerbatim,
2057) {
2058    skip!(_i.tts);
2059}
2060#[cfg(any(feature = "derive", feature = "full"))]
2061pub fn visit_index<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast Index) {
2062    skip!(_i.index);
2063    _visitor.visit_span(&_i.span);
2064}
2065#[cfg(feature = "full")]
2066pub fn visit_item<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast Item) {
2067    match *_i {
2068        Item::ExternCrate(ref _binding_0) => {
2069            _visitor.visit_item_extern_crate(_binding_0);
2070        }
2071        Item::Use(ref _binding_0) => {
2072            _visitor.visit_item_use(_binding_0);
2073        }
2074        Item::Static(ref _binding_0) => {
2075            _visitor.visit_item_static(_binding_0);
2076        }
2077        Item::Const(ref _binding_0) => {
2078            _visitor.visit_item_const(_binding_0);
2079        }
2080        Item::Fn(ref _binding_0) => {
2081            _visitor.visit_item_fn(_binding_0);
2082        }
2083        Item::Mod(ref _binding_0) => {
2084            _visitor.visit_item_mod(_binding_0);
2085        }
2086        Item::ForeignMod(ref _binding_0) => {
2087            _visitor.visit_item_foreign_mod(_binding_0);
2088        }
2089        Item::Type(ref _binding_0) => {
2090            _visitor.visit_item_type(_binding_0);
2091        }
2092        Item::Existential(ref _binding_0) => {
2093            _visitor.visit_item_existential(_binding_0);
2094        }
2095        Item::Struct(ref _binding_0) => {
2096            _visitor.visit_item_struct(_binding_0);
2097        }
2098        Item::Enum(ref _binding_0) => {
2099            _visitor.visit_item_enum(_binding_0);
2100        }
2101        Item::Union(ref _binding_0) => {
2102            _visitor.visit_item_union(_binding_0);
2103        }
2104        Item::Trait(ref _binding_0) => {
2105            _visitor.visit_item_trait(_binding_0);
2106        }
2107        Item::TraitAlias(ref _binding_0) => {
2108            _visitor.visit_item_trait_alias(_binding_0);
2109        }
2110        Item::Impl(ref _binding_0) => {
2111            _visitor.visit_item_impl(_binding_0);
2112        }
2113        Item::Macro(ref _binding_0) => {
2114            _visitor.visit_item_macro(_binding_0);
2115        }
2116        Item::Macro2(ref _binding_0) => {
2117            _visitor.visit_item_macro2(_binding_0);
2118        }
2119        Item::Verbatim(ref _binding_0) => {
2120            _visitor.visit_item_verbatim(_binding_0);
2121        }
2122    }
2123}
2124#[cfg(feature = "full")]
2125pub fn visit_item_const<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ItemConst) {
2126    for it in &_i.attrs {
2127        _visitor.visit_attribute(it)
2128    }
2129    _visitor.visit_visibility(&_i.vis);
2130    tokens_helper(_visitor, &_i.const_token.span);
2131    _visitor.visit_ident(&_i.ident);
2132    tokens_helper(_visitor, &_i.colon_token.spans);
2133    _visitor.visit_type(&*_i.ty);
2134    tokens_helper(_visitor, &_i.eq_token.spans);
2135    _visitor.visit_expr(&*_i.expr);
2136    tokens_helper(_visitor, &_i.semi_token.spans);
2137}
2138#[cfg(feature = "full")]
2139pub fn visit_item_enum<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ItemEnum) {
2140    for it in &_i.attrs {
2141        _visitor.visit_attribute(it)
2142    }
2143    _visitor.visit_visibility(&_i.vis);
2144    tokens_helper(_visitor, &_i.enum_token.span);
2145    _visitor.visit_ident(&_i.ident);
2146    _visitor.visit_generics(&_i.generics);
2147    tokens_helper(_visitor, &_i.brace_token.span);
2148    for el in Punctuated::pairs(&_i.variants) {
2149        let it = el.value();
2150        _visitor.visit_variant(it)
2151    }
2152}
2153#[cfg(feature = "full")]
2154pub fn visit_item_existential<'ast, V: Visit<'ast> + ?Sized>(
2155    _visitor: &mut V,
2156    _i: &'ast ItemExistential,
2157) {
2158    for it in &_i.attrs {
2159        _visitor.visit_attribute(it)
2160    }
2161    _visitor.visit_visibility(&_i.vis);
2162    tokens_helper(_visitor, &_i.existential_token.span);
2163    tokens_helper(_visitor, &_i.type_token.span);
2164    _visitor.visit_ident(&_i.ident);
2165    _visitor.visit_generics(&_i.generics);
2166    if let Some(ref it) = _i.colon_token {
2167        tokens_helper(_visitor, &it.spans)
2168    };
2169    for el in Punctuated::pairs(&_i.bounds) {
2170        let it = el.value();
2171        _visitor.visit_type_param_bound(it)
2172    }
2173    tokens_helper(_visitor, &_i.semi_token.spans);
2174}
2175#[cfg(feature = "full")]
2176pub fn visit_item_extern_crate<'ast, V: Visit<'ast> + ?Sized>(
2177    _visitor: &mut V,
2178    _i: &'ast ItemExternCrate,
2179) {
2180    for it in &_i.attrs {
2181        _visitor.visit_attribute(it)
2182    }
2183    _visitor.visit_visibility(&_i.vis);
2184    tokens_helper(_visitor, &_i.extern_token.span);
2185    tokens_helper(_visitor, &_i.crate_token.span);
2186    _visitor.visit_ident(&_i.ident);
2187    if let Some(ref it) = _i.rename {
2188        tokens_helper(_visitor, &(it).0.span);
2189        _visitor.visit_ident(&(it).1);
2190    };
2191    tokens_helper(_visitor, &_i.semi_token.spans);
2192}
2193#[cfg(feature = "full")]
2194pub fn visit_item_fn<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ItemFn) {
2195    for it in &_i.attrs {
2196        _visitor.visit_attribute(it)
2197    }
2198    _visitor.visit_visibility(&_i.vis);
2199    if let Some(ref it) = _i.constness {
2200        tokens_helper(_visitor, &it.span)
2201    };
2202    if let Some(ref it) = _i.unsafety {
2203        tokens_helper(_visitor, &it.span)
2204    };
2205    if let Some(ref it) = _i.asyncness {
2206        tokens_helper(_visitor, &it.span)
2207    };
2208    if let Some(ref it) = _i.abi {
2209        _visitor.visit_abi(it)
2210    };
2211    _visitor.visit_ident(&_i.ident);
2212    _visitor.visit_fn_decl(&*_i.decl);
2213    _visitor.visit_block(&*_i.block);
2214}
2215#[cfg(feature = "full")]
2216pub fn visit_item_foreign_mod<'ast, V: Visit<'ast> + ?Sized>(
2217    _visitor: &mut V,
2218    _i: &'ast ItemForeignMod,
2219) {
2220    for it in &_i.attrs {
2221        _visitor.visit_attribute(it)
2222    }
2223    _visitor.visit_abi(&_i.abi);
2224    tokens_helper(_visitor, &_i.brace_token.span);
2225    for it in &_i.items {
2226        _visitor.visit_foreign_item(it)
2227    }
2228}
2229#[cfg(feature = "full")]
2230pub fn visit_item_impl<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ItemImpl) {
2231    for it in &_i.attrs {
2232        _visitor.visit_attribute(it)
2233    }
2234    if let Some(ref it) = _i.defaultness {
2235        tokens_helper(_visitor, &it.span)
2236    };
2237    if let Some(ref it) = _i.unsafety {
2238        tokens_helper(_visitor, &it.span)
2239    };
2240    tokens_helper(_visitor, &_i.impl_token.span);
2241    _visitor.visit_generics(&_i.generics);
2242    if let Some(ref it) = _i.trait_ {
2243        if let Some(ref it) = (it).0 {
2244            tokens_helper(_visitor, &it.spans)
2245        };
2246        _visitor.visit_path(&(it).1);
2247        tokens_helper(_visitor, &(it).2.span);
2248    };
2249    _visitor.visit_type(&*_i.self_ty);
2250    tokens_helper(_visitor, &_i.brace_token.span);
2251    for it in &_i.items {
2252        _visitor.visit_impl_item(it)
2253    }
2254}
2255#[cfg(feature = "full")]
2256pub fn visit_item_macro<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ItemMacro) {
2257    for it in &_i.attrs {
2258        _visitor.visit_attribute(it)
2259    }
2260    if let Some(ref it) = _i.ident {
2261        _visitor.visit_ident(it)
2262    };
2263    _visitor.visit_macro(&_i.mac);
2264    if let Some(ref it) = _i.semi_token {
2265        tokens_helper(_visitor, &it.spans)
2266    };
2267}
2268#[cfg(feature = "full")]
2269pub fn visit_item_macro2<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ItemMacro2) {
2270    for it in &_i.attrs {
2271        _visitor.visit_attribute(it)
2272    }
2273    _visitor.visit_visibility(&_i.vis);
2274    tokens_helper(_visitor, &_i.macro_token.span);
2275    _visitor.visit_ident(&_i.ident);
2276    tokens_helper(_visitor, &_i.paren_token.span);
2277    skip!(_i.args);
2278    tokens_helper(_visitor, &_i.brace_token.span);
2279    skip!(_i.body);
2280}
2281#[cfg(feature = "full")]
2282pub fn visit_item_mod<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ItemMod) {
2283    for it in &_i.attrs {
2284        _visitor.visit_attribute(it)
2285    }
2286    _visitor.visit_visibility(&_i.vis);
2287    tokens_helper(_visitor, &_i.mod_token.span);
2288    _visitor.visit_ident(&_i.ident);
2289    if let Some(ref it) = _i.content {
2290        tokens_helper(_visitor, &(it).0.span);
2291        for it in &(it).1 {
2292            _visitor.visit_item(it)
2293        }
2294    };
2295    if let Some(ref it) = _i.semi {
2296        tokens_helper(_visitor, &it.spans)
2297    };
2298}
2299#[cfg(feature = "full")]
2300pub fn visit_item_static<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ItemStatic) {
2301    for it in &_i.attrs {
2302        _visitor.visit_attribute(it)
2303    }
2304    _visitor.visit_visibility(&_i.vis);
2305    tokens_helper(_visitor, &_i.static_token.span);
2306    if let Some(ref it) = _i.mutability {
2307        tokens_helper(_visitor, &it.span)
2308    };
2309    _visitor.visit_ident(&_i.ident);
2310    tokens_helper(_visitor, &_i.colon_token.spans);
2311    _visitor.visit_type(&*_i.ty);
2312    tokens_helper(_visitor, &_i.eq_token.spans);
2313    _visitor.visit_expr(&*_i.expr);
2314    tokens_helper(_visitor, &_i.semi_token.spans);
2315}
2316#[cfg(feature = "full")]
2317pub fn visit_item_struct<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ItemStruct) {
2318    for it in &_i.attrs {
2319        _visitor.visit_attribute(it)
2320    }
2321    _visitor.visit_visibility(&_i.vis);
2322    tokens_helper(_visitor, &_i.struct_token.span);
2323    _visitor.visit_ident(&_i.ident);
2324    _visitor.visit_generics(&_i.generics);
2325    _visitor.visit_fields(&_i.fields);
2326    if let Some(ref it) = _i.semi_token {
2327        tokens_helper(_visitor, &it.spans)
2328    };
2329}
2330#[cfg(feature = "full")]
2331pub fn visit_item_trait<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ItemTrait) {
2332    for it in &_i.attrs {
2333        _visitor.visit_attribute(it)
2334    }
2335    _visitor.visit_visibility(&_i.vis);
2336    if let Some(ref it) = _i.unsafety {
2337        tokens_helper(_visitor, &it.span)
2338    };
2339    if let Some(ref it) = _i.auto_token {
2340        tokens_helper(_visitor, &it.span)
2341    };
2342    tokens_helper(_visitor, &_i.trait_token.span);
2343    _visitor.visit_ident(&_i.ident);
2344    _visitor.visit_generics(&_i.generics);
2345    if let Some(ref it) = _i.colon_token {
2346        tokens_helper(_visitor, &it.spans)
2347    };
2348    for el in Punctuated::pairs(&_i.supertraits) {
2349        let it = el.value();
2350        _visitor.visit_type_param_bound(it)
2351    }
2352    tokens_helper(_visitor, &_i.brace_token.span);
2353    for it in &_i.items {
2354        _visitor.visit_trait_item(it)
2355    }
2356}
2357#[cfg(feature = "full")]
2358pub fn visit_item_trait_alias<'ast, V: Visit<'ast> + ?Sized>(
2359    _visitor: &mut V,
2360    _i: &'ast ItemTraitAlias,
2361) {
2362    for it in &_i.attrs {
2363        _visitor.visit_attribute(it)
2364    }
2365    _visitor.visit_visibility(&_i.vis);
2366    tokens_helper(_visitor, &_i.trait_token.span);
2367    _visitor.visit_ident(&_i.ident);
2368    _visitor.visit_generics(&_i.generics);
2369    tokens_helper(_visitor, &_i.eq_token.spans);
2370    for el in Punctuated::pairs(&_i.bounds) {
2371        let it = el.value();
2372        _visitor.visit_type_param_bound(it)
2373    }
2374    tokens_helper(_visitor, &_i.semi_token.spans);
2375}
2376#[cfg(feature = "full")]
2377pub fn visit_item_type<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ItemType) {
2378    for it in &_i.attrs {
2379        _visitor.visit_attribute(it)
2380    }
2381    _visitor.visit_visibility(&_i.vis);
2382    tokens_helper(_visitor, &_i.type_token.span);
2383    _visitor.visit_ident(&_i.ident);
2384    _visitor.visit_generics(&_i.generics);
2385    tokens_helper(_visitor, &_i.eq_token.spans);
2386    _visitor.visit_type(&*_i.ty);
2387    tokens_helper(_visitor, &_i.semi_token.spans);
2388}
2389#[cfg(feature = "full")]
2390pub fn visit_item_union<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ItemUnion) {
2391    for it in &_i.attrs {
2392        _visitor.visit_attribute(it)
2393    }
2394    _visitor.visit_visibility(&_i.vis);
2395    tokens_helper(_visitor, &_i.union_token.span);
2396    _visitor.visit_ident(&_i.ident);
2397    _visitor.visit_generics(&_i.generics);
2398    _visitor.visit_fields_named(&_i.fields);
2399}
2400#[cfg(feature = "full")]
2401pub fn visit_item_use<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ItemUse) {
2402    for it in &_i.attrs {
2403        _visitor.visit_attribute(it)
2404    }
2405    _visitor.visit_visibility(&_i.vis);
2406    tokens_helper(_visitor, &_i.use_token.span);
2407    if let Some(ref it) = _i.leading_colon {
2408        tokens_helper(_visitor, &it.spans)
2409    };
2410    _visitor.visit_use_tree(&_i.tree);
2411    tokens_helper(_visitor, &_i.semi_token.spans);
2412}
2413#[cfg(feature = "full")]
2414pub fn visit_item_verbatim<'ast, V: Visit<'ast> + ?Sized>(
2415    _visitor: &mut V,
2416    _i: &'ast ItemVerbatim,
2417) {
2418    skip!(_i.tts);
2419}
2420#[cfg(feature = "full")]
2421pub fn visit_label<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast Label) {
2422    _visitor.visit_lifetime(&_i.name);
2423    tokens_helper(_visitor, &_i.colon_token.spans);
2424}
2425pub fn visit_lifetime<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast Lifetime) {
2426    _visitor.visit_span(&_i.apostrophe);
2427    _visitor.visit_ident(&_i.ident);
2428}
2429#[cfg(any(feature = "derive", feature = "full"))]
2430pub fn visit_lifetime_def<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast LifetimeDef) {
2431    for it in &_i.attrs {
2432        _visitor.visit_attribute(it)
2433    }
2434    _visitor.visit_lifetime(&_i.lifetime);
2435    if let Some(ref it) = _i.colon_token {
2436        tokens_helper(_visitor, &it.spans)
2437    };
2438    for el in Punctuated::pairs(&_i.bounds) {
2439        let it = el.value();
2440        _visitor.visit_lifetime(it)
2441    }
2442}
2443#[cfg(any(feature = "derive", feature = "full"))]
2444pub fn visit_lit<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast Lit) {
2445    match *_i {
2446        Lit::Str(ref _binding_0) => {
2447            _visitor.visit_lit_str(_binding_0);
2448        }
2449        Lit::ByteStr(ref _binding_0) => {
2450            _visitor.visit_lit_byte_str(_binding_0);
2451        }
2452        Lit::Byte(ref _binding_0) => {
2453            _visitor.visit_lit_byte(_binding_0);
2454        }
2455        Lit::Char(ref _binding_0) => {
2456            _visitor.visit_lit_char(_binding_0);
2457        }
2458        Lit::Int(ref _binding_0) => {
2459            _visitor.visit_lit_int(_binding_0);
2460        }
2461        Lit::Float(ref _binding_0) => {
2462            _visitor.visit_lit_float(_binding_0);
2463        }
2464        Lit::Bool(ref _binding_0) => {
2465            _visitor.visit_lit_bool(_binding_0);
2466        }
2467        Lit::Verbatim(ref _binding_0) => {
2468            _visitor.visit_lit_verbatim(_binding_0);
2469        }
2470    }
2471}
2472#[cfg(any(feature = "derive", feature = "full"))]
2473pub fn visit_lit_bool<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast LitBool) {
2474    skip!(_i.value);
2475    _visitor.visit_span(&_i.span);
2476}
2477#[cfg(any(feature = "derive", feature = "full"))]
2478pub fn visit_lit_byte<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast LitByte) {}
2479#[cfg(any(feature = "derive", feature = "full"))]
2480pub fn visit_lit_byte_str<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast LitByteStr) {}
2481#[cfg(any(feature = "derive", feature = "full"))]
2482pub fn visit_lit_char<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast LitChar) {}
2483#[cfg(any(feature = "derive", feature = "full"))]
2484pub fn visit_lit_float<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast LitFloat) {}
2485#[cfg(any(feature = "derive", feature = "full"))]
2486pub fn visit_lit_int<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast LitInt) {}
2487#[cfg(any(feature = "derive", feature = "full"))]
2488pub fn visit_lit_str<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast LitStr) {}
2489#[cfg(any(feature = "derive", feature = "full"))]
2490pub fn visit_lit_verbatim<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast LitVerbatim) {
2491    skip!(_i.token);
2492}
2493#[cfg(feature = "full")]
2494pub fn visit_local<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast Local) {
2495    for it in &_i.attrs {
2496        _visitor.visit_attribute(it)
2497    }
2498    tokens_helper(_visitor, &_i.let_token.span);
2499    for el in Punctuated::pairs(&_i.pats) {
2500        let it = el.value();
2501        _visitor.visit_pat(it)
2502    }
2503    if let Some(ref it) = _i.ty {
2504        tokens_helper(_visitor, &(it).0.spans);
2505        _visitor.visit_type(&*(it).1);
2506    };
2507    if let Some(ref it) = _i.init {
2508        tokens_helper(_visitor, &(it).0.spans);
2509        _visitor.visit_expr(&*(it).1);
2510    };
2511    tokens_helper(_visitor, &_i.semi_token.spans);
2512}
2513#[cfg(any(feature = "derive", feature = "full"))]
2514pub fn visit_macro<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast Macro) {
2515    _visitor.visit_path(&_i.path);
2516    tokens_helper(_visitor, &_i.bang_token.spans);
2517    _visitor.visit_macro_delimiter(&_i.delimiter);
2518    skip!(_i.tts);
2519}
2520#[cfg(any(feature = "derive", feature = "full"))]
2521pub fn visit_macro_delimiter<'ast, V: Visit<'ast> + ?Sized>(
2522    _visitor: &mut V,
2523    _i: &'ast MacroDelimiter,
2524) {
2525    match *_i {
2526        MacroDelimiter::Paren(ref _binding_0) => {
2527            tokens_helper(_visitor, &_binding_0.span);
2528        }
2529        MacroDelimiter::Brace(ref _binding_0) => {
2530            tokens_helper(_visitor, &_binding_0.span);
2531        }
2532        MacroDelimiter::Bracket(ref _binding_0) => {
2533            tokens_helper(_visitor, &_binding_0.span);
2534        }
2535    }
2536}
2537#[cfg(any(feature = "derive", feature = "full"))]
2538pub fn visit_member<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast Member) {
2539    match *_i {
2540        Member::Named(ref _binding_0) => {
2541            _visitor.visit_ident(_binding_0);
2542        }
2543        Member::Unnamed(ref _binding_0) => {
2544            _visitor.visit_index(_binding_0);
2545        }
2546    }
2547}
2548#[cfg(any(feature = "derive", feature = "full"))]
2549pub fn visit_meta<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast Meta) {
2550    match *_i {
2551        Meta::Word(ref _binding_0) => {
2552            _visitor.visit_ident(_binding_0);
2553        }
2554        Meta::List(ref _binding_0) => {
2555            _visitor.visit_meta_list(_binding_0);
2556        }
2557        Meta::NameValue(ref _binding_0) => {
2558            _visitor.visit_meta_name_value(_binding_0);
2559        }
2560    }
2561}
2562#[cfg(any(feature = "derive", feature = "full"))]
2563pub fn visit_meta_list<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast MetaList) {
2564    _visitor.visit_ident(&_i.ident);
2565    tokens_helper(_visitor, &_i.paren_token.span);
2566    for el in Punctuated::pairs(&_i.nested) {
2567        let it = el.value();
2568        _visitor.visit_nested_meta(it)
2569    }
2570}
2571#[cfg(any(feature = "derive", feature = "full"))]
2572pub fn visit_meta_name_value<'ast, V: Visit<'ast> + ?Sized>(
2573    _visitor: &mut V,
2574    _i: &'ast MetaNameValue,
2575) {
2576    _visitor.visit_ident(&_i.ident);
2577    tokens_helper(_visitor, &_i.eq_token.spans);
2578    _visitor.visit_lit(&_i.lit);
2579}
2580#[cfg(feature = "full")]
2581pub fn visit_method_sig<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast MethodSig) {
2582    if let Some(ref it) = _i.constness {
2583        tokens_helper(_visitor, &it.span)
2584    };
2585    if let Some(ref it) = _i.unsafety {
2586        tokens_helper(_visitor, &it.span)
2587    };
2588    if let Some(ref it) = _i.asyncness {
2589        tokens_helper(_visitor, &it.span)
2590    };
2591    if let Some(ref it) = _i.abi {
2592        _visitor.visit_abi(it)
2593    };
2594    _visitor.visit_ident(&_i.ident);
2595    _visitor.visit_fn_decl(&_i.decl);
2596}
2597#[cfg(feature = "full")]
2598pub fn visit_method_turbofish<'ast, V: Visit<'ast> + ?Sized>(
2599    _visitor: &mut V,
2600    _i: &'ast MethodTurbofish,
2601) {
2602    tokens_helper(_visitor, &_i.colon2_token.spans);
2603    tokens_helper(_visitor, &_i.lt_token.spans);
2604    for el in Punctuated::pairs(&_i.args) {
2605        let it = el.value();
2606        _visitor.visit_generic_method_argument(it)
2607    }
2608    tokens_helper(_visitor, &_i.gt_token.spans);
2609}
2610#[cfg(any(feature = "derive", feature = "full"))]
2611pub fn visit_nested_meta<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast NestedMeta) {
2612    match *_i {
2613        NestedMeta::Meta(ref _binding_0) => {
2614            _visitor.visit_meta(_binding_0);
2615        }
2616        NestedMeta::Literal(ref _binding_0) => {
2617            _visitor.visit_lit(_binding_0);
2618        }
2619    }
2620}
2621#[cfg(any(feature = "derive", feature = "full"))]
2622pub fn visit_parenthesized_generic_arguments<'ast, V: Visit<'ast> + ?Sized>(
2623    _visitor: &mut V,
2624    _i: &'ast ParenthesizedGenericArguments,
2625) {
2626    tokens_helper(_visitor, &_i.paren_token.span);
2627    for el in Punctuated::pairs(&_i.inputs) {
2628        let it = el.value();
2629        _visitor.visit_type(it)
2630    }
2631    _visitor.visit_return_type(&_i.output);
2632}
2633#[cfg(feature = "full")]
2634pub fn visit_pat<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast Pat) {
2635    match *_i {
2636        Pat::Wild(ref _binding_0) => {
2637            _visitor.visit_pat_wild(_binding_0);
2638        }
2639        Pat::Ident(ref _binding_0) => {
2640            _visitor.visit_pat_ident(_binding_0);
2641        }
2642        Pat::Struct(ref _binding_0) => {
2643            _visitor.visit_pat_struct(_binding_0);
2644        }
2645        Pat::TupleStruct(ref _binding_0) => {
2646            _visitor.visit_pat_tuple_struct(_binding_0);
2647        }
2648        Pat::Path(ref _binding_0) => {
2649            _visitor.visit_pat_path(_binding_0);
2650        }
2651        Pat::Tuple(ref _binding_0) => {
2652            _visitor.visit_pat_tuple(_binding_0);
2653        }
2654        Pat::Box(ref _binding_0) => {
2655            _visitor.visit_pat_box(_binding_0);
2656        }
2657        Pat::Ref(ref _binding_0) => {
2658            _visitor.visit_pat_ref(_binding_0);
2659        }
2660        Pat::Lit(ref _binding_0) => {
2661            _visitor.visit_pat_lit(_binding_0);
2662        }
2663        Pat::Range(ref _binding_0) => {
2664            _visitor.visit_pat_range(_binding_0);
2665        }
2666        Pat::Slice(ref _binding_0) => {
2667            _visitor.visit_pat_slice(_binding_0);
2668        }
2669        Pat::Macro(ref _binding_0) => {
2670            _visitor.visit_pat_macro(_binding_0);
2671        }
2672        Pat::Verbatim(ref _binding_0) => {
2673            _visitor.visit_pat_verbatim(_binding_0);
2674        }
2675    }
2676}
2677#[cfg(feature = "full")]
2678pub fn visit_pat_box<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast PatBox) {
2679    tokens_helper(_visitor, &_i.box_token.span);
2680    _visitor.visit_pat(&*_i.pat);
2681}
2682#[cfg(feature = "full")]
2683pub fn visit_pat_ident<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast PatIdent) {
2684    if let Some(ref it) = _i.by_ref {
2685        tokens_helper(_visitor, &it.span)
2686    };
2687    if let Some(ref it) = _i.mutability {
2688        tokens_helper(_visitor, &it.span)
2689    };
2690    _visitor.visit_ident(&_i.ident);
2691    if let Some(ref it) = _i.subpat {
2692        tokens_helper(_visitor, &(it).0.spans);
2693        _visitor.visit_pat(&*(it).1);
2694    };
2695}
2696#[cfg(feature = "full")]
2697pub fn visit_pat_lit<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast PatLit) {
2698    _visitor.visit_expr(&*_i.expr);
2699}
2700#[cfg(feature = "full")]
2701pub fn visit_pat_macro<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast PatMacro) {
2702    _visitor.visit_macro(&_i.mac);
2703}
2704#[cfg(feature = "full")]
2705pub fn visit_pat_path<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast PatPath) {
2706    if let Some(ref it) = _i.qself {
2707        _visitor.visit_qself(it)
2708    };
2709    _visitor.visit_path(&_i.path);
2710}
2711#[cfg(feature = "full")]
2712pub fn visit_pat_range<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast PatRange) {
2713    _visitor.visit_expr(&*_i.lo);
2714    _visitor.visit_range_limits(&_i.limits);
2715    _visitor.visit_expr(&*_i.hi);
2716}
2717#[cfg(feature = "full")]
2718pub fn visit_pat_ref<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast PatRef) {
2719    tokens_helper(_visitor, &_i.and_token.spans);
2720    if let Some(ref it) = _i.mutability {
2721        tokens_helper(_visitor, &it.span)
2722    };
2723    _visitor.visit_pat(&*_i.pat);
2724}
2725#[cfg(feature = "full")]
2726pub fn visit_pat_slice<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast PatSlice) {
2727    tokens_helper(_visitor, &_i.bracket_token.span);
2728    for el in Punctuated::pairs(&_i.front) {
2729        let it = el.value();
2730        _visitor.visit_pat(it)
2731    }
2732    if let Some(ref it) = _i.middle {
2733        _visitor.visit_pat(&**it)
2734    };
2735    if let Some(ref it) = _i.dot2_token {
2736        tokens_helper(_visitor, &it.spans)
2737    };
2738    if let Some(ref it) = _i.comma_token {
2739        tokens_helper(_visitor, &it.spans)
2740    };
2741    for el in Punctuated::pairs(&_i.back) {
2742        let it = el.value();
2743        _visitor.visit_pat(it)
2744    }
2745}
2746#[cfg(feature = "full")]
2747pub fn visit_pat_struct<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast PatStruct) {
2748    _visitor.visit_path(&_i.path);
2749    tokens_helper(_visitor, &_i.brace_token.span);
2750    for el in Punctuated::pairs(&_i.fields) {
2751        let it = el.value();
2752        _visitor.visit_field_pat(it)
2753    }
2754    if let Some(ref it) = _i.dot2_token {
2755        tokens_helper(_visitor, &it.spans)
2756    };
2757}
2758#[cfg(feature = "full")]
2759pub fn visit_pat_tuple<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast PatTuple) {
2760    tokens_helper(_visitor, &_i.paren_token.span);
2761    for el in Punctuated::pairs(&_i.front) {
2762        let it = el.value();
2763        _visitor.visit_pat(it)
2764    }
2765    if let Some(ref it) = _i.dot2_token {
2766        tokens_helper(_visitor, &it.spans)
2767    };
2768    if let Some(ref it) = _i.comma_token {
2769        tokens_helper(_visitor, &it.spans)
2770    };
2771    for el in Punctuated::pairs(&_i.back) {
2772        let it = el.value();
2773        _visitor.visit_pat(it)
2774    }
2775}
2776#[cfg(feature = "full")]
2777pub fn visit_pat_tuple_struct<'ast, V: Visit<'ast> + ?Sized>(
2778    _visitor: &mut V,
2779    _i: &'ast PatTupleStruct,
2780) {
2781    _visitor.visit_path(&_i.path);
2782    _visitor.visit_pat_tuple(&_i.pat);
2783}
2784#[cfg(feature = "full")]
2785pub fn visit_pat_verbatim<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast PatVerbatim) {
2786    skip!(_i.tts);
2787}
2788#[cfg(feature = "full")]
2789pub fn visit_pat_wild<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast PatWild) {
2790    tokens_helper(_visitor, &_i.underscore_token.spans);
2791}
2792#[cfg(any(feature = "derive", feature = "full"))]
2793pub fn visit_path<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast Path) {
2794    if let Some(ref it) = _i.leading_colon {
2795        tokens_helper(_visitor, &it.spans)
2796    };
2797    for el in Punctuated::pairs(&_i.segments) {
2798        let it = el.value();
2799        _visitor.visit_path_segment(it)
2800    }
2801}
2802#[cfg(any(feature = "derive", feature = "full"))]
2803pub fn visit_path_arguments<'ast, V: Visit<'ast> + ?Sized>(
2804    _visitor: &mut V,
2805    _i: &'ast PathArguments,
2806) {
2807    match *_i {
2808        PathArguments::None => {}
2809        PathArguments::AngleBracketed(ref _binding_0) => {
2810            _visitor.visit_angle_bracketed_generic_arguments(_binding_0);
2811        }
2812        PathArguments::Parenthesized(ref _binding_0) => {
2813            _visitor.visit_parenthesized_generic_arguments(_binding_0);
2814        }
2815    }
2816}
2817#[cfg(any(feature = "derive", feature = "full"))]
2818pub fn visit_path_segment<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast PathSegment) {
2819    _visitor.visit_ident(&_i.ident);
2820    _visitor.visit_path_arguments(&_i.arguments);
2821}
2822#[cfg(any(feature = "derive", feature = "full"))]
2823pub fn visit_predicate_eq<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast PredicateEq) {
2824    _visitor.visit_type(&_i.lhs_ty);
2825    tokens_helper(_visitor, &_i.eq_token.spans);
2826    _visitor.visit_type(&_i.rhs_ty);
2827}
2828#[cfg(any(feature = "derive", feature = "full"))]
2829pub fn visit_predicate_lifetime<'ast, V: Visit<'ast> + ?Sized>(
2830    _visitor: &mut V,
2831    _i: &'ast PredicateLifetime,
2832) {
2833    _visitor.visit_lifetime(&_i.lifetime);
2834    tokens_helper(_visitor, &_i.colon_token.spans);
2835    for el in Punctuated::pairs(&_i.bounds) {
2836        let it = el.value();
2837        _visitor.visit_lifetime(it)
2838    }
2839}
2840#[cfg(any(feature = "derive", feature = "full"))]
2841pub fn visit_predicate_type<'ast, V: Visit<'ast> + ?Sized>(
2842    _visitor: &mut V,
2843    _i: &'ast PredicateType,
2844) {
2845    if let Some(ref it) = _i.lifetimes {
2846        _visitor.visit_bound_lifetimes(it)
2847    };
2848    _visitor.visit_type(&_i.bounded_ty);
2849    tokens_helper(_visitor, &_i.colon_token.spans);
2850    for el in Punctuated::pairs(&_i.bounds) {
2851        let it = el.value();
2852        _visitor.visit_type_param_bound(it)
2853    }
2854}
2855#[cfg(any(feature = "derive", feature = "full"))]
2856pub fn visit_qself<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast QSelf) {
2857    tokens_helper(_visitor, &_i.lt_token.spans);
2858    _visitor.visit_type(&*_i.ty);
2859    skip!(_i.position);
2860    if let Some(ref it) = _i.as_token {
2861        tokens_helper(_visitor, &it.span)
2862    };
2863    tokens_helper(_visitor, &_i.gt_token.spans);
2864}
2865#[cfg(feature = "full")]
2866pub fn visit_range_limits<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast RangeLimits) {
2867    match *_i {
2868        RangeLimits::HalfOpen(ref _binding_0) => {
2869            tokens_helper(_visitor, &_binding_0.spans);
2870        }
2871        RangeLimits::Closed(ref _binding_0) => {
2872            tokens_helper(_visitor, &_binding_0.spans);
2873        }
2874    }
2875}
2876#[cfg(any(feature = "derive", feature = "full"))]
2877pub fn visit_return_type<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ReturnType) {
2878    match *_i {
2879        ReturnType::Default => {}
2880        ReturnType::Type(ref _binding_0, ref _binding_1) => {
2881            tokens_helper(_visitor, &_binding_0.spans);
2882            _visitor.visit_type(&**_binding_1);
2883        }
2884    }
2885}
2886#[cfg(feature = "full")]
2887pub fn visit_stmt<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast Stmt) {
2888    match *_i {
2889        Stmt::Local(ref _binding_0) => {
2890            _visitor.visit_local(_binding_0);
2891        }
2892        Stmt::Item(ref _binding_0) => {
2893            _visitor.visit_item(_binding_0);
2894        }
2895        Stmt::Expr(ref _binding_0) => {
2896            _visitor.visit_expr(_binding_0);
2897        }
2898        Stmt::Semi(ref _binding_0, ref _binding_1) => {
2899            _visitor.visit_expr(_binding_0);
2900            tokens_helper(_visitor, &_binding_1.spans);
2901        }
2902    }
2903}
2904#[cfg(any(feature = "derive", feature = "full"))]
2905pub fn visit_trait_bound<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast TraitBound) {
2906    if let Some(ref it) = _i.paren_token {
2907        tokens_helper(_visitor, &it.span)
2908    };
2909    _visitor.visit_trait_bound_modifier(&_i.modifier);
2910    if let Some(ref it) = _i.lifetimes {
2911        _visitor.visit_bound_lifetimes(it)
2912    };
2913    _visitor.visit_path(&_i.path);
2914}
2915#[cfg(any(feature = "derive", feature = "full"))]
2916pub fn visit_trait_bound_modifier<'ast, V: Visit<'ast> + ?Sized>(
2917    _visitor: &mut V,
2918    _i: &'ast TraitBoundModifier,
2919) {
2920    match *_i {
2921        TraitBoundModifier::None => {}
2922        TraitBoundModifier::Maybe(ref _binding_0) => {
2923            tokens_helper(_visitor, &_binding_0.spans);
2924        }
2925    }
2926}
2927#[cfg(feature = "full")]
2928pub fn visit_trait_item<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast TraitItem) {
2929    match *_i {
2930        TraitItem::Const(ref _binding_0) => {
2931            _visitor.visit_trait_item_const(_binding_0);
2932        }
2933        TraitItem::Method(ref _binding_0) => {
2934            _visitor.visit_trait_item_method(_binding_0);
2935        }
2936        TraitItem::Type(ref _binding_0) => {
2937            _visitor.visit_trait_item_type(_binding_0);
2938        }
2939        TraitItem::Macro(ref _binding_0) => {
2940            _visitor.visit_trait_item_macro(_binding_0);
2941        }
2942        TraitItem::Verbatim(ref _binding_0) => {
2943            _visitor.visit_trait_item_verbatim(_binding_0);
2944        }
2945    }
2946}
2947#[cfg(feature = "full")]
2948pub fn visit_trait_item_const<'ast, V: Visit<'ast> + ?Sized>(
2949    _visitor: &mut V,
2950    _i: &'ast TraitItemConst,
2951) {
2952    for it in &_i.attrs {
2953        _visitor.visit_attribute(it)
2954    }
2955    tokens_helper(_visitor, &_i.const_token.span);
2956    _visitor.visit_ident(&_i.ident);
2957    tokens_helper(_visitor, &_i.colon_token.spans);
2958    _visitor.visit_type(&_i.ty);
2959    if let Some(ref it) = _i.default {
2960        tokens_helper(_visitor, &(it).0.spans);
2961        _visitor.visit_expr(&(it).1);
2962    };
2963    tokens_helper(_visitor, &_i.semi_token.spans);
2964}
2965#[cfg(feature = "full")]
2966pub fn visit_trait_item_macro<'ast, V: Visit<'ast> + ?Sized>(
2967    _visitor: &mut V,
2968    _i: &'ast TraitItemMacro,
2969) {
2970    for it in &_i.attrs {
2971        _visitor.visit_attribute(it)
2972    }
2973    _visitor.visit_macro(&_i.mac);
2974    if let Some(ref it) = _i.semi_token {
2975        tokens_helper(_visitor, &it.spans)
2976    };
2977}
2978#[cfg(feature = "full")]
2979pub fn visit_trait_item_method<'ast, V: Visit<'ast> + ?Sized>(
2980    _visitor: &mut V,
2981    _i: &'ast TraitItemMethod,
2982) {
2983    for it in &_i.attrs {
2984        _visitor.visit_attribute(it)
2985    }
2986    _visitor.visit_method_sig(&_i.sig);
2987    if let Some(ref it) = _i.default {
2988        _visitor.visit_block(it)
2989    };
2990    if let Some(ref it) = _i.semi_token {
2991        tokens_helper(_visitor, &it.spans)
2992    };
2993}
2994#[cfg(feature = "full")]
2995pub fn visit_trait_item_type<'ast, V: Visit<'ast> + ?Sized>(
2996    _visitor: &mut V,
2997    _i: &'ast TraitItemType,
2998) {
2999    for it in &_i.attrs {
3000        _visitor.visit_attribute(it)
3001    }
3002    tokens_helper(_visitor, &_i.type_token.span);
3003    _visitor.visit_ident(&_i.ident);
3004    _visitor.visit_generics(&_i.generics);
3005    if let Some(ref it) = _i.colon_token {
3006        tokens_helper(_visitor, &it.spans)
3007    };
3008    for el in Punctuated::pairs(&_i.bounds) {
3009        let it = el.value();
3010        _visitor.visit_type_param_bound(it)
3011    }
3012    if let Some(ref it) = _i.default {
3013        tokens_helper(_visitor, &(it).0.spans);
3014        _visitor.visit_type(&(it).1);
3015    };
3016    tokens_helper(_visitor, &_i.semi_token.spans);
3017}
3018#[cfg(feature = "full")]
3019pub fn visit_trait_item_verbatim<'ast, V: Visit<'ast> + ?Sized>(
3020    _visitor: &mut V,
3021    _i: &'ast TraitItemVerbatim,
3022) {
3023    skip!(_i.tts);
3024}
3025#[cfg(any(feature = "derive", feature = "full"))]
3026pub fn visit_type<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast Type) {
3027    match *_i {
3028        Type::Slice(ref _binding_0) => {
3029            _visitor.visit_type_slice(_binding_0);
3030        }
3031        Type::Array(ref _binding_0) => {
3032            _visitor.visit_type_array(_binding_0);
3033        }
3034        Type::Ptr(ref _binding_0) => {
3035            _visitor.visit_type_ptr(_binding_0);
3036        }
3037        Type::Reference(ref _binding_0) => {
3038            _visitor.visit_type_reference(_binding_0);
3039        }
3040        Type::BareFn(ref _binding_0) => {
3041            _visitor.visit_type_bare_fn(_binding_0);
3042        }
3043        Type::Never(ref _binding_0) => {
3044            _visitor.visit_type_never(_binding_0);
3045        }
3046        Type::Tuple(ref _binding_0) => {
3047            _visitor.visit_type_tuple(_binding_0);
3048        }
3049        Type::Path(ref _binding_0) => {
3050            _visitor.visit_type_path(_binding_0);
3051        }
3052        Type::TraitObject(ref _binding_0) => {
3053            _visitor.visit_type_trait_object(_binding_0);
3054        }
3055        Type::ImplTrait(ref _binding_0) => {
3056            _visitor.visit_type_impl_trait(_binding_0);
3057        }
3058        Type::Paren(ref _binding_0) => {
3059            _visitor.visit_type_paren(_binding_0);
3060        }
3061        Type::Group(ref _binding_0) => {
3062            _visitor.visit_type_group(_binding_0);
3063        }
3064        Type::Infer(ref _binding_0) => {
3065            _visitor.visit_type_infer(_binding_0);
3066        }
3067        Type::Macro(ref _binding_0) => {
3068            _visitor.visit_type_macro(_binding_0);
3069        }
3070        Type::Verbatim(ref _binding_0) => {
3071            _visitor.visit_type_verbatim(_binding_0);
3072        }
3073    }
3074}
3075#[cfg(any(feature = "derive", feature = "full"))]
3076pub fn visit_type_array<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast TypeArray) {
3077    tokens_helper(_visitor, &_i.bracket_token.span);
3078    _visitor.visit_type(&*_i.elem);
3079    tokens_helper(_visitor, &_i.semi_token.spans);
3080    _visitor.visit_expr(&_i.len);
3081}
3082#[cfg(any(feature = "derive", feature = "full"))]
3083pub fn visit_type_bare_fn<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast TypeBareFn) {
3084    if let Some(ref it) = _i.lifetimes {
3085        _visitor.visit_bound_lifetimes(it)
3086    };
3087    if let Some(ref it) = _i.unsafety {
3088        tokens_helper(_visitor, &it.span)
3089    };
3090    if let Some(ref it) = _i.abi {
3091        _visitor.visit_abi(it)
3092    };
3093    tokens_helper(_visitor, &_i.fn_token.span);
3094    tokens_helper(_visitor, &_i.paren_token.span);
3095    for el in Punctuated::pairs(&_i.inputs) {
3096        let it = el.value();
3097        _visitor.visit_bare_fn_arg(it)
3098    }
3099    if let Some(ref it) = _i.variadic {
3100        tokens_helper(_visitor, &it.spans)
3101    };
3102    _visitor.visit_return_type(&_i.output);
3103}
3104#[cfg(any(feature = "derive", feature = "full"))]
3105pub fn visit_type_group<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast TypeGroup) {
3106    tokens_helper(_visitor, &_i.group_token.span);
3107    _visitor.visit_type(&*_i.elem);
3108}
3109#[cfg(any(feature = "derive", feature = "full"))]
3110pub fn visit_type_impl_trait<'ast, V: Visit<'ast> + ?Sized>(
3111    _visitor: &mut V,
3112    _i: &'ast TypeImplTrait,
3113) {
3114    tokens_helper(_visitor, &_i.impl_token.span);
3115    for el in Punctuated::pairs(&_i.bounds) {
3116        let it = el.value();
3117        _visitor.visit_type_param_bound(it)
3118    }
3119}
3120#[cfg(any(feature = "derive", feature = "full"))]
3121pub fn visit_type_infer<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast TypeInfer) {
3122    tokens_helper(_visitor, &_i.underscore_token.spans);
3123}
3124#[cfg(any(feature = "derive", feature = "full"))]
3125pub fn visit_type_macro<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast TypeMacro) {
3126    _visitor.visit_macro(&_i.mac);
3127}
3128#[cfg(any(feature = "derive", feature = "full"))]
3129pub fn visit_type_never<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast TypeNever) {
3130    tokens_helper(_visitor, &_i.bang_token.spans);
3131}
3132#[cfg(any(feature = "derive", feature = "full"))]
3133pub fn visit_type_param<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast TypeParam) {
3134    for it in &_i.attrs {
3135        _visitor.visit_attribute(it)
3136    }
3137    _visitor.visit_ident(&_i.ident);
3138    if let Some(ref it) = _i.colon_token {
3139        tokens_helper(_visitor, &it.spans)
3140    };
3141    for el in Punctuated::pairs(&_i.bounds) {
3142        let it = el.value();
3143        _visitor.visit_type_param_bound(it)
3144    }
3145    if let Some(ref it) = _i.eq_token {
3146        tokens_helper(_visitor, &it.spans)
3147    };
3148    if let Some(ref it) = _i.default {
3149        _visitor.visit_type(it)
3150    };
3151}
3152#[cfg(any(feature = "derive", feature = "full"))]
3153pub fn visit_type_param_bound<'ast, V: Visit<'ast> + ?Sized>(
3154    _visitor: &mut V,
3155    _i: &'ast TypeParamBound,
3156) {
3157    match *_i {
3158        TypeParamBound::Trait(ref _binding_0) => {
3159            _visitor.visit_trait_bound(_binding_0);
3160        }
3161        TypeParamBound::Lifetime(ref _binding_0) => {
3162            _visitor.visit_lifetime(_binding_0);
3163        }
3164    }
3165}
3166#[cfg(any(feature = "derive", feature = "full"))]
3167pub fn visit_type_paren<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast TypeParen) {
3168    tokens_helper(_visitor, &_i.paren_token.span);
3169    _visitor.visit_type(&*_i.elem);
3170}
3171#[cfg(any(feature = "derive", feature = "full"))]
3172pub fn visit_type_path<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast TypePath) {
3173    if let Some(ref it) = _i.qself {
3174        _visitor.visit_qself(it)
3175    };
3176    _visitor.visit_path(&_i.path);
3177}
3178#[cfg(any(feature = "derive", feature = "full"))]
3179pub fn visit_type_ptr<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast TypePtr) {
3180    tokens_helper(_visitor, &_i.star_token.spans);
3181    if let Some(ref it) = _i.const_token {
3182        tokens_helper(_visitor, &it.span)
3183    };
3184    if let Some(ref it) = _i.mutability {
3185        tokens_helper(_visitor, &it.span)
3186    };
3187    _visitor.visit_type(&*_i.elem);
3188}
3189#[cfg(any(feature = "derive", feature = "full"))]
3190pub fn visit_type_reference<'ast, V: Visit<'ast> + ?Sized>(
3191    _visitor: &mut V,
3192    _i: &'ast TypeReference,
3193) {
3194    tokens_helper(_visitor, &_i.and_token.spans);
3195    if let Some(ref it) = _i.lifetime {
3196        _visitor.visit_lifetime(it)
3197    };
3198    if let Some(ref it) = _i.mutability {
3199        tokens_helper(_visitor, &it.span)
3200    };
3201    _visitor.visit_type(&*_i.elem);
3202}
3203#[cfg(any(feature = "derive", feature = "full"))]
3204pub fn visit_type_slice<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast TypeSlice) {
3205    tokens_helper(_visitor, &_i.bracket_token.span);
3206    _visitor.visit_type(&*_i.elem);
3207}
3208#[cfg(any(feature = "derive", feature = "full"))]
3209pub fn visit_type_trait_object<'ast, V: Visit<'ast> + ?Sized>(
3210    _visitor: &mut V,
3211    _i: &'ast TypeTraitObject,
3212) {
3213    if let Some(ref it) = _i.dyn_token {
3214        tokens_helper(_visitor, &it.span)
3215    };
3216    for el in Punctuated::pairs(&_i.bounds) {
3217        let it = el.value();
3218        _visitor.visit_type_param_bound(it)
3219    }
3220}
3221#[cfg(any(feature = "derive", feature = "full"))]
3222pub fn visit_type_tuple<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast TypeTuple) {
3223    tokens_helper(_visitor, &_i.paren_token.span);
3224    for el in Punctuated::pairs(&_i.elems) {
3225        let it = el.value();
3226        _visitor.visit_type(it)
3227    }
3228}
3229#[cfg(any(feature = "derive", feature = "full"))]
3230pub fn visit_type_verbatim<'ast, V: Visit<'ast> + ?Sized>(
3231    _visitor: &mut V,
3232    _i: &'ast TypeVerbatim,
3233) {
3234    skip!(_i.tts);
3235}
3236#[cfg(any(feature = "derive", feature = "full"))]
3237pub fn visit_un_op<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast UnOp) {
3238    match *_i {
3239        UnOp::Deref(ref _binding_0) => {
3240            tokens_helper(_visitor, &_binding_0.spans);
3241        }
3242        UnOp::Not(ref _binding_0) => {
3243            tokens_helper(_visitor, &_binding_0.spans);
3244        }
3245        UnOp::Neg(ref _binding_0) => {
3246            tokens_helper(_visitor, &_binding_0.spans);
3247        }
3248    }
3249}
3250#[cfg(feature = "full")]
3251pub fn visit_use_glob<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast UseGlob) {
3252    tokens_helper(_visitor, &_i.star_token.spans);
3253}
3254#[cfg(feature = "full")]
3255pub fn visit_use_group<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast UseGroup) {
3256    tokens_helper(_visitor, &_i.brace_token.span);
3257    for el in Punctuated::pairs(&_i.items) {
3258        let it = el.value();
3259        _visitor.visit_use_tree(it)
3260    }
3261}
3262#[cfg(feature = "full")]
3263pub fn visit_use_name<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast UseName) {
3264    _visitor.visit_ident(&_i.ident);
3265}
3266#[cfg(feature = "full")]
3267pub fn visit_use_path<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast UsePath) {
3268    _visitor.visit_ident(&_i.ident);
3269    tokens_helper(_visitor, &_i.colon2_token.spans);
3270    _visitor.visit_use_tree(&*_i.tree);
3271}
3272#[cfg(feature = "full")]
3273pub fn visit_use_rename<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast UseRename) {
3274    _visitor.visit_ident(&_i.ident);
3275    tokens_helper(_visitor, &_i.as_token.span);
3276    _visitor.visit_ident(&_i.rename);
3277}
3278#[cfg(feature = "full")]
3279pub fn visit_use_tree<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast UseTree) {
3280    match *_i {
3281        UseTree::Path(ref _binding_0) => {
3282            _visitor.visit_use_path(_binding_0);
3283        }
3284        UseTree::Name(ref _binding_0) => {
3285            _visitor.visit_use_name(_binding_0);
3286        }
3287        UseTree::Rename(ref _binding_0) => {
3288            _visitor.visit_use_rename(_binding_0);
3289        }
3290        UseTree::Glob(ref _binding_0) => {
3291            _visitor.visit_use_glob(_binding_0);
3292        }
3293        UseTree::Group(ref _binding_0) => {
3294            _visitor.visit_use_group(_binding_0);
3295        }
3296    }
3297}
3298#[cfg(any(feature = "derive", feature = "full"))]
3299pub fn visit_variant<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast Variant) {
3300    for it in &_i.attrs {
3301        _visitor.visit_attribute(it)
3302    }
3303    _visitor.visit_ident(&_i.ident);
3304    _visitor.visit_fields(&_i.fields);
3305    if let Some(ref it) = _i.discriminant {
3306        tokens_helper(_visitor, &(it).0.spans);
3307        _visitor.visit_expr(&(it).1);
3308    };
3309}
3310#[cfg(any(feature = "derive", feature = "full"))]
3311pub fn visit_vis_crate<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast VisCrate) {
3312    tokens_helper(_visitor, &_i.crate_token.span);
3313}
3314#[cfg(any(feature = "derive", feature = "full"))]
3315pub fn visit_vis_public<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast VisPublic) {
3316    tokens_helper(_visitor, &_i.pub_token.span);
3317}
3318#[cfg(any(feature = "derive", feature = "full"))]
3319pub fn visit_vis_restricted<'ast, V: Visit<'ast> + ?Sized>(
3320    _visitor: &mut V,
3321    _i: &'ast VisRestricted,
3322) {
3323    tokens_helper(_visitor, &_i.pub_token.span);
3324    tokens_helper(_visitor, &_i.paren_token.span);
3325    if let Some(ref it) = _i.in_token {
3326        tokens_helper(_visitor, &it.span)
3327    };
3328    _visitor.visit_path(&*_i.path);
3329}
3330#[cfg(any(feature = "derive", feature = "full"))]
3331pub fn visit_visibility<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast Visibility) {
3332    match *_i {
3333        Visibility::Public(ref _binding_0) => {
3334            _visitor.visit_vis_public(_binding_0);
3335        }
3336        Visibility::Crate(ref _binding_0) => {
3337            _visitor.visit_vis_crate(_binding_0);
3338        }
3339        Visibility::Restricted(ref _binding_0) => {
3340            _visitor.visit_vis_restricted(_binding_0);
3341        }
3342        Visibility::Inherited => {}
3343    }
3344}
3345#[cfg(any(feature = "derive", feature = "full"))]
3346pub fn visit_where_clause<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast WhereClause) {
3347    tokens_helper(_visitor, &_i.where_token.span);
3348    for el in Punctuated::pairs(&_i.predicates) {
3349        let it = el.value();
3350        _visitor.visit_where_predicate(it)
3351    }
3352}
3353#[cfg(any(feature = "derive", feature = "full"))]
3354pub fn visit_where_predicate<'ast, V: Visit<'ast> + ?Sized>(
3355    _visitor: &mut V,
3356    _i: &'ast WherePredicate,
3357) {
3358    match *_i {
3359        WherePredicate::Type(ref _binding_0) => {
3360            _visitor.visit_predicate_type(_binding_0);
3361        }
3362        WherePredicate::Lifetime(ref _binding_0) => {
3363            _visitor.visit_predicate_lifetime(_binding_0);
3364        }
3365        WherePredicate::Eq(ref _binding_0) => {
3366            _visitor.visit_predicate_eq(_binding_0);
3367        }
3368    }
3369}
3370pub fn visit_span<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast Span) {}
3371pub fn visit_ident<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast Ident) {}