Visit all tokens in generated code
diff --git a/src/gen/fold.rs b/src/gen/fold.rs
index 2d6a92d..d9a1b92 100644
--- a/src/gen/fold.rs
+++ b/src/gen/fold.rs
@@ -400,7 +400,7 @@
 
 pub fn fold_abi<V: Folder + ?Sized>(_visitor: &mut V, _i: Abi) -> Abi {
     Abi {
-        extern_token: _i . extern_token,
+        extern_token: Token ! [ extern ](tokens_helper(_visitor, &(_i . extern_token).0)),
         kind: _visitor.fold_abi_kind(_i . kind),
     }
 }
@@ -419,17 +419,17 @@
 
 pub fn fold_angle_bracketed_generic_arguments<V: Folder + ?Sized>(_visitor: &mut V, _i: AngleBracketedGenericArguments) -> AngleBracketedGenericArguments {
     AngleBracketedGenericArguments {
-        turbofish: _i . turbofish,
-        lt_token: _i . lt_token,
+        turbofish: (_i . turbofish).map(|it| { Token ! [ :: ](tokens_helper(_visitor, &(it).0)) }),
+        lt_token: Token ! [ < ](tokens_helper(_visitor, &(_i . lt_token).0)),
         args: FoldHelper::lift(_i . args, |it| { _visitor.fold_generic_argument(it) }),
-        gt_token: _i . gt_token,
+        gt_token: Token ! [ > ](tokens_helper(_visitor, &(_i . gt_token).0)),
     }
 }
 # [ cfg ( feature = "full" ) ]
 pub fn fold_arg_captured<V: Folder + ?Sized>(_visitor: &mut V, _i: ArgCaptured) -> ArgCaptured {
     ArgCaptured {
         pat: _visitor.fold_pat(_i . pat),
-        colon_token: _i . colon_token,
+        colon_token: Token ! [ : ](tokens_helper(_visitor, &(_i . colon_token).0)),
         ty: _visitor.fold_type(_i . ty),
     }
 }
@@ -437,14 +437,14 @@
 pub fn fold_arg_self<V: Folder + ?Sized>(_visitor: &mut V, _i: ArgSelf) -> ArgSelf {
     ArgSelf {
         mutbl: _visitor.fold_mutability(_i . mutbl),
-        self_token: _i . self_token,
+        self_token: Token ! [ self ](tokens_helper(_visitor, &(_i . self_token).0)),
     }
 }
 # [ cfg ( feature = "full" ) ]
 pub fn fold_arg_self_ref<V: Folder + ?Sized>(_visitor: &mut V, _i: ArgSelfRef) -> ArgSelfRef {
     ArgSelfRef {
-        and_token: _i . and_token,
-        self_token: _i . self_token,
+        and_token: Token ! [ & ](tokens_helper(_visitor, &(_i . and_token).0)),
+        self_token: Token ! [ self ](tokens_helper(_visitor, &(_i . self_token).0)),
         lifetime: (_i . lifetime).map(|it| { _visitor.fold_lifetime(it) }),
         mutbl: _visitor.fold_mutability(_i . mutbl),
     }
@@ -454,11 +454,11 @@
     Arm {
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
         pats: FoldHelper::lift(_i . pats, |it| { _visitor.fold_pat(it) }),
-        if_token: _i . if_token,
+        if_token: (_i . if_token).map(|it| { Token ! [ if ](tokens_helper(_visitor, &(it).0)) }),
         guard: (_i . guard).map(|it| { Box::new(_visitor.fold_expr(* it)) }),
-        rocket_token: _i . rocket_token,
+        rocket_token: Token ! [ => ](tokens_helper(_visitor, &(_i . rocket_token).0)),
         body: Box::new(_visitor.fold_expr(* _i . body)),
-        comma: _i . comma,
+        comma: (_i . comma).map(|it| { Token ! [ , ](tokens_helper(_visitor, &(it).0)) }),
     }
 }
 
@@ -468,7 +468,7 @@
         Outer => { Outer }
         Inner(_binding_0, ) => {
             Inner (
-                _binding_0,
+                Token ! [ ! ](tokens_helper(_visitor, &(_binding_0).0)),
             )
         }
     }
@@ -477,7 +477,7 @@
 pub fn fold_attribute<V: Folder + ?Sized>(_visitor: &mut V, _i: Attribute) -> Attribute {
     Attribute {
         style: _visitor.fold_attr_style(_i . style),
-        pound_token: _i . pound_token,
+        pound_token: Token ! [ # ](tokens_helper(_visitor, &(_i . pound_token).0)),
         bracket_token: _i . bracket_token,
         path: _visitor.fold_path(_i . path),
         tts: _i . tts,
@@ -489,7 +489,7 @@
     BareFnArg {
         name: (_i . name).map(|it| { (
             _visitor.fold_bare_fn_arg_name(( it ) . 0),
-            ( it ) . 1,
+            Token ! [ : ](tokens_helper(_visitor, &(( it ) . 1).0)),
         ) }),
         ty: _visitor.fold_type(_i . ty),
     }
@@ -505,7 +505,7 @@
         }
         Wild(_binding_0, ) => {
             Wild (
-                _binding_0,
+                Token ! [ _ ](tokens_helper(_visitor, &(_binding_0).0)),
             )
         }
     }
@@ -516,10 +516,10 @@
         lifetimes: (_i . lifetimes).map(|it| { _visitor.fold_bound_lifetimes(it) }),
         unsafety: _visitor.fold_unsafety(_i . unsafety),
         abi: (_i . abi).map(|it| { _visitor.fold_abi(it) }),
-        fn_token: _i . fn_token,
+        fn_token: Token ! [ fn ](tokens_helper(_visitor, &(_i . fn_token).0)),
         paren_token: _i . paren_token,
         inputs: FoldHelper::lift(_i . inputs, |it| { _visitor.fold_bare_fn_arg(it) }),
-        variadic: _i . variadic,
+        variadic: (_i . variadic).map(|it| { Token ! [ ... ](tokens_helper(_visitor, &(it).0)) }),
         output: _visitor.fold_return_type(_i . output),
     }
 }
