Support folding/visiting over Ident and Span tokens
diff --git a/src/gen/fold.rs b/src/gen/fold.rs
index 722c1a1..586a8d7 100644
--- a/src/gen/fold.rs
+++ b/src/gen/fold.rs
@@ -211,6 +211,8 @@
 fn fold_generic_param(&mut self, i: GenericParam) -> GenericParam { fold_generic_param(self, i) }
 
 fn fold_generics(&mut self, i: Generics) -> Generics { fold_generics(self, i) }
+
+fn fold_ident(&mut self, i: Ident) -> Ident { fold_ident(self, i) }
 # [ cfg ( feature = "full" ) ]
 fn fold_impl_item(&mut self, i: ImplItem) -> ImplItem { fold_impl_item(self, i) }
 # [ cfg ( feature = "full" ) ]
@@ -329,6 +331,8 @@
 fn fold_range_limits(&mut self, i: RangeLimits) -> RangeLimits { fold_range_limits(self, i) }
 
 fn fold_return_type(&mut self, i: ReturnType) -> ReturnType { fold_return_type(self, i) }
+
+fn fold_span(&mut self, i: Span) -> Span { fold_span(self, i) }
 # [ cfg ( feature = "full" ) ]
 fn fold_stmt(&mut self, i: Stmt) -> Stmt { fold_stmt(self, i) }
 
