Codegen for ident, lifetime, lit
diff --git a/src/gen/fold.rs b/src/gen/fold.rs
index b7165ef..c32ae4e 100644
--- a/src/gen/fold.rs
+++ b/src/gen/fold.rs
@@ -265,7 +265,11 @@
 # [ cfg ( feature = "full" ) ]
 fn fold_item_use(&mut self, i: ItemUse) -> ItemUse { fold_item_use(self, i) }
 
+fn fold_lifetime(&mut self, i: Lifetime) -> Lifetime { fold_lifetime(self, i) }
+
 fn fold_lifetime_def(&mut self, i: LifetimeDef) -> LifetimeDef { fold_lifetime_def(self, i) }
+
+fn fold_lit(&mut self, i: Lit) -> Lit { fold_lit(self, i) }
 # [ cfg ( feature = "full" ) ]
 fn fold_local(&mut self, i: Local) -> Local { fold_local(self, i) }
 # [ cfg ( feature = "full" ) ]
@@ -430,7 +434,7 @@
     match _i {
         Named(_binding_0, ) => {
             Named (
-                _binding_0,
+                _visitor.fold_lit(_binding_0),
             )
         }
         Default => { Default }
@@ -465,7 +469,7 @@
     ArgSelfRef {
         and_token: _i . and_token,
         self_token: _i . self_token,
-        lifetime: _i . lifetime,
+        lifetime: (_i . lifetime).map(|it| { _visitor.fold_lifetime(it) }),
         mutbl: _visitor.fold_mutability(_i . mutbl),
     }
 }
@@ -871,7 +875,7 @@
 # [ cfg ( feature = "full" ) ]
 pub fn fold_expr_break<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprBreak) -> ExprBreak {
     ExprBreak {
-        label: _i . label,
+        label: (_i . label).map(|it| { _visitor.fold_lifetime(it) }),
         expr: (_i . expr).map(|it| { Box::new(_visitor.fold_expr(* it)) }),
         break_token: _i . break_token,
     }
@@ -914,7 +918,7 @@
 # [ cfg ( feature = "full" ) ]
 pub fn fold_expr_continue<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprContinue) -> ExprContinue {
     ExprContinue {
-        label: _i . label,
+        label: (_i . label).map(|it| { _visitor.fold_lifetime(it) }),
         continue_token: _i . continue_token,
     }
 }
@@ -932,7 +936,7 @@
         pat: Box::new(_visitor.fold_pat(* _i . pat)),
         expr: Box::new(_visitor.fold_expr(* _i . expr)),
         body: _visitor.fold_block(_i . body),
-        label: _i . label,
+        label: (_i . label).map(|it| { _visitor.fold_lifetime(it) }),
         for_token: _i . for_token,
         colon_token: _i . colon_token,
         in_token: _i . in_token,