@@ -529,142 +529,142 @@
     match _i {
         Add(_binding_0, ) => {
             Add (
-                _binding_0,
+                Token ! [ + ](tokens_helper(_visitor, &(_binding_0).0)),
             )
         }
         Sub(_binding_0, ) => {
             Sub (
-                _binding_0,
+                Token ! [ - ](tokens_helper(_visitor, &(_binding_0).0)),
             )
         }
         Mul(_binding_0, ) => {
             Mul (
-                _binding_0,
+                Token ! [ * ](tokens_helper(_visitor, &(_binding_0).0)),
             )
         }
         Div(_binding_0, ) => {
             Div (
-                _binding_0,
+                Token ! [ / ](tokens_helper(_visitor, &(_binding_0).0)),
             )
         }
         Rem(_binding_0, ) => {
             Rem (
-                _binding_0,
+                Token ! [ % ](tokens_helper(_visitor, &(_binding_0).0)),
             )
         }
         And(_binding_0, ) => {
             And (
-                _binding_0,
+                Token ! [ && ](tokens_helper(_visitor, &(_binding_0).0)),
             )
         }
         Or(_binding_0, ) => {
             Or (
-                _binding_0,
+                Token ! [ || ](tokens_helper(_visitor, &(_binding_0).0)),
             )
         }
         BitXor(_binding_0, ) => {
             BitXor (
-                _binding_0,
+                Token ! [ ^ ](tokens_helper(_visitor, &(_binding_0).0)),
             )
         }
         BitAnd(_binding_0, ) => {
             BitAnd (
-                _binding_0,
+                Token ! [ & ](tokens_helper(_visitor, &(_binding_0).0)),
             )
         }
         BitOr(_binding_0, ) => {
             BitOr (
-                _binding_0,
+                Token ! [ | ](tokens_helper(_visitor, &(_binding_0).0)),
             )
         }
         Shl(_binding_0, ) => {
             Shl (
-                _binding_0,
+                Token ! [ << ](tokens_helper(_visitor, &(_binding_0).0)),
             )
         }
         Shr(_binding_0, ) => {
             Shr (
-                _binding_0,
+                Token ! [ >> ](tokens_helper(_visitor, &(_binding_0).0)),
             )
         }
         Eq(_binding_0, ) => {
             Eq (
-                _binding_0,
+                Token ! [ == ](tokens_helper(_visitor, &(_binding_0).0)),
             )
         }
         Lt(_binding_0, ) => {
             Lt (
-                _binding_0,
+                Token ! [ < ](tokens_helper(_visitor, &(_binding_0).0)),
             )
         }
         Le(_binding_0, ) => {
             Le (
-                _binding_0,
+                Token ! [ <= ](tokens_helper(_visitor, &(_binding_0).0)),
             )
         }
         Ne(_binding_0, ) => {
             Ne (
-                _binding_0,
+                Token ! [ != ](tokens_helper(_visitor, &(_binding_0).0)),
             )
         }
         Ge(_binding_0, ) => {
             Ge (
-                _binding_0,
+                Token ! [ >= ](tokens_helper(_visitor, &(_binding_0).0)),
             )
         }
         Gt(_binding_0, ) => {
             Gt (
-                _binding_0,
+                Token ! [ > ](tokens_helper(_visitor, &(_binding_0).0)),
             )
         }
         AddEq(_binding_0, ) => {
             AddEq (
-                _binding_0,
+                Token ! [ += ](tokens_helper(_visitor, &(_binding_0).0)),
             )
         }
         SubEq(_binding_0, ) => {
             SubEq (
-                _binding_0,
+                Token ! [ -= ](tokens_helper(_visitor, &(_binding_0).0)),
             )
         }
         MulEq(_binding_0, ) => {
             MulEq (
-                _binding_0,
+                Token ! [ *= ](tokens_helper(_visitor, &(_binding_0).0)),
             )
         }
         DivEq(_binding_0, ) => {
             DivEq (
-                _binding_0,
+                Token ! [ /= ](tokens_helper(_visitor, &(_binding_0).0)),
             )
         }
         RemEq(_binding_0, ) => {
             RemEq (
-                _binding_0,
+                Token ! [ %= ](tokens_helper(_visitor, &(_binding_0).0)),
             )
         }
         BitXorEq(_binding_0, ) => {
             BitXorEq (
-                _binding_0,
+                Token ! [ ^= ](tokens_helper(_visitor, &(_binding_0).0)),
             )
         }
         BitAndEq(_binding_0, ) => {
             BitAndEq (
-                _binding_0,
+                Token ! [ &= ](tokens_helper(_visitor, &(_binding_0).0)),
             )
         }
         BitOrEq(_binding_0, ) => {
             BitOrEq (
-                _binding_0,
+                Token ! [ |= ](tokens_helper(_visitor, &(_binding_0).0)),
             )
         }
         ShlEq(_binding_0, ) => {
             ShlEq (
-                _binding_0,
+                Token ! [ <<= ](tokens_helper(_visitor, &(_binding_0).0)),
             )
         }
         ShrEq(_binding_0, ) => {
             ShrEq (
-                _binding_0,
+                Token ! [ >>= ](tokens_helper(_visitor, &(_binding_0).0)),
             )
         }
     }
@@ -675,7 +675,7 @@
     match _i {
         ByRef(_binding_0, _binding_1, ) => {
             ByRef (
-                _binding_0,
+                Token ! [ ref ](tokens_helper(_visitor, &(_binding_0).0)),
                 _visitor.fold_mutability(_binding_1),
             )
         }
@@ -712,7 +712,7 @@
 
 pub fn fold_body_enum<V: Folder + ?Sized>(_visitor: &mut V, _i: BodyEnum) -> BodyEnum {
     BodyEnum {
-        enum_token: _i . enum_token,
+        enum_token: Token ! [ enum ](tokens_helper(_visitor, &(_i . enum_token).0)),
         brace_token: _i . brace_token,
         variants: FoldHelper::lift(_i . variants, |it| { _visitor.fold_variant(it) }),
     }
@@ -721,17 +721,17 @@
 pub fn fold_body_struct<V: Folder + ?Sized>(_visitor: &mut V, _i: BodyStruct) -> BodyStruct {
     BodyStruct {
         data: _visitor.fold_variant_data(_i . data),
-        struct_token: _i . struct_token,
-        semi_token: _i . semi_token,
+        struct_token: Token ! [ struct ](tokens_helper(_visitor, &(_i . struct_token).0)),
+        semi_token: (_i . semi_token).map(|it| { Token ! [ ; ](tokens_helper(_visitor, &(it).0)) }),
     }
 }
 
 pub fn fold_bound_lifetimes<V: Folder + ?Sized>(_visitor: &mut V, _i: BoundLifetimes) -> BoundLifetimes {
     BoundLifetimes {
-        for_token: _i . for_token,
-        lt_token: _i . lt_token,
+        for_token: Token ! [ for ](tokens_helper(_visitor, &(_i . for_token).0)),
+        lt_token: Token ! [ < ](tokens_helper(_visitor, &(_i . lt_token).0)),
         lifetimes: FoldHelper::lift(_i . lifetimes, |it| { _visitor.fold_lifetime_def(it) }),
-        gt_token: _i . gt_token,
+        gt_token: Token ! [ > ](tokens_helper(_visitor, &(_i . gt_token).0)),
     }
 }
 # [ cfg ( feature = "full" ) ]
@@ -740,7 +740,7 @@
     match _i {
         Value(_binding_0, ) => {
             Value (
-                _binding_0,
+                Token ! [ move ](tokens_helper(_visitor, &(_binding_0).0)),
             )
         }
         Ref => { Ref }
@@ -750,11 +750,11 @@
 pub fn fold_const_param<V: Folder + ?Sized>(_visitor: &mut V, _i: ConstParam) -> ConstParam {
     ConstParam {
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
-        const_token: _i . const_token,
+        const_token: Token ! [ const ](tokens_helper(_visitor, &(_i . const_token).0)),
         ident: _visitor.fold_ident(_i . ident),
-        colon_token: _i . colon_token,
+        colon_token: Token ! [ : ](tokens_helper(_visitor, &(_i . colon_token).0)),
         ty: _visitor.fold_type(_i . ty),
-        eq_token: _i . eq_token,
+        eq_token: (_i . eq_token).map(|it| { Token ! [ = ](tokens_helper(_visitor, &(it).0)) }),
         default: (_i . default).map(|it| { _visitor.fold_expr(it) }),
     }
 }
@@ -764,7 +764,7 @@
     match _i {
         Const(_binding_0, ) => {
             Const (
-                _binding_0,
+                Token ! [ const ](tokens_helper(_visitor, &(_binding_0).0)),
             )
         }
         NotConst => { NotConst }
@@ -776,7 +776,7 @@
     match _i {
         Default(_binding_0, ) => {
             Default (
-                _binding_0,
+                Token ! [ default ](tokens_helper(_visitor, &(_binding_0).0)),
             )
         }
         Final => { Final }
@@ -802,7 +802,7 @@
 # [ cfg ( feature = "full" ) ]
 pub fn fold_expr_addr_of<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprAddrOf) -> ExprAddrOf {
     ExprAddrOf {
-        and_token: _i . and_token,
+        and_token: Token ! [ & ](tokens_helper(_visitor, &(_i . and_token).0)),
         mutbl: _visitor.fold_mutability(_i . mutbl),
         expr: Box::new(_visitor.fold_expr(* _i . expr)),
     }
@@ -819,7 +819,7 @@
     ExprAssign {
         left: Box::new(_visitor.fold_expr(* _i . left)),
         right: Box::new(_visitor.fold_expr(* _i . right)),
-        eq_token: _i . eq_token,
+        eq_token: Token ! [ = ](tokens_helper(_visitor, &(_i . eq_token).0)),
     }
 }
 # [ cfg ( feature = "full" ) ]
@@ -848,7 +848,7 @@
 pub fn fold_expr_box<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprBox) -> ExprBox {
     ExprBox {
         expr: Box::new(_visitor.fold_expr(* _i . expr)),
-        box_token: _i . box_token,
+        box_token: Token ! [ box ](tokens_helper(_visitor, &(_i . box_token).0)),
     }
 }
 # [ cfg ( feature = "full" ) ]
@@ -856,7 +856,7 @@
     ExprBreak {
         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,
+        break_token: Token ! [ break ](tokens_helper(_visitor, &(_i . break_token).0)),
     }
 }
 
@@ -871,15 +871,15 @@
 pub fn fold_expr_cast<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprCast) -> ExprCast {
     ExprCast {
         expr: Box::new(_visitor.fold_expr(* _i . expr)),
-        as_token: _i . as_token,
+        as_token: Token ! [ as ](tokens_helper(_visitor, &(_i . as_token).0)),
         ty: Box::new(_visitor.fold_type(* _i . ty)),
     }
 }
 # [ cfg ( feature = "full" ) ]
 pub fn fold_expr_catch<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprCatch) -> ExprCatch {
     ExprCatch {
-        do_token: _i . do_token,
-        catch_token: _i . catch_token,
+        do_token: Token ! [ do ](tokens_helper(_visitor, &(_i . do_token).0)),
+        catch_token: Token ! [ catch ](tokens_helper(_visitor, &(_i . catch_token).0)),
         block: _visitor.fold_block(_i . block),
     }
 }