@@ -510,7 +514,7 @@
     match _i {
         Named(_binding_0, ) => {
             Named (
-                _binding_0,
+                _visitor.fold_ident(_binding_0),
             )
         }
         Wild(_binding_0, ) => {
@@ -761,7 +765,7 @@
     ConstParam {
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
         const_token: _i . const_token,
-        ident: _i . ident,
+        ident: _visitor.fold_ident(_i . ident),
         colon_token: _i . colon_token,
         ty: _visitor.fold_type(_i . ty),
         eq_token: _i . eq_token,
@@ -795,7 +799,7 @@
 
 pub fn fold_derive_input<V: Folder + ?Sized>(_visitor: &mut V, _i: DeriveInput) -> DeriveInput {
     DeriveInput {
-        ident: _i . ident,
+        ident: _visitor.fold_ident(_i . ident),
         vis: _visitor.fold_visibility(_i . vis),
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
         generics: _visitor.fold_generics(_i . generics),
@@ -914,7 +918,7 @@
 pub fn fold_expr_field<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprField) -> ExprField {
     ExprField {
         expr: Box::new(_visitor.fold_expr(* _i . expr)),
-        field: _i . field,
+        field: _visitor.fold_ident(_i . field),
         dot_token: _i . dot_token,
     }
 }
@@ -1204,7 +1208,7 @@
 pub fn fold_expr_method_call<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprMethodCall) -> ExprMethodCall {
     ExprMethodCall {
         expr: Box::new(_visitor.fold_expr(* _i . expr)),
-        method: _i . method,
+        method: _visitor.fold_ident(_i . method),
         typarams: FoldHelper::lift(_i . typarams, |it| { _visitor.fold_type(it) }),
         args: FoldHelper::lift(_i . args, |it| { _visitor.fold_expr(it) }),
         paren_token: _i . paren_token,
@@ -1340,7 +1344,7 @@
 
 pub fn fold_field<V: Folder + ?Sized>(_visitor: &mut V, _i: Field) -> Field {
     Field {
-        ident: _i . ident,
+        ident: (_i . ident).map(|it| { _visitor.fold_ident(it) }),
         vis: _visitor.fold_visibility(_i . vis),
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
         ty: _visitor.fold_type(_i . ty),
@@ -1350,7 +1354,7 @@
 # [ cfg ( feature = "full" ) ]
 pub fn fold_field_pat<V: Folder + ?Sized>(_visitor: &mut V, _i: FieldPat) -> FieldPat {
     FieldPat {
-        ident: _i . ident,
+        ident: _visitor.fold_ident(_i . ident),
         pat: Box::new(_visitor.fold_pat(* _i . pat)),
         is_shorthand: _i . is_shorthand,
         colon_token: _i . colon_token,
@@ -1360,7 +1364,7 @@
 # [ cfg ( feature = "full" ) ]
 pub fn fold_field_value<V: Folder + ?Sized>(_visitor: &mut V, _i: FieldValue) -> FieldValue {
     FieldValue {
-        ident: _i . ident,
+        ident: _visitor.fold_ident(_i . ident),
         expr: _visitor.fold_expr(_i . expr),
         is_shorthand: _i . is_shorthand,
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
@@ -1439,7 +1443,7 @@
     ForeignItemFn {
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
         vis: _visitor.fold_visibility(_i . vis),
-        ident: _i . ident,
+        ident: _visitor.fold_ident(_i . ident),
         decl: Box::new(_visitor.fold_fn_decl(* _i . decl)),
         semi_token: _i . semi_token,
     }
@@ -1451,7 +1455,7 @@
         vis: _visitor.fold_visibility(_i . vis),
         static_token: _i . static_token,
         mutbl: _visitor.fold_mutability(_i . mutbl),
-        ident: _i . ident,
+        ident: _visitor.fold_ident(_i . ident),
         colon_token: _i . colon_token,
         ty: Box::new(_visitor.fold_type(* _i . ty)),
         semi_token: _i . semi_token,
@@ -1463,7 +1467,7 @@
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
         vis: _visitor.fold_visibility(_i . vis),
         type_token: _i . type_token,
-        ident: _i . ident,
+        ident: _visitor.fold_ident(_i . ident),
         semi_token: _i . semi_token,
     }
 }
@@ -1523,6 +1527,10 @@
         where_clause: _visitor.fold_where_clause(_i . where_clause),
     }
 }
+
+pub fn fold_ident<V: Folder + ?Sized>(_visitor: &mut V, _i: Ident) -> Ident {
+    _i
+}
 # [ cfg ( feature = "full" ) ]
 pub fn fold_impl_item<V: Folder + ?Sized>(_visitor: &mut V, _i: ImplItem) -> ImplItem {
     use ::ImplItem::*;
@@ -1556,7 +1564,7 @@
         vis: _visitor.fold_visibility(_i . vis),
         defaultness: _visitor.fold_defaultness(_i . defaultness),
         const_token: _i . const_token,
-        ident: _i . ident,
+        ident: _visitor.fold_ident(_i . ident),
         colon_token: _i . colon_token,
         ty: _visitor.fold_type(_i . ty),
         eq_token: _i . eq_token,
@@ -1588,7 +1596,7 @@
         vis: _visitor.fold_visibility(_i . vis),
         defaultness: _visitor.fold_defaultness(_i . defaultness),
         type_token: _i . type_token,
-        ident: _i . ident,
+        ident: _visitor.fold_ident(_i . ident),
         generics: _visitor.fold_generics(_i . generics),
         eq_token: _i . eq_token,
         ty: _visitor.fold_type(_i . ty),
@@ -1715,7 +1723,7 @@
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
         vis: _visitor.fold_visibility(_i . vis),
         const_token: _i . const_token,
-        ident: _i . ident,
+        ident: _visitor.fold_ident(_i . ident),
         colon_token: _i . colon_token,
         ty: Box::new(_visitor.fold_type(* _i . ty)),
         eq_token: _i . eq_token,
@@ -1741,7 +1749,7 @@
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
         vis: _visitor.fold_visibility(_i . vis),
         enum_token: _i . enum_token,
-        ident: _i . ident,
+        ident: _visitor.fold_ident(_i . ident),
         generics: _visitor.fold_generics(_i . generics),
         brace_token: _i . brace_token,
         variants: FoldHelper::lift(_i . variants, |it| { _visitor.fold_variant(it) }),
@@ -1754,7 +1762,7 @@
         vis: _visitor.fold_visibility(_i . vis),
         extern_token: _i . extern_token,
         crate_token: _i . crate_token,
-        ident: _i . ident,
+        ident: _visitor.fold_ident(_i . ident),
         rename: _i . rename,
         semi_token: _i . semi_token,
     }
@@ -1768,7 +1776,7 @@
         unsafety: _visitor.fold_unsafety(_i . unsafety),
         abi: (_i . abi).map(|it| { _visitor.fold_abi(it) }),
         decl: Box::new(_visitor.fold_fn_decl(* _i . decl)),
-        ident: _i . ident,
+        ident: _visitor.fold_ident(_i . ident),
         block: Box::new(_visitor.fold_block(* _i . block)),
     }
 }
@@ -1799,7 +1807,7 @@
 pub fn fold_item_macro<V: Folder + ?Sized>(_visitor: &mut V, _i: ItemMacro) -> ItemMacro {
     ItemMacro {
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
-        ident: _i . ident,
+        ident: (_i . ident).map(|it| { _visitor.fold_ident(it) }),
         mac: _visitor.fold_macro(_i . mac),
     }
 }
@@ -1809,7 +1817,7 @@
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
         vis: _visitor.fold_visibility(_i . vis),
         macro_token: _i . macro_token,
-        ident: _i . ident,
+        ident: _visitor.fold_ident(_i . ident),
         args: _i . args,
         body: _i . body,
     }
@@ -1820,7 +1828,7 @@
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
         vis: _visitor.fold_visibility(_i . vis),
         mod_token: _i . mod_token,
-        ident: _i . ident,
+        ident: _visitor.fold_ident(_i . ident),
         content: _i . content,
         semi: _i . semi,
     }
@@ -1832,7 +1840,7 @@
         vis: _visitor.fold_visibility(_i . vis),
         static_token: _i . static_token,
         mutbl: _visitor.fold_mutability(_i . mutbl),
-        ident: _i . ident,
+        ident: _visitor.fold_ident(_i . ident),
         colon_token: _i . colon_token,
         ty: Box::new(_visitor.fold_type(* _i . ty)),
         eq_token: _i . eq_token,
@@ -1846,7 +1854,7 @@
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
         vis: _visitor.fold_visibility(_i . vis),
         struct_token: _i . struct_token,
-        ident: _i . ident,
+        ident: _visitor.fold_ident(_i . ident),
         generics: _visitor.fold_generics(_i . generics),
         data: _visitor.fold_variant_data(_i . data),
         semi_token: _i . semi_token,
@@ -1860,7 +1868,7 @@
         unsafety: _visitor.fold_unsafety(_i . unsafety),
         auto_token: _i . auto_token,
         trait_token: _i . trait_token,
-        ident: _i . ident,
+        ident: _visitor.fold_ident(_i . ident),
         generics: _visitor.fold_generics(_i . generics),
         colon_token: _i . colon_token,
         supertraits: FoldHelper::lift(_i . supertraits, |it| { _visitor.fold_type_param_bound(it) }),
@@ -1874,7 +1882,7 @@
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
         vis: _visitor.fold_visibility(_i . vis),
         type_token: _i . type_token,
-        ident: _i . ident,
+        ident: _visitor.fold_ident(_i . ident),
         generics: _visitor.fold_generics(_i . generics),
         eq_token: _i . eq_token,
         ty: Box::new(_visitor.fold_type(* _i . ty)),
@@ -1887,7 +1895,7 @@
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
         vis: _visitor.fold_visibility(_i . vis),
         union_token: _i . union_token,
-        ident: _i . ident,
+        ident: _visitor.fold_ident(_i . ident),
         generics: _visitor.fold_generics(_i . generics),
         data: _visitor.fold_variant_data(_i . data),
     }
@@ -1951,7 +1959,7 @@
     match _i {
         Term(_binding_0, ) => {
             Term (
-                _binding_0,
+                _visitor.fold_ident(_binding_0),
             )
         }
         List(_binding_0, ) => {
@@ -1969,7 +1977,7 @@
 
 pub fn fold_meta_item_list<V: Folder + ?Sized>(_visitor: &mut V, _i: MetaItemList) -> MetaItemList {
     MetaItemList {
-        ident: _i . ident,
+        ident: _visitor.fold_ident(_i . ident),
         paren_token: _i . paren_token,
         nested: FoldHelper::lift(_i . nested, |it| { _visitor.fold_nested_meta_item(it) }),
     }
@@ -1977,7 +1985,7 @@
 
 pub fn fold_meta_name_value<V: Folder + ?Sized>(_visitor: &mut V, _i: MetaNameValue) -> MetaNameValue {
     MetaNameValue {
-        ident: _i . ident,
+        ident: _visitor.fold_ident(_i . ident),
         eq_token: _i . eq_token,
         lit: _i . lit,
     }
@@ -1988,7 +1996,7 @@
         constness: _visitor.fold_constness(_i . constness),
         unsafety: _visitor.fold_unsafety(_i . unsafety),
         abi: (_i . abi).map(|it| { _visitor.fold_abi(it) }),
-        ident: _i . ident,
+        ident: _visitor.fold_ident(_i . ident),
         decl: _visitor.fold_fn_decl(_i . decl),
     }
 }
@@ -2112,7 +2120,7 @@
 pub fn fold_pat_ident<V: Folder + ?Sized>(_visitor: &mut V, _i: PatIdent) -> PatIdent {
     PatIdent {
         mode: _visitor.fold_binding_mode(_i . mode),
-        ident: _i . ident,
+        ident: _visitor.fold_ident(_i . ident),
         subpat: (_i . subpat).map(|it| { Box::new(_visitor.fold_pat(* it)) }),
         at_token: _i . at_token,
     }
@@ -2233,15 +2241,15 @@
 # [ cfg ( feature = "full" ) ]
 pub fn fold_path_list_item<V: Folder + ?Sized>(_visitor: &mut V, _i: PathListItem) -> PathListItem {
     PathListItem {
-        name: _i . name,
-        rename: _i . rename,
+        name: _visitor.fold_ident(_i . name),
+        rename: (_i . rename).map(|it| { _visitor.fold_ident(it) }),
         as_token: _i . as_token,
     }
 }
 
 pub fn fold_path_segment<V: Folder + ?Sized>(_visitor: &mut V, _i: PathSegment) -> PathSegment {
     PathSegment {
-        ident: _i . ident,
+        ident: _visitor.fold_ident(_i . ident),
         arguments: _visitor.fold_path_arguments(_i . arguments),
     }
 }
@@ -2250,7 +2258,7 @@
     PathSimple {
         path: _visitor.fold_path(_i . path),
         as_token: _i . as_token,
-        rename: _i . rename,
+        rename: (_i . rename).map(|it| { _visitor.fold_ident(it) }),
     }
 }
 
@@ -2299,6 +2307,10 @@
         }
     }
 }
+
+pub fn fold_span<V: Folder + ?Sized>(_visitor: &mut V, _i: Span) -> Span {
+    _i
+}
 # [ cfg ( feature = "full" ) ]
 pub fn fold_stmt<V: Folder + ?Sized>(_visitor: &mut V, _i: Stmt) -> Stmt {
     use ::Stmt::*;
@@ -2374,7 +2386,7 @@
     TraitItemConst {
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
         const_token: _i . const_token,
-        ident: _i . ident,
+        ident: _visitor.fold_ident(_i . ident),
         colon_token: _i . colon_token,
         ty: _visitor.fold_type(_i . ty),
         default: _i . default,
@@ -2402,7 +2414,7 @@
     TraitItemType {
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
         type_token: _i . type_token,
-        ident: _i . ident,
+        ident: _visitor.fold_ident(_i . ident),
         generics: _visitor.fold_generics(_i . generics),
         colon_token: _i . colon_token,
         bounds: FoldHelper::lift(_i . bounds, |it| { _visitor.fold_type_param_bound(it) }),
@@ -2504,7 +2516,7 @@
 
 pub fn fold_type_binding<V: Folder + ?Sized>(_visitor: &mut V, _i: TypeBinding) -> TypeBinding {
     TypeBinding {
-        ident: _i . ident,
+        ident: _visitor.fold_ident(_i . ident),
         eq_token: _i . eq_token,
         ty: _visitor.fold_type(_i . ty),
     }
@@ -2539,7 +2551,7 @@
 pub fn fold_type_param<V: Folder + ?Sized>(_visitor: &mut V, _i: TypeParam) -> TypeParam {
     TypeParam {
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
-        ident: _i . ident,
+        ident: _visitor.fold_ident(_i . ident),
         colon_token: _i . colon_token,
         bounds: FoldHelper::lift(_i . bounds, |it| { _visitor.fold_type_param_bound(it) }),
         eq_token: _i . eq_token,
@@ -2650,7 +2662,7 @@
 
 pub fn fold_variant<V: Folder + ?Sized>(_visitor: &mut V, _i: Variant) -> Variant {
     Variant {
-        ident: _i . ident,
+        ident: _visitor.fold_ident(_i . ident),
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
         data: _visitor.fold_variant_data(_i . data),
         discriminant: (_i . discriminant).map(|it| { _visitor.fold_expr(it) }),
diff --git a/src/gen/visit.rs b/src/gen/visit.rs
index 06697aa..8991a4a 100644
--- a/src/gen/visit.rs
+++ b/src/gen/visit.rs
@@ -184,6 +184,8 @@
 fn visit_generic_param(&mut self, i: &'ast GenericParam) { visit_generic_param(self, i) }
 
 fn visit_generics(&mut self, i: &'ast Generics) { visit_generics(self, i) }
+
+fn visit_ident(&mut self, i: &'ast Ident) { visit_ident(self, i) }
 # [ cfg ( feature = "full" ) ]
 fn visit_impl_item(&mut self, i: &'ast ImplItem) { visit_impl_item(self, i) }
 # [ cfg ( feature = "full" ) ]
@@ -302,6 +304,8 @@
 fn visit_range_limits(&mut self, i: &'ast RangeLimits) { visit_range_limits(self, i) }
 
 fn visit_return_type(&mut self, i: &'ast ReturnType) { visit_return_type(self, i) }
+
+fn visit_span(&mut self, i: &'ast Span) { visit_span(self, i) }
 # [ cfg ( feature = "full" ) ]
 fn visit_stmt(&mut self, i: &'ast Stmt) { visit_stmt(self, i) }
 
@@ -462,7 +466,7 @@
     use ::BareFnArgName::*;
     match *_i {
         Named(ref _binding_0, ) => {
-            // Skipped field * _binding_0;
+            _visitor.visit_ident(&* _binding_0);
         }
         Wild(ref _binding_0, ) => {
             // Skipped field * _binding_0;
@@ -633,7 +637,7 @@
 pub fn visit_const_param<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ConstParam) {
     for it in (_i . attrs).iter() { _visitor.visit_attribute(&it) };
     // Skipped field _i . const_token;
-    // Skipped field _i . ident;
+    _visitor.visit_ident(&_i . ident);
     // Skipped field _i . colon_token;
     _visitor.visit_type(&_i . ty);
     // Skipped field _i . eq_token;
@@ -661,7 +665,7 @@
 }
 
 pub fn visit_derive_input<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast DeriveInput) {
-    // Skipped field _i . ident;
+    _visitor.visit_ident(&_i . ident);
     _visitor.visit_visibility(&_i . vis);
     for it in (_i . attrs).iter() { _visitor.visit_attribute(&it) };
     _visitor.visit_generics(&_i . generics);
@@ -750,7 +754,7 @@
 # [ cfg ( feature = "full" ) ]
 pub fn visit_expr_field<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprField) {
     _visitor.visit_expr(&_i . expr);
-    // Skipped field _i . field;
+    _visitor.visit_ident(&_i . field);
     // Skipped field _i . dot_token;
 }
 # [ cfg ( feature = "full" ) ]
@@ -942,7 +946,7 @@
 # [ cfg ( feature = "full" ) ]
 pub fn visit_expr_method_call<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprMethodCall) {
     _visitor.visit_expr(&_i . expr);
-    // Skipped field _i . method;
+    _visitor.visit_ident(&_i . method);
     for el in (_i . typarams).iter() { let it = el.item(); _visitor.visit_type(&it) };
     for el in (_i . args).iter() { let it = el.item(); _visitor.visit_expr(&it) };
     // Skipped field _i . paren_token;
@@ -1046,7 +1050,7 @@
 }
 
 pub fn visit_field<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast Field) {
-    // Skipped field _i . ident;
+    if let Some(ref it) = _i . ident { _visitor.visit_ident(&* it) };
     _visitor.visit_visibility(&_i . vis);
     for it in (_i . attrs).iter() { _visitor.visit_attribute(&it) };
     _visitor.visit_type(&_i . ty);
@@ -1054,7 +1058,7 @@
 }
 # [ cfg ( feature = "full" ) ]
 pub fn visit_field_pat<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast FieldPat) {
-    // Skipped field _i . ident;
+    _visitor.visit_ident(&_i . ident);
     _visitor.visit_pat(&_i . pat);
     // Skipped field _i . is_shorthand;
     // Skipped field _i . colon_token;
@@ -1062,7 +1066,7 @@
 }
 # [ cfg ( feature = "full" ) ]
 pub fn visit_field_value<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast FieldValue) {
-    // Skipped field _i . ident;
+    _visitor.visit_ident(&_i . ident);
     _visitor.visit_expr(&_i . expr);
     // Skipped field _i . is_shorthand;
     for it in (_i . attrs).iter() { _visitor.visit_attribute(&it) };
@@ -1121,7 +1125,7 @@
 pub fn visit_foreign_item_fn<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ForeignItemFn) {
     for it in (_i . attrs).iter() { _visitor.visit_attribute(&it) };
     _visitor.visit_visibility(&_i . vis);
-    // Skipped field _i . ident;
+    _visitor.visit_ident(&_i . ident);
     _visitor.visit_fn_decl(&_i . decl);
     // Skipped field _i . semi_token;
 }
@@ -1131,7 +1135,7 @@
     _visitor.visit_visibility(&_i . vis);
     // Skipped field _i . static_token;
     _visitor.visit_mutability(&_i . mutbl);
-    // Skipped field _i . ident;
+    _visitor.visit_ident(&_i . ident);
     // Skipped field _i . colon_token;
     _visitor.visit_type(&_i . ty);
     // Skipped field _i . semi_token;
@@ -1141,7 +1145,7 @@
     for it in (_i . attrs).iter() { _visitor.visit_attribute(&it) };
     _visitor.visit_visibility(&_i . vis);
     // Skipped field _i . type_token;
-    // Skipped field _i . ident;
+    _visitor.visit_ident(&_i . ident);
     // Skipped field _i . semi_token;
 }
 
@@ -1184,6 +1188,9 @@
     // Skipped field _i . gt_token;
     _visitor.visit_where_clause(&_i . where_clause);
 }
+
+pub fn visit_ident<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast Ident) {
+}
 # [ cfg ( feature = "full" ) ]
 pub fn visit_impl_item<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ImplItem) {
     use ::ImplItem::*;
@@ -1208,7 +1215,7 @@
     _visitor.visit_visibility(&_i . vis);
     _visitor.visit_defaultness(&_i . defaultness);
     // Skipped field _i . const_token;
-    // Skipped field _i . ident;
+    _visitor.visit_ident(&_i . ident);
     // Skipped field _i . colon_token;
     _visitor.visit_type(&_i . ty);
     // Skipped field _i . eq_token;
@@ -1234,7 +1241,7 @@
     _visitor.visit_visibility(&_i . vis);
     _visitor.visit_defaultness(&_i . defaultness);
     // Skipped field _i . type_token;
-    // Skipped field _i . ident;
+    _visitor.visit_ident(&_i . ident);
     _visitor.visit_generics(&_i . generics);
     // Skipped field _i . eq_token;
     _visitor.visit_type(&_i . ty);
@@ -1321,7 +1328,7 @@
     for it in (_i . attrs).iter() { _visitor.visit_attribute(&it) };
     _visitor.visit_visibility(&_i . vis);
     // Skipped field _i . const_token;
-    // Skipped field _i . ident;
+    _visitor.visit_ident(&_i . ident);
     // Skipped field _i . colon_token;
     _visitor.visit_type(&_i . ty);
     // Skipped field _i . eq_token;
@@ -1343,7 +1350,7 @@
     for it in (_i . attrs).iter() { _visitor.visit_attribute(&it) };
     _visitor.visit_visibility(&_i . vis);
     // Skipped field _i . enum_token;
-    // Skipped field _i . ident;
+    _visitor.visit_ident(&_i . ident);
     _visitor.visit_generics(&_i . generics);
     // Skipped field _i . brace_token;
     for el in (_i . variants).iter() { let it = el.item(); _visitor.visit_variant(&it) };
@@ -1354,7 +1361,7 @@
     _visitor.visit_visibility(&_i . vis);
     // Skipped field _i . extern_token;
     // Skipped field _i . crate_token;
-    // Skipped field _i . ident;
+    _visitor.visit_ident(&_i . ident);
     // Skipped field _i . rename;
     // Skipped field _i . semi_token;
 }
@@ -1366,7 +1373,7 @@
     _visitor.visit_unsafety(&_i . unsafety);
     if let Some(ref it) = _i . abi { _visitor.visit_abi(&* it) };
     _visitor.visit_fn_decl(&_i . decl);
-    // Skipped field _i . ident;
+    _visitor.visit_ident(&_i . ident);
     _visitor.visit_block(&_i . block);
 }
 # [ cfg ( feature = "full" ) ]
@@ -1391,7 +1398,7 @@
 # [ cfg ( feature = "full" ) ]
 pub fn visit_item_macro<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ItemMacro) {
     for it in (_i . attrs).iter() { _visitor.visit_attribute(&it) };
-    // Skipped field _i . ident;
+    if let Some(ref it) = _i . ident { _visitor.visit_ident(&* it) };
     _visitor.visit_macro(&_i . mac);
 }
 # [ cfg ( feature = "full" ) ]
@@ -1399,7 +1406,7 @@
     for it in (_i . attrs).iter() { _visitor.visit_attribute(&it) };
     _visitor.visit_visibility(&_i . vis);
     // Skipped field _i . macro_token;
-    // Skipped field _i . ident;
+    _visitor.visit_ident(&_i . ident);
     // Skipped field _i . args;
     // Skipped field _i . body;
 }
@@ -1408,7 +1415,7 @@
     for it in (_i . attrs).iter() { _visitor.visit_attribute(&it) };
     _visitor.visit_visibility(&_i . vis);
     // Skipped field _i . mod_token;
-    // Skipped field _i . ident;
+    _visitor.visit_ident(&_i . ident);
     // Skipped field _i . content;
     // Skipped field _i . semi;
 }
@@ -1418,7 +1425,7 @@
     _visitor.visit_visibility(&_i . vis);
     // Skipped field _i . static_token;
     _visitor.visit_mutability(&_i . mutbl);
-    // Skipped field _i . ident;
+    _visitor.visit_ident(&_i . ident);
     // Skipped field _i . colon_token;
     _visitor.visit_type(&_i . ty);
     // Skipped field _i . eq_token;
@@ -1430,7 +1437,7 @@
     for it in (_i . attrs).iter() { _visitor.visit_attribute(&it) };
     _visitor.visit_visibility(&_i . vis);
     // Skipped field _i . struct_token;
-    // Skipped field _i . ident;
+    _visitor.visit_ident(&_i . ident);
     _visitor.visit_generics(&_i . generics);
     _visitor.visit_variant_data(&_i . data);
     // Skipped field _i . semi_token;
@@ -1442,7 +1449,7 @@
     _visitor.visit_unsafety(&_i . unsafety);
     // Skipped field _i . auto_token;
     // Skipped field _i . trait_token;
-    // Skipped field _i . ident;
+    _visitor.visit_ident(&_i . ident);
     _visitor.visit_generics(&_i . generics);
     // Skipped field _i . colon_token;
     for el in (_i . supertraits).iter() { let it = el.item(); _visitor.visit_type_param_bound(&it) };
@@ -1454,7 +1461,7 @@
     for it in (_i . attrs).iter() { _visitor.visit_attribute(&it) };
     _visitor.visit_visibility(&_i . vis);
     // Skipped field _i . type_token;
-    // Skipped field _i . ident;
+    _visitor.visit_ident(&_i . ident);
     _visitor.visit_generics(&_i . generics);
     // Skipped field _i . eq_token;
     _visitor.visit_type(&_i . ty);
@@ -1465,7 +1472,7 @@
     for it in (_i . attrs).iter() { _visitor.visit_attribute(&it) };
     _visitor.visit_visibility(&_i . vis);
     // Skipped field _i . union_token;
-    // Skipped field _i . ident;
+    _visitor.visit_ident(&_i . ident);
     _visitor.visit_generics(&_i . generics);
     _visitor.visit_variant_data(&_i . data);
 }
@@ -1517,7 +1524,7 @@
     use ::MetaItem::*;
     match *_i {
         Term(ref _binding_0, ) => {
-            // Skipped field * _binding_0;
+            _visitor.visit_ident(&* _binding_0);
         }
         List(ref _binding_0, ) => {
             _visitor.visit_meta_item_list(&* _binding_0);
@@ -1529,13 +1536,13 @@
 }
 
 pub fn visit_meta_item_list<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast MetaItemList) {
-    // Skipped field _i . ident;
+    _visitor.visit_ident(&_i . ident);
     // Skipped field _i . paren_token;
     for el in (_i . nested).iter() { let it = el.item(); _visitor.visit_nested_meta_item(&it) };
 }
 
 pub fn visit_meta_name_value<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast MetaNameValue) {
-    // Skipped field _i . ident;
+    _visitor.visit_ident(&_i . ident);
     // Skipped field _i . eq_token;
     // Skipped field _i . lit;
 }
@@ -1544,7 +1551,7 @@
     _visitor.visit_constness(&_i . constness);
     _visitor.visit_unsafety(&_i . unsafety);
     if let Some(ref it) = _i . abi { _visitor.visit_abi(&* it) };
-    // Skipped field _i . ident;
+    _visitor.visit_ident(&_i . ident);
     _visitor.visit_fn_decl(&_i . decl);
 }
 
@@ -1630,7 +1637,7 @@
 # [ cfg ( feature = "full" ) ]
 pub fn visit_pat_ident<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast PatIdent) {
     _visitor.visit_binding_mode(&_i . mode);
-    // Skipped field _i . ident;
+    _visitor.visit_ident(&_i . ident);
     if let Some(ref it) = _i . subpat { _visitor.visit_pat(&* it) };
     // Skipped field _i . at_token;
 }
@@ -1721,20 +1728,20 @@
 }
 # [ cfg ( feature = "full" ) ]
 pub fn visit_path_list_item<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast PathListItem) {
-    // Skipped field _i . name;
-    // Skipped field _i . rename;
+    _visitor.visit_ident(&_i . name);
+    if let Some(ref it) = _i . rename { _visitor.visit_ident(&* it) };
     // Skipped field _i . as_token;
 }
 
 pub fn visit_path_segment<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast PathSegment) {
-    // Skipped field _i . ident;
+    _visitor.visit_ident(&_i . ident);
     _visitor.visit_path_arguments(&_i . arguments);
 }
 # [ cfg ( feature = "full" ) ]
 pub fn visit_path_simple<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast PathSimple) {
     _visitor.visit_path(&_i . path);
     // Skipped field _i . as_token;
-    // Skipped field _i . rename;
+    if let Some(ref it) = _i . rename { _visitor.visit_ident(&* it) };
 }
 
 pub fn visit_poly_trait_ref<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast PolyTraitRef) {
@@ -1772,6 +1779,9 @@
         }
     }
 }