@@ -1030,7 +1034,7 @@
         }
         Lit(_binding_0, ) => {
             Lit (
-                _binding_0,
+                _visitor.fold_lit(_binding_0),
             )
         }
         Cast(_binding_0, ) => {
@@ -1189,7 +1193,7 @@
 pub fn fold_expr_loop<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprLoop) -> ExprLoop {
     ExprLoop {
         body: _visitor.fold_block(_i . body),
-        label: _i . label,
+        label: (_i . label).map(|it| { _visitor.fold_lifetime(it) }),
         loop_token: _i . loop_token,
         colon_token: _i . colon_token,
     }
@@ -1306,7 +1310,7 @@
     ExprWhile {
         cond: Box::new(_visitor.fold_expr(* _i . cond)),
         body: _visitor.fold_block(_i . body),
-        label: _i . label,
+        label: (_i . label).map(|it| { _visitor.fold_lifetime(it) }),
         colon_token: _i . colon_token,
         while_token: _i . while_token,
     }
@@ -1317,7 +1321,7 @@
         pat: Box::new(_visitor.fold_pat(* _i . pat)),
         expr: Box::new(_visitor.fold_expr(* _i . expr)),
         body: _visitor.fold_block(_i . body),
-        label: _i . label,
+        label: (_i . label).map(|it| { _visitor.fold_lifetime(it) }),
         colon_token: _i . colon_token,
         while_token: _i . while_token,
         let_token: _i . let_token,
@@ -1471,7 +1475,7 @@
     match _i {
         Lifetime(_binding_0, ) => {
             Lifetime (
-                _binding_0,
+                _visitor.fold_lifetime(_binding_0),
             )
         }
         Type(_binding_0, ) => {
@@ -1523,7 +1527,10 @@
 }
 
 pub fn fold_ident<V: Folder + ?Sized>(_visitor: &mut V, _i: Ident) -> Ident {
-    _i
+    Ident {
+        sym: _i . sym,
+        span: _visitor.fold_span(_i . span),
+    }
 }
 # [ cfg ( feature = "full" ) ]
 pub fn fold_impl_item<V: Folder + ?Sized>(_visitor: &mut V, _i: ImplItem) -> ImplItem {
@@ -1916,12 +1923,26 @@
     }
 }
 
+pub fn fold_lifetime<V: Folder + ?Sized>(_visitor: &mut V, _i: Lifetime) -> Lifetime {
+    Lifetime {
+        sym: _i . sym,
+        span: _visitor.fold_span(_i . span),
+    }
+}
+
 pub fn fold_lifetime_def<V: Folder + ?Sized>(_visitor: &mut V, _i: LifetimeDef) -> LifetimeDef {
     LifetimeDef {
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
-        lifetime: _i . lifetime,
+        lifetime: _visitor.fold_lifetime(_i . lifetime),
         colon_token: _i . colon_token,
-        bounds: _i . bounds,
+        bounds: FoldHelper::lift(_i . bounds, |it| { _visitor.fold_lifetime(it) }),
+    }
+}
+
+pub fn fold_lit<V: Folder + ?Sized>(_visitor: &mut V, _i: Lit) -> Lit {
+    Lit {
+        value: _i . value,
+        span: _visitor.fold_span(_i . span),
     }
 }
 # [ cfg ( feature = "full" ) ]
@@ -2008,7 +2029,7 @@
     MetaNameValue {
         ident: _visitor.fold_ident(_i . ident),
         eq_token: _i . eq_token,
-        lit: _i . lit,
+        lit: _visitor.fold_lit(_i . lit),
     }
 }
 # [ cfg ( feature = "full" ) ]
@@ -2051,7 +2072,7 @@
         }
         Literal(_binding_0, ) => {
             Literal (
-                _binding_0,
+                _visitor.fold_lit(_binding_0),
             )
         }
     }
@@ -2559,7 +2580,7 @@
         }
         Region(_binding_0, ) => {
             Region (
-                _binding_0,
+                _visitor.fold_lifetime(_binding_0),
             )
         }
     }
@@ -2590,7 +2611,7 @@
 pub fn fold_type_reference<V: Folder + ?Sized>(_visitor: &mut V, _i: TypeReference) -> TypeReference {
     TypeReference {
         and_token: _i . and_token,
-        lifetime: _i . lifetime,
+        lifetime: (_i . lifetime).map(|it| { _visitor.fold_lifetime(it) }),
         ty: Box::new(_visitor.fold_mut_type(* _i . ty)),
     }
 }
@@ -2820,9 +2841,9 @@
 
 pub fn fold_where_region_predicate<V: Folder + ?Sized>(_visitor: &mut V, _i: WhereRegionPredicate) -> WhereRegionPredicate {
     WhereRegionPredicate {
-        lifetime: _i . lifetime,
+        lifetime: _visitor.fold_lifetime(_i . lifetime),
         colon_token: _i . colon_token,
-        bounds: _i . bounds,
+        bounds: FoldHelper::lift(_i . bounds, |it| { _visitor.fold_lifetime(it) }),
     }
 }
 