@@ -887,9 +887,9 @@
 pub fn fold_expr_closure<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprClosure) -> ExprClosure {
     ExprClosure {
         capture: _visitor.fold_capture_by(_i . capture),
-        or1_token: _i . or1_token,
+        or1_token: Token ! [ | ](tokens_helper(_visitor, &(_i . or1_token).0)),
         inputs: FoldHelper::lift(_i . inputs, |it| { _visitor.fold_fn_arg(it) }),
-        or2_token: _i . or2_token,
+        or2_token: Token ! [ | ](tokens_helper(_visitor, &(_i . or2_token).0)),
         output: _visitor.fold_return_type(_i . output),
         body: Box::new(_visitor.fold_expr(* _i . body)),
     }
@@ -898,14 +898,14 @@
 pub fn fold_expr_continue<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprContinue) -> ExprContinue {
     ExprContinue {
         label: (_i . label).map(|it| { _visitor.fold_lifetime(it) }),
-        continue_token: _i . continue_token,
+        continue_token: Token ! [ continue ](tokens_helper(_visitor, &(_i . continue_token).0)),
     }
 }
 # [ cfg ( feature = "full" ) ]
 pub fn fold_expr_field<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprField) -> ExprField {
     ExprField {
         base: Box::new(_visitor.fold_expr(* _i . base)),
-        dot_token: _i . dot_token,
+        dot_token: Token ! [ . ](tokens_helper(_visitor, &(_i . dot_token).0)),
         member: _visitor.fold_member(_i . member),
     }
 }
@@ -916,9 +916,9 @@
         expr: Box::new(_visitor.fold_expr(* _i . expr)),
         body: _visitor.fold_block(_i . body),
         label: (_i . label).map(|it| { _visitor.fold_lifetime(it) }),
-        for_token: _i . for_token,
-        colon_token: _i . colon_token,
-        in_token: _i . in_token,
+        for_token: Token ! [ for ](tokens_helper(_visitor, &(_i . for_token).0)),
+        colon_token: (_i . colon_token).map(|it| { Token ! [ : ](tokens_helper(_visitor, &(it).0)) }),
+        in_token: Token ! [ in ](tokens_helper(_visitor, &(_i . in_token).0)),
     }
 }
 
@@ -934,8 +934,8 @@
         cond: Box::new(_visitor.fold_expr(* _i . cond)),
         if_true: _visitor.fold_block(_i . if_true),
         if_false: (_i . if_false).map(|it| { Box::new(_visitor.fold_expr(* it)) }),
-        if_token: _i . if_token,
-        else_token: _i . else_token,
+        if_token: Token ! [ if ](tokens_helper(_visitor, &(_i . if_token).0)),
+        else_token: (_i . else_token).map(|it| { Token ! [ else ](tokens_helper(_visitor, &(it).0)) }),
     }
 }
 # [ cfg ( feature = "full" ) ]
@@ -945,10 +945,10 @@
         expr: Box::new(_visitor.fold_expr(* _i . expr)),
         if_true: _visitor.fold_block(_i . if_true),
         if_false: (_i . if_false).map(|it| { Box::new(_visitor.fold_expr(* it)) }),
-        if_token: _i . if_token,
-        let_token: _i . let_token,
-        eq_token: _i . eq_token,
-        else_token: _i . else_token,
+        if_token: Token ! [ if ](tokens_helper(_visitor, &(_i . if_token).0)),
+        let_token: Token ! [ let ](tokens_helper(_visitor, &(_i . let_token).0)),
+        eq_token: Token ! [ = ](tokens_helper(_visitor, &(_i . eq_token).0)),
+        else_token: (_i . else_token).map(|it| { Token ! [ else ](tokens_helper(_visitor, &(it).0)) }),
     }
 }
 # [ cfg ( feature = "full" ) ]
@@ -1173,14 +1173,14 @@
     ExprLoop {
         body: _visitor.fold_block(_i . body),
         label: (_i . label).map(|it| { _visitor.fold_lifetime(it) }),
-        loop_token: _i . loop_token,
-        colon_token: _i . colon_token,
+        loop_token: Token ! [ loop ](tokens_helper(_visitor, &(_i . loop_token).0)),
+        colon_token: (_i . colon_token).map(|it| { Token ! [ : ](tokens_helper(_visitor, &(it).0)) }),
     }
 }
 # [ cfg ( feature = "full" ) ]
 pub fn fold_expr_match<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprMatch) -> ExprMatch {
     ExprMatch {
-        match_token: _i . match_token,
+        match_token: Token ! [ match ](tokens_helper(_visitor, &(_i . match_token).0)),
         brace_token: _i . brace_token,
         expr: Box::new(_visitor.fold_expr(* _i . expr)),
         arms: FoldHelper::lift(_i . arms, |it| { _visitor.fold_arm(it) }),
@@ -1194,10 +1194,10 @@
         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,
-        dot_token: _i . dot_token,
-        lt_token: _i . lt_token,
-        colon2_token: _i . colon2_token,
-        gt_token: _i . gt_token,
+        dot_token: Token ! [ . ](tokens_helper(_visitor, &(_i . dot_token).0)),
+        lt_token: (_i . lt_token).map(|it| { Token ! [ < ](tokens_helper(_visitor, &(it).0)) }),
+        colon2_token: (_i . colon2_token).map(|it| { Token ! [ :: ](tokens_helper(_visitor, &(it).0)) }),
+        gt_token: (_i . gt_token).map(|it| { Token ! [ > ](tokens_helper(_visitor, &(it).0)) }),
     }
 }
 
@@ -1226,7 +1226,7 @@
 pub fn fold_expr_repeat<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprRepeat) -> ExprRepeat {
     ExprRepeat {
         bracket_token: _i . bracket_token,
-        semi_token: _i . semi_token,
+        semi_token: Token ! [ ; ](tokens_helper(_visitor, &(_i . semi_token).0)),
         expr: Box::new(_visitor.fold_expr(* _i . expr)),
         amt: Box::new(_visitor.fold_expr(* _i . amt)),
     }
@@ -1235,7 +1235,7 @@
 pub fn fold_expr_ret<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprRet) -> ExprRet {
     ExprRet {
         expr: (_i . expr).map(|it| { Box::new(_visitor.fold_expr(* it)) }),
-        return_token: _i . return_token,
+        return_token: Token ! [ return ](tokens_helper(_visitor, &(_i . return_token).0)),
     }
 }
 # [ cfg ( feature = "full" ) ]
@@ -1244,7 +1244,7 @@
         path: _visitor.fold_path(_i . path),
         fields: FoldHelper::lift(_i . fields, |it| { _visitor.fold_field_value(it) }),
         rest: (_i . rest).map(|it| { Box::new(_visitor.fold_expr(* it)) }),
-        dot2_token: _i . dot2_token,
+        dot2_token: (_i . dot2_token).map(|it| { Token ! [ .. ](tokens_helper(_visitor, &(it).0)) }),
         brace_token: _i . brace_token,
     }
 }
@@ -1252,7 +1252,7 @@
 pub fn fold_expr_try<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprTry) -> ExprTry {
     ExprTry {
         expr: Box::new(_visitor.fold_expr(* _i . expr)),
-        question_token: _i . question_token,
+        question_token: Token ! [ ? ](tokens_helper(_visitor, &(_i . question_token).0)),
     }
 }
 # [ cfg ( feature = "full" ) ]
@@ -1266,7 +1266,7 @@
 pub fn fold_expr_type<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprType) -> ExprType {
     ExprType {
         expr: Box::new(_visitor.fold_expr(* _i . expr)),
-        colon_token: _i . colon_token,
+        colon_token: Token ! [ : ](tokens_helper(_visitor, &(_i . colon_token).0)),
         ty: Box::new(_visitor.fold_type(* _i . ty)),
     }
 }