+
+pub fn visit_span<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast Span) {
+}
 # [ cfg ( feature = "full" ) ]
 pub fn visit_stmt<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast Stmt) {
     use ::Stmt::*;
@@ -1826,7 +1836,7 @@
 pub fn visit_trait_item_const<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast TraitItemConst) {
     for it in (_i . attrs).iter() { _visitor.visit_attribute(&it) };
     // Skipped field _i . const_token;
-    // Skipped field _i . ident;
+    _visitor.visit_ident(&_i . ident);
     // Skipped field _i . colon_token;
     _visitor.visit_type(&_i . ty);
     // Skipped field _i . default;
@@ -1848,7 +1858,7 @@
 pub fn visit_trait_item_type<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast TraitItemType) {
     for it in (_i . attrs).iter() { _visitor.visit_attribute(&it) };
     // Skipped field _i . type_token;
-    // Skipped field _i . ident;
+    _visitor.visit_ident(&_i . ident);
     _visitor.visit_generics(&_i . generics);
     // Skipped field _i . colon_token;
     for el in (_i . bounds).iter() { let it = el.item(); _visitor.visit_type_param_bound(&it) };
@@ -1916,7 +1926,7 @@
 }
 
 pub fn visit_type_binding<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast TypeBinding) {
-    // Skipped field _i . ident;
+    _visitor.visit_ident(&_i . ident);
     // Skipped field _i . eq_token;
     _visitor.visit_type(&_i . ty);
 }