diff --git a/src/gen/visit.rs b/src/gen/visit.rs
index ca2b407..a0a0aab 100644
--- a/src/gen/visit.rs
+++ b/src/gen/visit.rs
@@ -239,7 +239,11 @@
 # [ cfg ( feature = "full" ) ]
 fn visit_item_use(&mut self, i: &'ast ItemUse) { visit_item_use(self, i) }
 
+fn visit_lifetime(&mut self, i: &'ast Lifetime) { visit_lifetime(self, i) }
+
 fn visit_lifetime_def(&mut self, i: &'ast LifetimeDef) { visit_lifetime_def(self, i) }
+
+fn visit_lit(&mut self, i: &'ast Lit) { visit_lit(self, i) }
 # [ cfg ( feature = "full" ) ]
 fn visit_local(&mut self, i: &'ast Local) { visit_local(self, i) }
 # [ cfg ( feature = "full" ) ]
@@ -401,7 +405,7 @@
     use ::AbiKind::*;
     match *_i {
         Named(ref _binding_0, ) => {
-            // Skipped field _binding_0;
+            _visitor.visit_lit(_binding_0);
         }
         Default => { }
     }
@@ -428,7 +432,7 @@
 pub fn visit_arg_self_ref<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ArgSelfRef) {
     // Skipped field _i . and_token;
     // Skipped field _i . self_token;
-    // Skipped field _i . lifetime;
+    if let Some(ref it) = _i . lifetime { _visitor.visit_lifetime(it) };
     _visitor.visit_mutability(& _i . mutbl);
 }
 # [ cfg ( feature = "full" ) ]
@@ -720,7 +724,7 @@
 }
 # [ cfg ( feature = "full" ) ]
 pub fn visit_expr_break<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprBreak) {
-    // Skipped field _i . label;
+    if let Some(ref it) = _i . label { _visitor.visit_lifetime(it) };
     if let Some(ref it) = _i . expr { _visitor.visit_expr(it) };
     // Skipped field _i . break_token;
 }
@@ -753,7 +757,7 @@
 }
 # [ cfg ( feature = "full" ) ]
 pub fn visit_expr_continue<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprContinue) {
-    // Skipped field _i . label;
+    if let Some(ref it) = _i . label { _visitor.visit_lifetime(it) };
     // Skipped field _i . continue_token;
 }
 # [ cfg ( feature = "full" ) ]
@@ -767,7 +771,7 @@
     _visitor.visit_pat(& _i . pat);
     _visitor.visit_expr(& _i . expr);
     _visitor.visit_block(& _i . body);
-    // Skipped field _i . label;
+    if let Some(ref it) = _i . label { _visitor.visit_lifetime(it) };
     // Skipped field _i . for_token;
     // Skipped field _i . colon_token;
     // Skipped field _i . in_token;
@@ -837,7 +841,7 @@
             _visitor.visit_expr_unary(_binding_0);
         }
         Lit(ref _binding_0, ) => {
-            // Skipped field _binding_0;
+            _visitor.visit_lit(_binding_0);
         }
         Cast(ref _binding_0, ) => {
             _visitor.visit_expr_cast(_binding_0);
@@ -934,7 +938,7 @@
 # [ cfg ( feature = "full" ) ]
 pub fn visit_expr_loop<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprLoop) {
     _visitor.visit_block(& _i . body);
-    // Skipped field _i . label;
+    if let Some(ref it) = _i . label { _visitor.visit_lifetime(it) };
     // Skipped field _i . loop_token;
     // Skipped field _i . colon_token;
 }
@@ -1023,7 +1027,7 @@
 pub fn visit_expr_while<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprWhile) {
     _visitor.visit_expr(& _i . cond);
     _visitor.visit_block(& _i . body);
-    // Skipped field _i . label;
+    if let Some(ref it) = _i . label { _visitor.visit_lifetime(it) };
     // Skipped field _i . colon_token;
     // Skipped field _i . while_token;
 }
@@ -1032,7 +1036,7 @@
     _visitor.visit_pat(& _i . pat);
     _visitor.visit_expr(& _i . expr);
     _visitor.visit_block(& _i . body);