@@ -1280,7 +1280,7 @@
 # [ cfg ( feature = "full" ) ]
 pub fn fold_expr_unsafe<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprUnsafe) -> ExprUnsafe {
     ExprUnsafe {
-        unsafe_token: _i . unsafe_token,
+        unsafe_token: Token ! [ unsafe ](tokens_helper(_visitor, &(_i . unsafe_token).0)),
         block: _visitor.fold_block(_i . block),
     }
 }
@@ -1290,8 +1290,8 @@
         cond: Box::new(_visitor.fold_expr(* _i . cond)),
         body: _visitor.fold_block(_i . body),
         label: (_i . label).map(|it| { _visitor.fold_lifetime(it) }),
-        colon_token: _i . colon_token,
-        while_token: _i . while_token,
+        colon_token: (_i . colon_token).map(|it| { Token ! [ : ](tokens_helper(_visitor, &(it).0)) }),
+        while_token: Token ! [ while ](tokens_helper(_visitor, &(_i . while_token).0)),
     }
 }
 # [ cfg ( feature = "full" ) ]
@@ -1301,16 +1301,16 @@
         expr: Box::new(_visitor.fold_expr(* _i . expr)),
         body: _visitor.fold_block(_i . body),
         label: (_i . label).map(|it| { _visitor.fold_lifetime(it) }),
-        colon_token: _i . colon_token,
-        while_token: _i . while_token,
-        let_token: _i . let_token,
-        eq_token: _i . eq_token,
+        colon_token: (_i . colon_token).map(|it| { Token ! [ : ](tokens_helper(_visitor, &(it).0)) }),
+        while_token: Token ! [ while ](tokens_helper(_visitor, &(_i . while_token).0)),
+        let_token: Token ! [ let ](tokens_helper(_visitor, &(_i . let_token).0)),
+        eq_token: Token ! [ = ](tokens_helper(_visitor, &(_i . eq_token).0)),
     }
 }
 # [ cfg ( feature = "full" ) ]
 pub fn fold_expr_yield<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprYield) -> ExprYield {
     ExprYield {
-        yield_token: _i . yield_token,
+        yield_token: Token ! [ yield ](tokens_helper(_visitor, &(_i . yield_token).0)),
         expr: (_i . expr).map(|it| { Box::new(_visitor.fold_expr(* it)) }),
     }
 }
@@ -1321,7 +1321,7 @@
         vis: _visitor.fold_visibility(_i . vis),
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
         ty: _visitor.fold_type(_i . ty),
-        colon_token: _i . colon_token,
+        colon_token: (_i . colon_token).map(|it| { Token ! [ : ](tokens_helper(_visitor, &(it).0)) }),
     }
 }
 # [ cfg ( feature = "full" ) ]
@@ -1330,7 +1330,7 @@
         member: _visitor.fold_member(_i . member),
         pat: Box::new(_visitor.fold_pat(* _i . pat)),
         is_shorthand: _i . is_shorthand,
-        colon_token: _i . colon_token,
+        colon_token: (_i . colon_token).map(|it| { Token ! [ : ](tokens_helper(_visitor, &(it).0)) }),
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
     }
 }
@@ -1339,7 +1339,7 @@
     FieldValue {
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
         member: _visitor.fold_member(_i . member),
-        colon_token: _i . colon_token,
+        colon_token: (_i . colon_token).map(|it| { Token ! [ : ](tokens_helper(_visitor, &(it).0)) }),
         expr: _visitor.fold_expr(_i . expr),
         is_shorthand: _i . is_shorthand,
     }
@@ -1386,12 +1386,12 @@
 # [ cfg ( feature = "full" ) ]
 pub fn fold_fn_decl<V: Folder + ?Sized>(_visitor: &mut V, _i: FnDecl) -> FnDecl {
     FnDecl {
-        fn_token: _i . fn_token,
+        fn_token: Token ! [ fn ](tokens_helper(_visitor, &(_i . fn_token).0)),
         paren_token: _i . paren_token,
         inputs: FoldHelper::lift(_i . inputs, |it| { _visitor.fold_fn_arg(it) }),
         output: _visitor.fold_return_type(_i . output),
         generics: _visitor.fold_generics(_i . generics),
-        variadic: _i . variadic,
+        variadic: (_i . variadic).map(|it| { Token ! [ ... ](tokens_helper(_visitor, &(it).0)) }),
     }
 }
 # [ cfg ( feature = "full" ) ]
@@ -1422,7 +1422,7 @@
         vis: _visitor.fold_visibility(_i . vis),
         ident: _visitor.fold_ident(_i . ident),
         decl: Box::new(_visitor.fold_fn_decl(* _i . decl)),
-        semi_token: _i . semi_token,
+        semi_token: Token ! [ ; ](tokens_helper(_visitor, &(_i . semi_token).0)),
     }
 }
 # [ cfg ( feature = "full" ) ]
@@ -1430,12 +1430,12 @@
     ForeignItemStatic {
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
         vis: _visitor.fold_visibility(_i . vis),
-        static_token: _i . static_token,
+        static_token: Token ! [ static ](tokens_helper(_visitor, &(_i . static_token).0)),
         mutbl: _visitor.fold_mutability(_i . mutbl),
         ident: _visitor.fold_ident(_i . ident),
-        colon_token: _i . colon_token,
+        colon_token: Token ! [ : ](tokens_helper(_visitor, &(_i . colon_token).0)),
         ty: Box::new(_visitor.fold_type(* _i . ty)),
-        semi_token: _i . semi_token,
+        semi_token: Token ! [ ; ](tokens_helper(_visitor, &(_i . semi_token).0)),
     }
 }
 # [ cfg ( feature = "full" ) ]
@@ -1443,9 +1443,9 @@
     ForeignItemType {
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
         vis: _visitor.fold_visibility(_i . vis),
-        type_token: _i . type_token,
+        type_token: Token ! [ type ](tokens_helper(_visitor, &(_i . type_token).0)),
         ident: _visitor.fold_ident(_i . ident),
-        semi_token: _i . semi_token,
+        semi_token: Token ! [ ; ](tokens_helper(_visitor, &(_i . semi_token).0)),
     }
 }
 
@@ -1498,9 +1498,9 @@
 
 pub fn fold_generics<V: Folder + ?Sized>(_visitor: &mut V, _i: Generics) -> Generics {
     Generics {
-        lt_token: _i . lt_token,
+        lt_token: (_i . lt_token).map(|it| { Token ! [ < ](tokens_helper(_visitor, &(it).0)) }),
         params: FoldHelper::lift(_i . params, |it| { _visitor.fold_generic_param(it) }),
-        gt_token: _i . gt_token,
+        gt_token: (_i . gt_token).map(|it| { Token ! [ > ](tokens_helper(_visitor, &(it).0)) }),
         where_clause: (_i . where_clause).map(|it| { _visitor.fold_where_clause(it) }),
     }
 }
@@ -1543,13 +1543,13 @@
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
         vis: _visitor.fold_visibility(_i . vis),
         defaultness: _visitor.fold_defaultness(_i . defaultness),
-        const_token: _i . const_token,
+        const_token: Token ! [ const ](tokens_helper(_visitor, &(_i . const_token).0)),
         ident: _visitor.fold_ident(_i . ident),
-        colon_token: _i . colon_token,
+        colon_token: Token ! [ : ](tokens_helper(_visitor, &(_i . colon_token).0)),
         ty: _visitor.fold_type(_i . ty),
-        eq_token: _i . eq_token,
+        eq_token: Token ! [ = ](tokens_helper(_visitor, &(_i . eq_token).0)),
         expr: _visitor.fold_expr(_i . expr),
-        semi_token: _i . semi_token,
+        semi_token: Token ! [ ; ](tokens_helper(_visitor, &(_i . semi_token).0)),
     }
 }
 # [ cfg ( feature = "full" ) ]
@@ -1557,7 +1557,7 @@
     ImplItemMacro {
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
         mac: _visitor.fold_macro(_i . mac),
-        semi_token: _i . semi_token,
+        semi_token: (_i . semi_token).map(|it| { Token ! [ ; ](tokens_helper(_visitor, &(it).0)) }),
     }
 }
 # [ cfg ( feature = "full" ) ]