@@ -1941,7 +1951,7 @@
 
 pub fn visit_type_param<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast TypeParam) {
     for it in (_i . attrs).iter() { _visitor.visit_attribute(&it) };
-    // Skipped field _i . ident;
+    _visitor.visit_ident(&_i . ident);
     // Skipped field _i . colon_token;
     for el in (_i . bounds).iter() { let it = el.item(); _visitor.visit_type_param_bound(&it) };
     // Skipped field _i . eq_token;
@@ -2024,7 +2034,7 @@
 }
 
 pub fn visit_variant<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast Variant) {
-    // Skipped field _i . ident;
+    _visitor.visit_ident(&_i . ident);
     for it in (_i . attrs).iter() { _visitor.visit_attribute(&it) };
     _visitor.visit_variant_data(&_i . data);
     if let Some(ref it) = _i . discriminant { _visitor.visit_expr(&* it) };
diff --git a/src/gen/visit_mut.rs b/src/gen/visit_mut.rs
index 3a91cd4..f22f656 100644
--- a/src/gen/visit_mut.rs
+++ b/src/gen/visit_mut.rs
@@ -184,6 +184,8 @@
 fn visit_generic_param_mut(&mut self, i: &mut GenericParam) { visit_generic_param_mut(self, i) }
 
 fn visit_generics_mut(&mut self, i: &mut Generics) { visit_generics_mut(self, i) }
+
+fn visit_ident_mut(&mut self, i: &mut Ident) { visit_ident_mut(self, i) }
 # [ cfg ( feature = "full" ) ]
 fn visit_impl_item_mut(&mut self, i: &mut ImplItem) { visit_impl_item_mut(self, i) }
 # [ cfg ( feature = "full" ) ]
@@ -302,6 +304,8 @@
 fn visit_range_limits_mut(&mut self, i: &mut RangeLimits) { visit_range_limits_mut(self, i) }
 
 fn visit_return_type_mut(&mut self, i: &mut ReturnType) { visit_return_type_mut(self, i) }
+
+fn visit_span_mut(&mut self, i: &mut Span) { visit_span_mut(self, i) }
 # [ cfg ( feature = "full" ) ]
 fn visit_stmt_mut(&mut self, i: &mut Stmt) { visit_stmt_mut(self, i) }
 
@@ -462,7 +466,7 @@
     use ::BareFnArgName::*;
     match *_i {
         Named(ref mut _binding_0, ) => {
-            // Skipped field * _binding_0;
+            _visitor.visit_ident_mut(&mut * _binding_0);
         }
         Wild(ref mut _binding_0, ) => {
             // Skipped field * _binding_0;
@@ -633,7 +637,7 @@
 pub fn visit_const_param_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut ConstParam) {
     for mut it in (_i . attrs).iter_mut() { _visitor.visit_attribute_mut(&mut it) };
     // Skipped field _i . const_token;
-    // Skipped field _i . ident;
+    _visitor.visit_ident_mut(&mut _i . ident);
     // Skipped field _i . colon_token;
     _visitor.visit_type_mut(&mut _i . ty);
     // Skipped field _i . eq_token;
@@ -661,7 +665,7 @@
 }
 
 pub fn visit_derive_input_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut DeriveInput) {
-    // Skipped field _i . ident;
+    _visitor.visit_ident_mut(&mut _i . ident);
     _visitor.visit_visibility_mut(&mut _i . vis);
     for mut it in (_i . attrs).iter_mut() { _visitor.visit_attribute_mut(&mut it) };
     _visitor.visit_generics_mut(&mut _i . generics);
@@ -750,7 +754,7 @@
 # [ cfg ( feature = "full" ) ]
 pub fn visit_expr_field_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut ExprField) {
     _visitor.visit_expr_mut(&mut _i . expr);
-    // Skipped field _i . field;
+    _visitor.visit_ident_mut(&mut _i . field);
     // Skipped field _i . dot_token;
 }
 # [ cfg ( feature = "full" ) ]
@@ -942,7 +946,7 @@
 # [ cfg ( feature = "full" ) ]
 pub fn visit_expr_method_call_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut ExprMethodCall) {
     _visitor.visit_expr_mut(&mut _i . expr);
-    // Skipped field _i . method;
+    _visitor.visit_ident_mut(&mut _i . method);
     for mut el in (_i . typarams).iter_mut() { let mut it = el.item_mut(); _visitor.visit_type_mut(&mut it) };
     for mut el in (_i . args).iter_mut() { let mut it = el.item_mut(); _visitor.visit_expr_mut(&mut it) };
     // Skipped field _i . paren_token;
@@ -1046,7 +1050,7 @@
 }
 
 pub fn visit_field_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut Field) {
-    // Skipped field _i . ident;
+    if let Some(ref mut it) = _i . ident { _visitor.visit_ident_mut(&mut * it) };
     _visitor.visit_visibility_mut(&mut _i . vis);
     for mut it in (_i . attrs).iter_mut() { _visitor.visit_attribute_mut(&mut it) };
     _visitor.visit_type_mut(&mut _i . ty);
@@ -1054,7 +1058,7 @@
 }
 # [ cfg ( feature = "full" ) ]
 pub fn visit_field_pat_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut FieldPat) {
-    // Skipped field _i . ident;
+    _visitor.visit_ident_mut(&mut _i . ident);
     _visitor.visit_pat_mut(&mut _i . pat);
     // Skipped field _i . is_shorthand;
     // Skipped field _i . colon_token;
@@ -1062,7 +1066,7 @@
 }
 # [ cfg ( feature = "full" ) ]
 pub fn visit_field_value_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut FieldValue) {
-    // Skipped field _i . ident;
+    _visitor.visit_ident_mut(&mut _i . ident);
     _visitor.visit_expr_mut(&mut _i . expr);
     // Skipped field _i . is_shorthand;
     for mut it in (_i . attrs).iter_mut() { _visitor.visit_attribute_mut(&mut it) };
@@ -1121,7 +1125,7 @@
 pub fn visit_foreign_item_fn_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut ForeignItemFn) {
     for mut it in (_i . attrs).iter_mut() { _visitor.visit_attribute_mut(&mut it) };
     _visitor.visit_visibility_mut(&mut _i . vis);
-    // Skipped field _i . ident;
+    _visitor.visit_ident_mut(&mut _i . ident);
     _visitor.visit_fn_decl_mut(&mut _i . decl);
     // Skipped field _i . semi_token;
 }