-    // Skipped field _i . label;
+    if let Some(ref it) = _i . label { _visitor.visit_lifetime(it) };
     // Skipped field _i . colon_token;
     // Skipped field _i . while_token;
     // Skipped field _i . let_token;
@@ -1150,7 +1154,7 @@
     use ::GenericArgument::*;
     match *_i {
         Lifetime(ref _binding_0, ) => {
-            // Skipped field _binding_0;
+            _visitor.visit_lifetime(_binding_0);
         }
         Type(ref _binding_0, ) => {
             _visitor.visit_type(_binding_0);
@@ -1187,6 +1191,8 @@
 }
 
 pub fn visit_ident<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast Ident) {
+    // Skipped field _i . sym;
+    _visitor.visit_span(& _i . span);
 }
 # [ cfg ( feature = "full" ) ]
 pub fn visit_impl_item<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ImplItem) {
@@ -1491,11 +1497,21 @@
     // Skipped field _i . semi_token;
 }
 
+pub fn visit_lifetime<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast Lifetime) {
+    // Skipped field _i . sym;
+    _visitor.visit_span(& _i . span);
+}
+
 pub fn visit_lifetime_def<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast LifetimeDef) {
     for it in & _i . attrs { _visitor.visit_attribute(it) };
-    // Skipped field _i . lifetime;
+    _visitor.visit_lifetime(& _i . lifetime);
     // Skipped field _i . colon_token;
-    // Skipped field _i . bounds;
+    for el in & _i . bounds { let it = el.item(); _visitor.visit_lifetime(it) };
+}
+
+pub fn visit_lit<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast Lit) {
+    // Skipped field _i . value;
+    _visitor.visit_span(& _i . span);
 }
 # [ cfg ( feature = "full" ) ]
 pub fn visit_local<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast Local) {
@@ -1562,7 +1578,7 @@
 pub fn visit_meta_name_value<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast MetaNameValue) {
     _visitor.visit_ident(& _i . ident);
     // Skipped field _i . eq_token;
-    // Skipped field _i . lit;
+    _visitor.visit_lit(& _i . lit);
 }
 # [ cfg ( feature = "full" ) ]
 pub fn visit_method_sig<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast MethodSig) {
@@ -1595,7 +1611,7 @@
             _visitor.visit_meta_item(_binding_0);
         }
         Literal(ref _binding_0, ) => {
-            // Skipped field _binding_0;
+            _visitor.visit_lit(_binding_0);
         }
     }
 }
@@ -1960,7 +1976,7 @@
             _visitor.visit_trait_bound_modifier(_binding_1);
         }
         Region(ref _binding_0, ) => {
-            // Skipped field _binding_0;
+            _visitor.visit_lifetime(_binding_0);
         }
     }
 }
@@ -1983,7 +1999,7 @@
 
 pub fn visit_type_reference<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast TypeReference) {
     // Skipped field _i . and_token;
-    // Skipped field _i . lifetime;
+    if let Some(ref it) = _i . lifetime { _visitor.visit_lifetime(it) };
     _visitor.visit_mut_type(& _i . ty);
 }
 
@@ -2151,8 +2167,8 @@
 }
 
 pub fn visit_where_region_predicate<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast WhereRegionPredicate) {
-    // Skipped field _i . lifetime;
+    _visitor.visit_lifetime(& _i . lifetime);
     // Skipped field _i . colon_token;
-    // Skipped field _i . bounds;
+    for el in & _i . bounds { let it = el.item(); _visitor.visit_lifetime(it) };
 }
 
diff --git a/src/gen/visit_mut.rs b/src/gen/visit_mut.rs
index 2dae4a7..73ecd16 100644
--- a/src/gen/visit_mut.rs
+++ b/src/gen/visit_mut.rs
@@ -239,7 +239,11 @@
 # [ cfg ( feature = "full" ) ]
 fn visit_item_use_mut(&mut self, i: &mut ItemUse) { visit_item_use_mut(self, i) }
 