@@ -1576,12 +1576,12 @@
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
         vis: _visitor.fold_visibility(_i . vis),
         defaultness: _visitor.fold_defaultness(_i . defaultness),
-        type_token: _i . type_token,
+        type_token: Token ! [ type ](tokens_helper(_visitor, &(_i . type_token).0)),
         ident: _visitor.fold_ident(_i . ident),
         generics: _visitor.fold_generics(_i . generics),
-        eq_token: _i . eq_token,
+        eq_token: Token ! [ = ](tokens_helper(_visitor, &(_i . eq_token).0)),
         ty: _visitor.fold_type(_i . ty),
-        semi_token: _i . semi_token,
+        semi_token: Token ! [ ; ](tokens_helper(_visitor, &(_i . semi_token).0)),
     }
 }
 # [ cfg ( feature = "full" ) ]
@@ -1591,7 +1591,7 @@
         Positive => { Positive }
         Negative(_binding_0, ) => {
             Negative (
-                _binding_0,
+                Token ! [ ! ](tokens_helper(_visitor, &(_binding_0).0)),
             )
         }
     }
@@ -1602,12 +1602,12 @@
     match _i {
         Arrow(_binding_0, ) => {
             Arrow (
-                _binding_0,
+                Token ! [ <- ](tokens_helper(_visitor, &(_binding_0).0)),
             )
         }
         In(_binding_0, ) => {
             In (
-                _binding_0,
+                Token ! [ in ](tokens_helper(_visitor, &(_binding_0).0)),
             )
         }
     }
@@ -1710,13 +1710,13 @@
     ItemConst {
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
         vis: _visitor.fold_visibility(_i . vis),
-        const_token: _i . const_token,
+        const_token: Token ! [ const ](tokens_helper(_visitor, &(_i . const_token).0)),
         ident: _visitor.fold_ident(_i . ident),
-        colon_token: _i . colon_token,
+        colon_token: Token ! [ : ](tokens_helper(_visitor, &(_i . colon_token).0)),
         ty: Box::new(_visitor.fold_type(* _i . ty)),
-        eq_token: _i . eq_token,
+        eq_token: Token ! [ = ](tokens_helper(_visitor, &(_i . eq_token).0)),
         expr: Box::new(_visitor.fold_expr(* _i . expr)),
-        semi_token: _i . semi_token,
+        semi_token: Token ! [ ; ](tokens_helper(_visitor, &(_i . semi_token).0)),
     }
 }
 # [ cfg ( feature = "full" ) ]
@@ -1724,10 +1724,10 @@
     ItemDefaultImpl {
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
         unsafety: _visitor.fold_unsafety(_i . unsafety),
-        impl_token: _i . impl_token,
+        impl_token: Token ! [ impl ](tokens_helper(_visitor, &(_i . impl_token).0)),
         path: _visitor.fold_path(_i . path),
-        for_token: _i . for_token,
-        dot2_token: _i . dot2_token,
+        for_token: Token ! [ for ](tokens_helper(_visitor, &(_i . for_token).0)),
+        dot2_token: Token ! [ .. ](tokens_helper(_visitor, &(_i . dot2_token).0)),
         brace_token: _i . brace_token,
     }
 }
@@ -1736,7 +1736,7 @@
     ItemEnum {
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
         vis: _visitor.fold_visibility(_i . vis),
-        enum_token: _i . enum_token,
+        enum_token: Token ! [ enum ](tokens_helper(_visitor, &(_i . enum_token).0)),
         ident: _visitor.fold_ident(_i . ident),
         generics: _visitor.fold_generics(_i . generics),
         brace_token: _i . brace_token,
@@ -1748,14 +1748,14 @@
     ItemExternCrate {
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
         vis: _visitor.fold_visibility(_i . vis),
-        extern_token: _i . extern_token,
-        crate_token: _i . crate_token,
+        extern_token: Token ! [ extern ](tokens_helper(_visitor, &(_i . extern_token).0)),
+        crate_token: Token ! [ crate ](tokens_helper(_visitor, &(_i . crate_token).0)),
         ident: _visitor.fold_ident(_i . ident),
         rename: (_i . rename).map(|it| { (
-            ( it ) . 0,
+            Token ! [ as ](tokens_helper(_visitor, &(( it ) . 0).0)),
             _visitor.fold_ident(( it ) . 1),
         ) }),
-        semi_token: _i . semi_token,
+        semi_token: Token ! [ ; ](tokens_helper(_visitor, &(_i . semi_token).0)),
     }
 }
 # [ cfg ( feature = "full" ) ]
@@ -1786,12 +1786,12 @@
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
         defaultness: _visitor.fold_defaultness(_i . defaultness),
         unsafety: _visitor.fold_unsafety(_i . unsafety),
-        impl_token: _i . impl_token,
+        impl_token: Token ! [ impl ](tokens_helper(_visitor, &(_i . impl_token).0)),
         generics: _visitor.fold_generics(_i . generics),
         trait_: (_i . trait_).map(|it| { (
             _visitor.fold_impl_polarity(( it ) . 0),
             _visitor.fold_path(( it ) . 1),
-            ( it ) . 2,
+            Token ! [ for ](tokens_helper(_visitor, &(( it ) . 2).0)),
         ) }),
         self_ty: Box::new(_visitor.fold_type(* _i . self_ty)),
         brace_token: _i . brace_token,
@@ -1804,7 +1804,7 @@
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
         ident: (_i . ident).map(|it| { _visitor.fold_ident(it) }),
         mac: _visitor.fold_macro(_i . mac),
-        semi_token: _i . semi_token,
+        semi_token: (_i . semi_token).map(|it| { Token ! [ ; ](tokens_helper(_visitor, &(it).0)) }),
     }
 }
 # [ cfg ( feature = "full" ) ]
@@ -1812,7 +1812,7 @@
     ItemMacro2 {
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
         vis: _visitor.fold_visibility(_i . vis),
-        macro_token: _i . macro_token,
+        macro_token: Token ! [ macro ](tokens_helper(_visitor, &(_i . macro_token).0)),
         ident: _visitor.fold_ident(_i . ident),
         args: _i . args,
         body: _i . body,
@@ -1823,13 +1823,13 @@
     ItemMod {
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
         vis: _visitor.fold_visibility(_i . vis),
-        mod_token: _i . mod_token,
+        mod_token: Token ! [ mod ](tokens_helper(_visitor, &(_i . mod_token).0)),
         ident: _visitor.fold_ident(_i . ident),
         content: (_i . content).map(|it| { (
             ( it ) . 0,
             FoldHelper::lift(( it ) . 1, |it| { _visitor.fold_item(it) }),
         ) }),
-        semi: _i . semi,
+        semi: (_i . semi).map(|it| { Token ! [ ; ](tokens_helper(_visitor, &(it).0)) }),
     }
 }
 # [ cfg ( feature = "full" ) ]
@@ -1837,14 +1837,14 @@
     ItemStatic {
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
         vis: _visitor.fold_visibility(_i . vis),
-        static_token: _i . static_token,
+        static_token: Token ! [ static ](tokens_helper(_visitor, &(_i . static_token).0)),
         mutbl: _visitor.fold_mutability(_i . mutbl),
         ident: _visitor.fold_ident(_i . ident),
-        colon_token: _i . colon_token,
+        colon_token: Token ! [ : ](tokens_helper(_visitor, &(_i . colon_token).0)),
         ty: Box::new(_visitor.fold_type(* _i . ty)),
-        eq_token: _i . eq_token,
+        eq_token: Token ! [ = ](tokens_helper(_visitor, &(_i . eq_token).0)),
         expr: Box::new(_visitor.fold_expr(* _i . expr)),
-        semi_token: _i . semi_token,
+        semi_token: Token ! [ ; ](tokens_helper(_visitor, &(_i . semi_token).0)),
     }
 }
 # [ cfg ( feature = "full" ) ]
@@ -1852,11 +1852,11 @@
     ItemStruct {
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
         vis: _visitor.fold_visibility(_i . vis),
-        struct_token: _i . struct_token,
+        struct_token: Token ! [ struct ](tokens_helper(_visitor, &(_i . struct_token).0)),
         ident: _visitor.fold_ident(_i . ident),
         generics: _visitor.fold_generics(_i . generics),
         data: _visitor.fold_variant_data(_i . data),
-        semi_token: _i . semi_token,
+        semi_token: (_i . semi_token).map(|it| { Token ! [ ; ](tokens_helper(_visitor, &(it).0)) }),
     }
 }
 # [ cfg ( feature = "full" ) ]