@@ -1131,7 +1135,7 @@
     _visitor.visit_visibility_mut(&mut _i . vis);
     // Skipped field _i . static_token;
     _visitor.visit_mutability_mut(&mut _i . mutbl);
-    // Skipped field _i . ident;
+    _visitor.visit_ident_mut(&mut _i . ident);
     // Skipped field _i . colon_token;
     _visitor.visit_type_mut(&mut _i . ty);
     // Skipped field _i . semi_token;
@@ -1141,7 +1145,7 @@
     for mut it in (_i . attrs).iter_mut() { _visitor.visit_attribute_mut(&mut it) };
     _visitor.visit_visibility_mut(&mut _i . vis);
     // Skipped field _i . type_token;
-    // Skipped field _i . ident;
+    _visitor.visit_ident_mut(&mut _i . ident);
     // Skipped field _i . semi_token;
 }
 
@@ -1184,6 +1188,9 @@
     // Skipped field _i . gt_token;
     _visitor.visit_where_clause_mut(&mut _i . where_clause);
 }
+
+pub fn visit_ident_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut Ident) {
+}
 # [ cfg ( feature = "full" ) ]
 pub fn visit_impl_item_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut ImplItem) {
     use ::ImplItem::*;
@@ -1208,7 +1215,7 @@
     _visitor.visit_visibility_mut(&mut _i . vis);
     _visitor.visit_defaultness_mut(&mut _i . defaultness);
     // Skipped field _i . const_token;
-    // Skipped field _i . ident;
+    _visitor.visit_ident_mut(&mut _i . ident);
     // Skipped field _i . colon_token;
     _visitor.visit_type_mut(&mut _i . ty);
     // Skipped field _i . eq_token;
@@ -1234,7 +1241,7 @@
     _visitor.visit_visibility_mut(&mut _i . vis);
     _visitor.visit_defaultness_mut(&mut _i . defaultness);
     // Skipped field _i . type_token;
-    // Skipped field _i . ident;
+    _visitor.visit_ident_mut(&mut _i . ident);
     _visitor.visit_generics_mut(&mut _i . generics);
     // Skipped field _i . eq_token;
     _visitor.visit_type_mut(&mut _i . ty);
@@ -1321,7 +1328,7 @@
     for mut it in (_i . attrs).iter_mut() { _visitor.visit_attribute_mut(&mut it) };
     _visitor.visit_visibility_mut(&mut _i . vis);
     // Skipped field _i . const_token;
-    // Skipped field _i . ident;
+    _visitor.visit_ident_mut(&mut _i . ident);
     // Skipped field _i . colon_token;
     _visitor.visit_type_mut(&mut _i . ty);
     // Skipped field _i . eq_token;
@@ -1343,7 +1350,7 @@
     for mut it in (_i . attrs).iter_mut() { _visitor.visit_attribute_mut(&mut it) };
     _visitor.visit_visibility_mut(&mut _i . vis);
     // Skipped field _i . enum_token;
-    // Skipped field _i . ident;
+    _visitor.visit_ident_mut(&mut _i . ident);
     _visitor.visit_generics_mut(&mut _i . generics);
     // Skipped field _i . brace_token;
     for mut el in (_i . variants).iter_mut() { let mut it = el.item_mut(); _visitor.visit_variant_mut(&mut it) };
@@ -1354,7 +1361,7 @@
     _visitor.visit_visibility_mut(&mut _i . vis);
     // Skipped field _i . extern_token;
     // Skipped field _i . crate_token;
-    // Skipped field _i . ident;
+    _visitor.visit_ident_mut(&mut _i . ident);
     // Skipped field _i . rename;
     // Skipped field _i . semi_token;
 }