+fn visit_lifetime_mut(&mut self, i: &mut Lifetime) { visit_lifetime_mut(self, i) }
+
 fn visit_lifetime_def_mut(&mut self, i: &mut LifetimeDef) { visit_lifetime_def_mut(self, i) }
+
+fn visit_lit_mut(&mut self, i: &mut Lit) { visit_lit_mut(self, i) }
 # [ cfg ( feature = "full" ) ]
 fn visit_local_mut(&mut self, i: &mut Local) { visit_local_mut(self, i) }
 # [ cfg ( feature = "full" ) ]
@@ -401,7 +405,7 @@
     use ::AbiKind::*;
     match *_i {
         Named(ref mut _binding_0, ) => {
-            // Skipped field _binding_0;
+            _visitor.visit_lit_mut(_binding_0);
         }
         Default => { }
     }
@@ -428,7 +432,7 @@
 pub fn visit_arg_self_ref_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut ArgSelfRef) {
     // Skipped field _i . and_token;
     // Skipped field _i . self_token;
-    // Skipped field _i . lifetime;
+    if let Some(ref mut it) = _i . lifetime { _visitor.visit_lifetime_mut(it) };
     _visitor.visit_mutability_mut(& mut _i . mutbl);
 }
 # [ cfg ( feature = "full" ) ]
@@ -720,7 +724,7 @@
 }
 # [ cfg ( feature = "full" ) ]
 pub fn visit_expr_break_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut ExprBreak) {
-    // Skipped field _i . label;
+    if let Some(ref mut it) = _i . label { _visitor.visit_lifetime_mut(it) };
     if let Some(ref mut it) = _i . expr { _visitor.visit_expr_mut(it) };
     // Skipped field _i . break_token;
 }
@@ -753,7 +757,7 @@
 }
 # [ cfg ( feature = "full" ) ]
 pub fn visit_expr_continue_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut ExprContinue) {
-    // Skipped field _i . label;
+    if let Some(ref mut it) = _i . label { _visitor.visit_lifetime_mut(it) };
     // Skipped field _i . continue_token;
 }
 # [ cfg ( feature = "full" ) ]
@@ -767,7 +771,7 @@
     _visitor.visit_pat_mut(& mut _i . pat);
     _visitor.visit_expr_mut(& mut _i . expr);
     _visitor.visit_block_mut(& mut _i . body);
-    // Skipped field _i . label;
+    if let Some(ref mut it) = _i . label { _visitor.visit_lifetime_mut(it) };
     // Skipped field _i . for_token;
     // Skipped field _i . colon_token;
     // Skipped field _i . in_token;
@@ -837,7 +841,7 @@
             _visitor.visit_expr_unary_mut(_binding_0);
         }
         Lit(ref mut _binding_0, ) => {
-            // Skipped field _binding_0;
+            _visitor.visit_lit_mut(_binding_0);
         }
         Cast(ref mut _binding_0, ) => {
             _visitor.visit_expr_cast_mut(_binding_0);
@@ -934,7 +938,7 @@
 # [ cfg ( feature = "full" ) ]
 pub fn visit_expr_loop_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut ExprLoop) {
     _visitor.visit_block_mut(& mut _i . body);
-    // Skipped field _i . label;
+    if let Some(ref mut it) = _i . label { _visitor.visit_lifetime_mut(it) };
     // Skipped field _i . loop_token;
     // Skipped field _i . colon_token;
 }
@@ -1023,7 +1027,7 @@
 pub fn visit_expr_while_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut ExprWhile) {
     _visitor.visit_expr_mut(& mut _i . cond);
     _visitor.visit_block_mut(& mut _i . body);
-    // Skipped field _i . label;
+    if let Some(ref mut it) = _i . label { _visitor.visit_lifetime_mut(it) };
     // Skipped field _i . colon_token;
     // Skipped field _i . while_token;
 }