@@ -1865,11 +1865,11 @@
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
         vis: _visitor.fold_visibility(_i . vis),
         unsafety: _visitor.fold_unsafety(_i . unsafety),
-        auto_token: _i . auto_token,
-        trait_token: _i . trait_token,
+        auto_token: (_i . auto_token).map(|it| { Token ! [ auto ](tokens_helper(_visitor, &(it).0)) }),
+        trait_token: Token ! [ trait ](tokens_helper(_visitor, &(_i . trait_token).0)),
         ident: _visitor.fold_ident(_i . ident),
         generics: _visitor.fold_generics(_i . generics),
-        colon_token: _i . colon_token,
+        colon_token: (_i . colon_token).map(|it| { Token ! [ : ](tokens_helper(_visitor, &(it).0)) }),
         supertraits: FoldHelper::lift(_i . supertraits, |it| { _visitor.fold_type_param_bound(it) }),
         brace_token: _i . brace_token,
         items: FoldHelper::lift(_i . items, |it| { _visitor.fold_trait_item(it) }),
@@ -1880,12 +1880,12 @@
     ItemType {
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
         vis: _visitor.fold_visibility(_i . vis),
-        type_token: _i . type_token,
+        type_token: Token ! [ type ](tokens_helper(_visitor, &(_i . type_token).0)),
         ident: _visitor.fold_ident(_i . ident),
         generics: _visitor.fold_generics(_i . generics),
-        eq_token: _i . eq_token,
+        eq_token: Token ! [ = ](tokens_helper(_visitor, &(_i . eq_token).0)),
         ty: Box::new(_visitor.fold_type(* _i . ty)),
-        semi_token: _i . semi_token,
+        semi_token: Token ! [ ; ](tokens_helper(_visitor, &(_i . semi_token).0)),
     }
 }
 # [ cfg ( feature = "full" ) ]
@@ -1893,7 +1893,7 @@
     ItemUnion {
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
         vis: _visitor.fold_visibility(_i . vis),
-        union_token: _i . union_token,
+        union_token: Token ! [ union ](tokens_helper(_visitor, &(_i . union_token).0)),
         ident: _visitor.fold_ident(_i . ident),
         generics: _visitor.fold_generics(_i . generics),
         data: _visitor.fold_variant_data(_i . data),
@@ -1904,11 +1904,11 @@
     ItemUse {
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
         vis: _visitor.fold_visibility(_i . vis),
-        use_token: _i . use_token,
-        leading_colon: _i . leading_colon,
+        use_token: Token ! [ use ](tokens_helper(_visitor, &(_i . use_token).0)),
+        leading_colon: (_i . leading_colon).map(|it| { Token ! [ :: ](tokens_helper(_visitor, &(it).0)) }),
         prefix: FoldHelper::lift(_i . prefix, |it| { _visitor.fold_ident(it) }),
         tree: _visitor.fold_use_tree(_i . tree),
-        semi_token: _i . semi_token,
+        semi_token: Token ! [ ; ](tokens_helper(_visitor, &(_i . semi_token).0)),
     }
 }
 
@@ -1923,7 +1923,7 @@
     LifetimeDef {
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
         lifetime: _visitor.fold_lifetime(_i . lifetime),
-        colon_token: _i . colon_token,
+        colon_token: (_i . colon_token).map(|it| { Token ! [ : ](tokens_helper(_visitor, &(it).0)) }),
         bounds: FoldHelper::lift(_i . bounds, |it| { _visitor.fold_lifetime(it) }),
     }
 }
@@ -1937,10 +1937,10 @@
 # [ cfg ( feature = "full" ) ]
 pub fn fold_local<V: Folder + ?Sized>(_visitor: &mut V, _i: Local) -> Local {
     Local {
-        let_token: _i . let_token,
-        colon_token: _i . colon_token,
-        eq_token: _i . eq_token,
-        semi_token: _i . semi_token,
+        let_token: Token ! [ let ](tokens_helper(_visitor, &(_i . let_token).0)),
+        colon_token: (_i . colon_token).map(|it| { Token ! [ : ](tokens_helper(_visitor, &(it).0)) }),
+        eq_token: (_i . eq_token).map(|it| { Token ! [ = ](tokens_helper(_visitor, &(it).0)) }),
+        semi_token: Token ! [ ; ](tokens_helper(_visitor, &(_i . semi_token).0)),
         pat: Box::new(_visitor.fold_pat(* _i . pat)),
         ty: (_i . ty).map(|it| { Box::new(_visitor.fold_type(* it)) }),
         init: (_i . init).map(|it| { Box::new(_visitor.fold_expr(* it)) }),
@@ -1951,7 +1951,7 @@
 pub fn fold_macro<V: Folder + ?Sized>(_visitor: &mut V, _i: Macro) -> Macro {
     Macro {
         path: _visitor.fold_path(_i . path),
-        bang_token: _i . bang_token,
+        bang_token: Token ! [ ! ](tokens_helper(_visitor, &(_i . bang_token).0)),
         tokens: _i . tokens,
     }
 }
@@ -2004,7 +2004,7 @@
 pub fn fold_meta_name_value<V: Folder + ?Sized>(_visitor: &mut V, _i: MetaNameValue) -> MetaNameValue {
     MetaNameValue {
         ident: _visitor.fold_ident(_i . ident),
-        eq_token: _i . eq_token,
+        eq_token: Token ! [ = ](tokens_helper(_visitor, &(_i . eq_token).0)),
         lit: _visitor.fold_lit(_i . lit),
     }
 }
@@ -2031,7 +2031,7 @@
     match _i {
         Mutable(_binding_0, ) => {
             Mutable (
-                _binding_0,
+                Token ! [ mut ](tokens_helper(_visitor, &(_binding_0).0)),
             )
         }
         Immutable => { Immutable }
@@ -2131,7 +2131,7 @@
 pub fn fold_pat_box<V: Folder + ?Sized>(_visitor: &mut V, _i: PatBox) -> PatBox {
     PatBox {
         pat: Box::new(_visitor.fold_pat(* _i . pat)),
-        box_token: _i . box_token,
+        box_token: Token ! [ box ](tokens_helper(_visitor, &(_i . box_token).0)),
     }
 }
 # [ cfg ( feature = "full" ) ]
@@ -2140,7 +2140,7 @@
         mode: _visitor.fold_binding_mode(_i . mode),
         ident: _visitor.fold_ident(_i . ident),
         subpat: (_i . subpat).map(|it| { Box::new(_visitor.fold_pat(* it)) }),
-        at_token: _i . at_token,
+        at_token: (_i . at_token).map(|it| { Token ! [ @ ](tokens_helper(_visitor, &(it).0)) }),
     }
 }
 # [ cfg ( feature = "full" ) ]
@@ -2169,7 +2169,7 @@
     PatRef {
         pat: Box::new(_visitor.fold_pat(* _i . pat)),
         mutbl: _visitor.fold_mutability(_i . mutbl),
-        and_token: _i . and_token,
+        and_token: Token ! [ & ](tokens_helper(_visitor, &(_i . and_token).0)),
     }
 }
 # [ cfg ( feature = "full" ) ]
@@ -2178,8 +2178,8 @@
         front: FoldHelper::lift(_i . front, |it| { _visitor.fold_pat(it) }),
         middle: (_i . middle).map(|it| { Box::new(_visitor.fold_pat(* it)) }),
         back: FoldHelper::lift(_i . back, |it| { _visitor.fold_pat(it) }),
-        dot2_token: _i . dot2_token,
-        comma_token: _i . comma_token,
+        dot2_token: (_i . dot2_token).map(|it| { Token ! [ .. ](tokens_helper(_visitor, &(it).0)) }),
+        comma_token: (_i . comma_token).map(|it| { Token ! [ , ](tokens_helper(_visitor, &(it).0)) }),
         bracket_token: _i . bracket_token,
     }
 }
@@ -2189,7 +2189,7 @@
         path: _visitor.fold_path(_i . path),
         fields: FoldHelper::lift(_i . fields, |it| { _visitor.fold_field_pat(it) }),
         brace_token: _i . brace_token,