@@ -1366,7 +1373,7 @@
     _visitor.visit_unsafety_mut(&mut _i . unsafety);
     if let Some(ref mut it) = _i . abi { _visitor.visit_abi_mut(&mut * it) };
     _visitor.visit_fn_decl_mut(&mut _i . decl);
-    // Skipped field _i . ident;
+    _visitor.visit_ident_mut(&mut _i . ident);
     _visitor.visit_block_mut(&mut _i . block);
 }
 # [ cfg ( feature = "full" ) ]
@@ -1391,7 +1398,7 @@
 # [ cfg ( feature = "full" ) ]
 pub fn visit_item_macro_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut ItemMacro) {
     for mut it in (_i . attrs).iter_mut() { _visitor.visit_attribute_mut(&mut it) };
-    // Skipped field _i . ident;
+    if let Some(ref mut it) = _i . ident { _visitor.visit_ident_mut(&mut * it) };
     _visitor.visit_macro_mut(&mut _i . mac);
 }
 # [ cfg ( feature = "full" ) ]
@@ -1399,7 +1406,7 @@
     for mut it in (_i . attrs).iter_mut() { _visitor.visit_attribute_mut(&mut it) };
     _visitor.visit_visibility_mut(&mut _i . vis);
     // Skipped field _i . macro_token;