@@ -1032,7 +1036,7 @@
     _visitor.visit_pat_mut(& mut _i . pat);
     _visitor.visit_expr_mut(& mut _i . expr);
     _visitor.visit_block_mut(& mut _i . body);
-    // Skipped field _i . label;
+    if let Some(ref mut it) = _i . label { _visitor.visit_lifetime_mut(it) };
     // Skipped field _i . colon_token;
     // Skipped field _i . while_token;
     // Skipped field _i . let_token;
@@ -1150,7 +1154,7 @@
     use ::GenericArgument::*;
     match *_i {
         Lifetime(ref mut _binding_0, ) => {
-            // Skipped field _binding_0;
+            _visitor.visit_lifetime_mut(_binding_0);
         }
         Type(ref mut _binding_0, ) => {
             _visitor.visit_type_mut(_binding_0);
@@ -1187,6 +1191,8 @@
 }
 
 pub fn visit_ident_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut Ident) {
+    // Skipped field _i . sym;
+    _visitor.visit_span_mut(& mut _i . span);
 }
 # [ cfg ( feature = "full" ) ]
 pub fn visit_impl_item_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut ImplItem) {
@@ -1491,11 +1497,21 @@
     // Skipped field _i . semi_token;
 }
 
+pub fn visit_lifetime_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut Lifetime) {
+    // Skipped field _i . sym;
+    _visitor.visit_span_mut(& mut _i . span);
+}
+
 pub fn visit_lifetime_def_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut LifetimeDef) {
     for it in & mut _i . attrs { _visitor.visit_attribute_mut(it) };
-    // Skipped field _i . lifetime;
+    _visitor.visit_lifetime_mut(& mut _i . lifetime);
     // Skipped field _i . colon_token;
-    // Skipped field _i . bounds;
+    for mut el in & mut _i . bounds { let it = el.item_mut(); _visitor.visit_lifetime_mut(it) };
+}
+
+pub fn visit_lit_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut Lit) {
+    // Skipped field _i . value;
+    _visitor.visit_span_mut(& mut _i . span);
 }
 # [ cfg ( feature = "full" ) ]
 pub fn visit_local_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut Local) {
@@ -1562,7 +1578,7 @@
 pub fn visit_meta_name_value_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut MetaNameValue) {
     _visitor.visit_ident_mut(& mut _i . ident);
     // Skipped field _i . eq_token;
-    // Skipped field _i . lit;
+    _visitor.visit_lit_mut(& mut _i . lit);
 }
 # [ cfg ( feature = "full" ) ]
 pub fn visit_method_sig_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut MethodSig) {
@@ -1595,7 +1611,7 @@
             _visitor.visit_meta_item_mut(_binding_0);
         }
         Literal(ref mut _binding_0, ) => {
-            // Skipped field _binding_0;
+            _visitor.visit_lit_mut(_binding_0);
         }
     }
 }
@@ -1960,7 +1976,7 @@
             _visitor.visit_trait_bound_modifier_mut(_binding_1);
         }
         Region(ref mut _binding_0, ) => {
-            // Skipped field _binding_0;
+            _visitor.visit_lifetime_mut(_binding_0);
         }
     }
 }
@@ -1983,7 +1999,7 @@
 
 pub fn visit_type_reference_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut TypeReference) {
     // Skipped field _i . and_token;
-    // Skipped field _i . lifetime;
+    if let Some(ref mut it) = _i . lifetime { _visitor.visit_lifetime_mut(it) };
     _visitor.visit_mut_type_mut(& mut _i . ty);
 }
 
@@ -2151,8 +2167,8 @@
 }
 
 pub fn visit_where_region_predicate_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut WhereRegionPredicate) {
-    // Skipped field _i . lifetime;
+    _visitor.visit_lifetime_mut(& mut _i . lifetime);
     // Skipped field _i . colon_token;
-    // Skipped field _i . bounds;
+    for mut el in & mut _i . bounds { let it = el.item_mut(); _visitor.visit_lifetime_mut(it) };
 }