-        dot2_token: _i . dot2_token,
+        dot2_token: (_i . dot2_token).map(|it| { Token ! [ .. ](tokens_helper(_visitor, &(it).0)) }),
     }
 }
 # [ cfg ( feature = "full" ) ]
@@ -2198,8 +2198,8 @@
         pats: FoldHelper::lift(_i . pats, |it| { _visitor.fold_pat(it) }),
         dots_pos: _i . dots_pos,
         paren_token: _i . paren_token,
-        dot2_token: _i . dot2_token,
-        comma_token: _i . comma_token,
+        dot2_token: (_i . dot2_token).map(|it| { Token ! [ .. ](tokens_helper(_visitor, &(it).0)) }),
+        comma_token: (_i . comma_token).map(|it| { Token ! [ , ](tokens_helper(_visitor, &(it).0)) }),
     }
 }
 # [ cfg ( feature = "full" ) ]
@@ -2212,13 +2212,13 @@
 # [ cfg ( feature = "full" ) ]
 pub fn fold_pat_wild<V: Folder + ?Sized>(_visitor: &mut V, _i: PatWild) -> PatWild {
     PatWild {
-        underscore_token: _i . underscore_token,
+        underscore_token: Token ! [ _ ](tokens_helper(_visitor, &(_i . underscore_token).0)),
     }
 }
 
 pub fn fold_path<V: Folder + ?Sized>(_visitor: &mut V, _i: Path) -> Path {
     Path {
-        leading_colon: _i . leading_colon,
+        leading_colon: (_i . leading_colon).map(|it| { Token ! [ :: ](tokens_helper(_visitor, &(it).0)) }),
         segments: FoldHelper::lift(_i . segments, |it| { _visitor.fold_path_segment(it) }),
     }
 }
@@ -2256,11 +2256,11 @@
 
 pub fn fold_qself<V: Folder + ?Sized>(_visitor: &mut V, _i: QSelf) -> QSelf {
     QSelf {
-        lt_token: _i . lt_token,
+        lt_token: Token ! [ < ](tokens_helper(_visitor, &(_i . lt_token).0)),
         ty: Box::new(_visitor.fold_type(* _i . ty)),
         position: _i . position,
-        as_token: _i . as_token,
-        gt_token: _i . gt_token,
+        as_token: (_i . as_token).map(|it| { Token ! [ as ](tokens_helper(_visitor, &(it).0)) }),
+        gt_token: Token ! [ > ](tokens_helper(_visitor, &(_i . gt_token).0)),
     }
 }
 # [ cfg ( feature = "full" ) ]
@@ -2269,12 +2269,12 @@
     match _i {
         HalfOpen(_binding_0, ) => {
             HalfOpen (
-                _binding_0,
+                Token ! [ .. ](tokens_helper(_visitor, &(_binding_0).0)),
             )
         }
         Closed(_binding_0, ) => {
             Closed (
-                _binding_0,
+                Token ! [ ..= ](tokens_helper(_visitor, &(_binding_0).0)),
             )
         }
     }
@@ -2287,7 +2287,7 @@
         Type(_binding_0, _binding_1, ) => {
             Type (
                 Box::new(_visitor.fold_type(* _binding_0)),
-                _binding_1,
+                Token ! [ -> ](tokens_helper(_visitor, &(_binding_1).0)),
             )
         }
     }
@@ -2318,7 +2318,7 @@
         Semi(_binding_0, _binding_1, ) => {
             Semi (
                 Box::new(_visitor.fold_expr(* _binding_0)),
-                _binding_1,
+                Token ! [ ; ](tokens_helper(_visitor, &(_binding_1).0)),
             )
         }
     }
@@ -2330,7 +2330,7 @@
         None => { None }
         Maybe(_binding_0, ) => {
             Maybe (
-                _binding_0,
+                Token ! [ ? ](tokens_helper(_visitor, &(_binding_0).0)),
             )
         }
     }
@@ -2365,15 +2365,15 @@
 pub fn fold_trait_item_const<V: Folder + ?Sized>(_visitor: &mut V, _i: TraitItemConst) -> TraitItemConst {
     TraitItemConst {
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
-        const_token: _i . const_token,
+        const_token: Token ! [ const ](tokens_helper(_visitor, &(_i . const_token).0)),
         ident: _visitor.fold_ident(_i . ident),
-        colon_token: _i . colon_token,
+        colon_token: Token ! [ : ](tokens_helper(_visitor, &(_i . colon_token).0)),
         ty: _visitor.fold_type(_i . ty),
         default: (_i . default).map(|it| { (
-            ( it ) . 0,
+            Token ! [ = ](tokens_helper(_visitor, &(( it ) . 0).0)),
             _visitor.fold_expr(( it ) . 1),
         ) }),
-        semi_token: _i . semi_token,
+        semi_token: Token ! [ ; ](tokens_helper(_visitor, &(_i . semi_token).0)),
     }
 }
 # [ cfg ( feature = "full" ) ]
@@ -2381,7 +2381,7 @@
     TraitItemMacro {
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
         mac: _visitor.fold_macro(_i . mac),
-        semi_token: _i . semi_token,
+        semi_token: (_i . semi_token).map(|it| { Token ! [ ; ](tokens_helper(_visitor, &(it).0)) }),
     }
 }
 # [ cfg ( feature = "full" ) ]
@@ -2390,23 +2390,23 @@
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
         sig: _visitor.fold_method_sig(_i . sig),
         default: (_i . default).map(|it| { _visitor.fold_block(it) }),
-        semi_token: _i . semi_token,
+        semi_token: (_i . semi_token).map(|it| { Token ! [ ; ](tokens_helper(_visitor, &(it).0)) }),
     }
 }
 # [ cfg ( feature = "full" ) ]
 pub fn fold_trait_item_type<V: Folder + ?Sized>(_visitor: &mut V, _i: TraitItemType) -> TraitItemType {
     TraitItemType {
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
-        type_token: _i . type_token,
+        type_token: Token ! [ type ](tokens_helper(_visitor, &(_i . type_token).0)),
         ident: _visitor.fold_ident(_i . ident),
         generics: _visitor.fold_generics(_i . generics),
-        colon_token: _i . colon_token,
+        colon_token: (_i . colon_token).map(|it| { Token ! [ : ](tokens_helper(_visitor, &(it).0)) }),
         bounds: FoldHelper::lift(_i . bounds, |it| { _visitor.fold_type_param_bound(it) }),
         default: (_i . default).map(|it| { (
-            ( it ) . 0,
+            Token ! [ = ](tokens_helper(_visitor, &(( it ) . 0).0)),
             _visitor.fold_type(( it ) . 1),
         ) }),
-        semi_token: _i . semi_token,
+        semi_token: Token ! [ ; ](tokens_helper(_visitor, &(_i . semi_token).0)),
     }
 }
 
@@ -2490,7 +2490,7 @@
     TypeArray {
         bracket_token: _i . bracket_token,
         ty: Box::new(_visitor.fold_type(* _i . ty)),
-        semi_token: _i . semi_token,
+        semi_token: Token ! [ ; ](tokens_helper(_visitor, &(_i . semi_token).0)),
         amt: _visitor.fold_expr(_i . amt),
     }
 }
@@ -2504,7 +2504,7 @@
 pub fn fold_type_binding<V: Folder + ?Sized>(_visitor: &mut V, _i: TypeBinding) -> TypeBinding {
     TypeBinding {
         ident: _visitor.fold_ident(_i . ident),
-        eq_token: _i . eq_token,
+        eq_token: Token ! [ = ](tokens_helper(_visitor, &(_i . eq_token).0)),
         ty: _visitor.fold_type(_i . ty),
     }
 }
@@ -2518,20 +2518,20 @@
 
 pub fn fold_type_impl_trait<V: Folder + ?Sized>(_visitor: &mut V, _i: TypeImplTrait) -> TypeImplTrait {
     TypeImplTrait {
-        impl_token: _i . impl_token,
+        impl_token: Token ! [ impl ](tokens_helper(_visitor, &(_i . impl_token).0)),
         bounds: FoldHelper::lift(_i . bounds, |it| { _visitor.fold_type_param_bound(it) }),
     }
 }
 
 pub fn fold_type_infer<V: Folder + ?Sized>(_visitor: &mut V, _i: TypeInfer) -> TypeInfer {
     TypeInfer {
-        underscore_token: _i . underscore_token,
+        underscore_token: Token ! [ _ ](tokens_helper(_visitor, &(_i . underscore_token).0)),
     }
 }
 
 pub fn fold_type_never<V: Folder + ?Sized>(_visitor: &mut V, _i: TypeNever) -> TypeNever {
     TypeNever {
-        bang_token: _i . bang_token,
+        bang_token: Token ! [ ! ](tokens_helper(_visitor, &(_i . bang_token).0)),
     }
 }
 