-    // Skipped field _i . ident;
+    _visitor.visit_ident_mut(&mut _i . ident);
     // Skipped field _i . args;
     // Skipped field _i . body;
 }
@@ -1408,7 +1415,7 @@
     for mut it in (_i . attrs).iter_mut() { _visitor.visit_attribute_mut(&mut it) };
     _visitor.visit_visibility_mut(&mut _i . vis);
     // Skipped field _i . mod_token;
-    // Skipped field _i . ident;
+    _visitor.visit_ident_mut(&mut _i . ident);
     // Skipped field _i . content;
     // Skipped field _i . semi;
 }
@@ -1418,7 +1425,7 @@
     _visitor.visit_visibility_mut(&mut _i . vis);
     // Skipped field _i . static_token;
     _visitor.visit_mutability_mut(&mut _i . mutbl);
-    // Skipped field _i . ident;
+    _visitor.visit_ident_mut(&mut _i . ident);
     // Skipped field _i . colon_token;
     _visitor.visit_type_mut(&mut _i . ty);
     // Skipped field _i . eq_token;
@@ -1430,7 +1437,7 @@
     for mut it in (_i . attrs).iter_mut() { _visitor.visit_attribute_mut(&mut it) };
     _visitor.visit_visibility_mut(&mut _i . vis);
     // Skipped field _i . struct_token;
-    // Skipped field _i . ident;
+    _visitor.visit_ident_mut(&mut _i . ident);
     _visitor.visit_generics_mut(&mut _i . generics);
     _visitor.visit_variant_data_mut(&mut _i . data);
     // Skipped field _i . semi_token;
@@ -1442,7 +1449,7 @@
     _visitor.visit_unsafety_mut(&mut _i . unsafety);
     // Skipped field _i . auto_token;
     // Skipped field _i . trait_token;
-    // Skipped field _i . ident;
+    _visitor.visit_ident_mut(&mut _i . ident);
     _visitor.visit_generics_mut(&mut _i . generics);
     // Skipped field _i . colon_token;
     for mut el in (_i . supertraits).iter_mut() { let mut it = el.item_mut(); _visitor.visit_type_param_bound_mut(&mut it) };
@@ -1454,7 +1461,7 @@
     for mut it in (_i . attrs).iter_mut() { _visitor.visit_attribute_mut(&mut it) };
     _visitor.visit_visibility_mut(&mut _i . vis);
     // Skipped field _i . type_token;