@@ -2539,9 +2539,9 @@
     TypeParam {
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
         ident: _visitor.fold_ident(_i . ident),
-        colon_token: _i . colon_token,
+        colon_token: (_i . colon_token).map(|it| { Token ! [ : ](tokens_helper(_visitor, &(it).0)) }),
         bounds: FoldHelper::lift(_i . bounds, |it| { _visitor.fold_type_param_bound(it) }),
-        eq_token: _i . eq_token,
+        eq_token: (_i . eq_token).map(|it| { Token ! [ = ](tokens_helper(_visitor, &(it).0)) }),
         default: (_i . default).map(|it| { _visitor.fold_type(it) }),
     }
 }
@@ -2579,15 +2579,15 @@
 
 pub fn fold_type_ptr<V: Folder + ?Sized>(_visitor: &mut V, _i: TypePtr) -> TypePtr {
     TypePtr {
-        star_token: _i . star_token,
-        const_token: _i . const_token,
+        star_token: Token ! [ * ](tokens_helper(_visitor, &(_i . star_token).0)),
+        const_token: (_i . const_token).map(|it| { Token ! [ const ](tokens_helper(_visitor, &(it).0)) }),
         ty: Box::new(_visitor.fold_mut_type(* _i . ty)),
     }
 }
 
 pub fn fold_type_reference<V: Folder + ?Sized>(_visitor: &mut V, _i: TypeReference) -> TypeReference {
     TypeReference {
-        and_token: _i . and_token,
+        and_token: Token ! [ & ](tokens_helper(_visitor, &(_i . and_token).0)),
         lifetime: (_i . lifetime).map(|it| { _visitor.fold_lifetime(it) }),
         ty: Box::new(_visitor.fold_mut_type(* _i . ty)),
     }
@@ -2602,7 +2602,7 @@
 
 pub fn fold_type_trait_object<V: Folder + ?Sized>(_visitor: &mut V, _i: TypeTraitObject) -> TypeTraitObject {
     TypeTraitObject {
-        dyn_token: _i . dyn_token,
+        dyn_token: (_i . dyn_token).map(|it| { Token ! [ dyn ](tokens_helper(_visitor, &(it).0)) }),
         bounds: FoldHelper::lift(_i . bounds, |it| { _visitor.fold_type_param_bound(it) }),
     }
 }
@@ -2619,17 +2619,17 @@
     match _i {
         Deref(_binding_0, ) => {
             Deref (
-                _binding_0,
+                Token ! [ * ](tokens_helper(_visitor, &(_binding_0).0)),
             )
         }
         Not(_binding_0, ) => {
             Not (
-                _binding_0,
+                Token ! [ ! ](tokens_helper(_visitor, &(_binding_0).0)),
             )
         }
         Neg(_binding_0, ) => {
             Neg (
-                _binding_0,
+                Token ! [ - ](tokens_helper(_visitor, &(_binding_0).0)),
             )
         }
     }
@@ -2640,7 +2640,7 @@
     match _i {
         Unsafe(_binding_0, ) => {
             Unsafe (
-                _binding_0,
+                Token ! [ unsafe ](tokens_helper(_visitor, &(_binding_0).0)),
             )
         }
         Normal => { Normal }
@@ -2649,7 +2649,7 @@
 # [ cfg ( feature = "full" ) ]
 pub fn fold_use_glob<V: Folder + ?Sized>(_visitor: &mut V, _i: UseGlob) -> UseGlob {
     UseGlob {
-        star_token: _i . star_token,
+        star_token: Token ! [ * ](tokens_helper(_visitor, &(_i . star_token).0)),
     }
 }
 # [ cfg ( feature = "full" ) ]
@@ -2664,7 +2664,7 @@
     UsePath {
         ident: _visitor.fold_ident(_i . ident),
         rename: (_i . rename).map(|it| { (
-            ( it ) . 0,
+            Token ! [ as ](tokens_helper(_visitor, &(( it ) . 0).0)),
             _visitor.fold_ident(( it ) . 1),
         ) }),
     }
@@ -2697,7 +2697,7 @@
         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) }),
-        eq_token: _i . eq_token,
+        eq_token: (_i . eq_token).map(|it| { Token ! [ = ](tokens_helper(_visitor, &(it).0)) }),
     }
 }
 
@@ -2722,9 +2722,9 @@
 
 pub fn fold_vis_crate<V: Folder + ?Sized>(_visitor: &mut V, _i: VisCrate) -> VisCrate {
     VisCrate {
-        pub_token: _i . pub_token,
+        pub_token: Token ! [ pub ](tokens_helper(_visitor, &(_i . pub_token).0)),
         paren_token: _i . paren_token,
-        crate_token: _i . crate_token,
+        crate_token: Token ! [ crate ](tokens_helper(_visitor, &(_i . crate_token).0)),
     }
 }
 
@@ -2735,15 +2735,15 @@
 
 pub fn fold_vis_public<V: Folder + ?Sized>(_visitor: &mut V, _i: VisPublic) -> VisPublic {
     VisPublic {
-        pub_token: _i . pub_token,
+        pub_token: Token ! [ pub ](tokens_helper(_visitor, &(_i . pub_token).0)),
     }
 }
 
 pub fn fold_vis_restricted<V: Folder + ?Sized>(_visitor: &mut V, _i: VisRestricted) -> VisRestricted {
     VisRestricted {
-        pub_token: _i . pub_token,
+        pub_token: Token ! [ pub ](tokens_helper(_visitor, &(_i . pub_token).0)),
         paren_token: _i . paren_token,
-        in_token: _i . in_token,
+        in_token: (_i . in_token).map(|it| { Token ! [ in ](tokens_helper(_visitor, &(it).0)) }),
         path: Box::new(_visitor.fold_path(* _i . path)),
     }
 }
@@ -2778,14 +2778,14 @@
     WhereBoundPredicate {
         bound_lifetimes: (_i . bound_lifetimes).map(|it| { _visitor.fold_bound_lifetimes(it) }),
         bounded_ty: _visitor.fold_type(_i . bounded_ty),
-        colon_token: _i . colon_token,
+        colon_token: Token ! [ : ](tokens_helper(_visitor, &(_i . colon_token).0)),
         bounds: FoldHelper::lift(_i . bounds, |it| { _visitor.fold_type_param_bound(it) }),
     }
 }
 
 pub fn fold_where_clause<V: Folder + ?Sized>(_visitor: &mut V, _i: WhereClause) -> WhereClause {
     WhereClause {
-        where_token: _i . where_token,
+        where_token: Token ! [ where ](tokens_helper(_visitor, &(_i . where_token).0)),
         predicates: FoldHelper::lift(_i . predicates, |it| { _visitor.fold_where_predicate(it) }),
     }
 }
@@ -2793,7 +2793,7 @@
 pub fn fold_where_eq_predicate<V: Folder + ?Sized>(_visitor: &mut V, _i: WhereEqPredicate) -> WhereEqPredicate {
     WhereEqPredicate {
         lhs_ty: _visitor.fold_type(_i . lhs_ty),
-        eq_token: _i . eq_token,
+        eq_token: Token ! [ = ](tokens_helper(_visitor, &(_i . eq_token).0)),
         rhs_ty: _visitor.fold_type(_i . rhs_ty),
     }
 }
@@ -2822,7 +2822,7 @@
 pub fn fold_where_region_predicate<V: Folder + ?Sized>(_visitor: &mut V, _i: WhereRegionPredicate) -> WhereRegionPredicate {
     WhereRegionPredicate {
         lifetime: _visitor.fold_lifetime(_i . lifetime),
-        colon_token: _i . colon_token,
+        colon_token: (_i . colon_token).map(|it| { Token ! [ : ](tokens_helper(_visitor, &(it).0)) }),
         bounds: FoldHelper::lift(_i . bounds, |it| { _visitor.fold_lifetime(it) }),
     }
 }