-    // Skipped field _i . ident;
+    _visitor.visit_ident_mut(&mut _i . ident);
     _visitor.visit_generics_mut(&mut _i . generics);
     // Skipped field _i . eq_token;
     _visitor.visit_type_mut(&mut _i . ty);
@@ -1465,7 +1472,7 @@
     for mut it in (_i . attrs).iter_mut() { _visitor.visit_attribute_mut(&mut it) };
     _visitor.visit_visibility_mut(&mut _i . vis);
     // Skipped field _i . union_token;
-    // Skipped field _i . ident;
+    _visitor.visit_ident_mut(&mut _i . ident);
     _visitor.visit_generics_mut(&mut _i . generics);
     _visitor.visit_variant_data_mut(&mut _i . data);
 }
@@ -1517,7 +1524,7 @@
     use ::MetaItem::*;
     match *_i {
         Term(ref mut _binding_0, ) => {
-            // Skipped field * _binding_0;
+            _visitor.visit_ident_mut(&mut * _binding_0);
         }
         List(ref mut _binding_0, ) => {
             _visitor.visit_meta_item_list_mut(&mut * _binding_0);
@@ -1529,13 +1536,13 @@
 }
 
 pub fn visit_meta_item_list_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut MetaItemList) {
-    // Skipped field _i . ident;
+    _visitor.visit_ident_mut(&mut _i . ident);
     // Skipped field _i . paren_token;
     for mut el in (_i . nested).iter_mut() { let mut it = el.item_mut(); _visitor.visit_nested_meta_item_mut(&mut it) };
 }
 
 pub fn visit_meta_name_value_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut MetaNameValue) {
-    // Skipped field _i . ident;
+    _visitor.visit_ident_mut(&mut _i . ident);
     // Skipped field _i . eq_token;
     // Skipped field _i . lit;
 }
@@ -1544,7 +1551,7 @@
     _visitor.visit_constness_mut(&mut _i . constness);
     _visitor.visit_unsafety_mut(&mut _i . unsafety);
     if let Some(ref mut it) = _i . abi { _visitor.visit_abi_mut(&mut * it) };
-    // Skipped field _i . ident;
+    _visitor.visit_ident_mut(&mut _i . ident);
     _visitor.visit_fn_decl_mut(&mut _i . decl);
 }
 
@@ -1630,7 +1637,7 @@
 # [ cfg ( feature = "full" ) ]
 pub fn visit_pat_ident_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut PatIdent) {
     _visitor.visit_binding_mode_mut(&mut _i . mode);
-    // Skipped field _i . ident;
+    _visitor.visit_ident_mut(&mut _i . ident);
     if let Some(ref mut it) = _i . subpat { _visitor.visit_pat_mut(&mut * it) };
     // Skipped field _i . at_token;
 }
@@ -1721,20 +1728,20 @@
 }
 # [ cfg ( feature = "full" ) ]
 pub fn visit_path_list_item_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut PathListItem) {
-    // Skipped field _i . name;
-    // Skipped field _i . rename;
+    _visitor.visit_ident_mut(&mut _i . name);
+    if let Some(ref mut it) = _i . rename { _visitor.visit_ident_mut(&mut * it) };
     // Skipped field _i . as_token;
 }
 
 pub fn visit_path_segment_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut PathSegment) {
-    // Skipped field _i . ident;
+    _visitor.visit_ident_mut(&mut _i . ident);
     _visitor.visit_path_arguments_mut(&mut _i . arguments);
 }
 # [ cfg ( feature = "full" ) ]
 pub fn visit_path_simple_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut PathSimple) {
     _visitor.visit_path_mut(&mut _i . path);
     // Skipped field _i . as_token;
-    // Skipped field _i . rename;
+    if let Some(ref mut it) = _i . rename { _visitor.visit_ident_mut(&mut * it) };
 }
 
 pub fn visit_poly_trait_ref_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut PolyTraitRef) {
@@ -1772,6 +1779,9 @@
         }
     }
 }
+
+pub fn visit_span_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut Span) {
+}
 # [ cfg ( feature = "full" ) ]
 pub fn visit_stmt_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut Stmt) {
     use ::Stmt::*;
@@ -1826,7 +1836,7 @@
 pub fn visit_trait_item_const_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut TraitItemConst) {
     for mut it in (_i . attrs).iter_mut() { _visitor.visit_attribute_mut(&mut it) };
     // Skipped field _i . const_token;
-    // Skipped field _i . ident;
+    _visitor.visit_ident_mut(&mut _i . ident);
     // Skipped field _i . colon_token;
     _visitor.visit_type_mut(&mut _i . ty);
     // Skipped field _i . default;
@@ -1848,7 +1858,7 @@
 pub fn visit_trait_item_type_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut TraitItemType) {
     for mut it in (_i . attrs).iter_mut() { _visitor.visit_attribute_mut(&mut it) };
     // Skipped field _i . type_token;
-    // Skipped field _i . ident;
+    _visitor.visit_ident_mut(&mut _i . ident);
     _visitor.visit_generics_mut(&mut _i . generics);
     // Skipped field _i . colon_token;
     for mut el in (_i . bounds).iter_mut() { let mut it = el.item_mut(); _visitor.visit_type_param_bound_mut(&mut it) };
@@ -1916,7 +1926,7 @@
 }
 
 pub fn visit_type_binding_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut TypeBinding) {
-    // Skipped field _i . ident;
+    _visitor.visit_ident_mut(&mut _i . ident);
     // Skipped field _i . eq_token;
     _visitor.visit_type_mut(&mut _i . ty);
 }
@@ -1941,7 +1951,7 @@
 
 pub fn visit_type_param_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut TypeParam) {
     for mut it in (_i . attrs).iter_mut() { _visitor.visit_attribute_mut(&mut it) };
-    // Skipped field _i . ident;
+    _visitor.visit_ident_mut(&mut _i . ident);
     // Skipped field _i . colon_token;
     for mut el in (_i . bounds).iter_mut() { let mut it = el.item_mut(); _visitor.visit_type_param_bound_mut(&mut it) };
     // Skipped field _i . eq_token;
@@ -2024,7 +2034,7 @@
 }
 
 pub fn visit_variant_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut Variant) {
-    // Skipped field _i . ident;
+    _visitor.visit_ident_mut(&mut _i . ident);
     for mut it in (_i . attrs).iter_mut() { _visitor.visit_attribute_mut(&mut it) };
     _visitor.visit_variant_data_mut(&mut _i . data);
     if let Some(ref mut it) = _i . discriminant { _visitor.visit_expr_mut(&mut * it) };