Rename one of the two meanings of 'item'
diff --git a/src/attr.rs b/src/attr.rs
index aa578c2..1233663 100644
--- a/src/attr.rs
+++ b/src/attr.rs
@@ -73,7 +73,7 @@
     /// Parses the tokens after the path as a [`MetaItem`](enum.MetaItem.html) if possible.
     pub fn meta_item(&self) -> Option<MetaItem> {
         let name = if self.path.segments.len() == 1 {
-            &self.path.segments.first().unwrap().item().ident
+            &self.path.segments.first().unwrap().value().ident
         } else {
             return None;
         };
@@ -189,7 +189,7 @@
         if let Some(comma) = prev_comma {
             nested_meta_items.push_punct(comma);
         }
-        nested_meta_items.push_item(nested);
+        nested_meta_items.push_value(nested);
         tts = rest;
     }
 
diff --git a/src/expr.rs b/src/expr.rs
index ee7aa19..8cab97d 100644
--- a/src/expr.rs
+++ b/src/expr.rs
@@ -2543,7 +2543,7 @@
                         if before.empty_or_trailing() {
                             None
                         } else {
-                            Some(Box::new(before.pop().unwrap().into_item()))
+                            Some(Box::new(before.pop().unwrap().into_value()))
                         }
                     }),
                     front: before,
@@ -2865,8 +2865,8 @@
             tokens.append_all(self.attrs.outer());
             self.capture.to_tokens(tokens);
             self.or1_token.to_tokens(tokens);
-            for input in self.inputs.elements() {
-                match **input.item() {
+            for input in self.inputs.pairs() {
+                match **input.value() {
                     FnArg::Captured(ArgCaptured {
                         ref pat,
                         ty: Type::Infer(_),
@@ -2874,7 +2874,7 @@
                     }) => {
                         pat.to_tokens(tokens);
                     }
-                    _ => input.item().to_tokens(tokens),
+                    _ => input.value().to_tokens(tokens),
                 }
                 input.punct().to_tokens(tokens);
             }
diff --git a/src/gen/visit.rs b/src/gen/visit.rs
index d9e527e..a3dc7f3 100644
--- a/src/gen/visit.rs
+++ b/src/gen/visit.rs
@@ -430,7 +430,7 @@
 pub fn visit_angle_bracketed_generic_arguments<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast AngleBracketedGenericArguments) {
     if let Some(ref it) = _i . colon2_token { tokens_helper(_visitor, &(it).0) };
     tokens_helper(_visitor, &(& _i . lt_token).0);
-    for el in Punctuated::elements(& _i . args) { let it = el.item(); _visitor.visit_generic_argument(it) };
+    for el in Punctuated::pairs(& _i . args) { let it = el.value(); _visitor.visit_generic_argument(it) };
     tokens_helper(_visitor, &(& _i . gt_token).0);
 }
 # [ cfg ( feature = "full" ) ]
@@ -454,7 +454,7 @@
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ] # [ cfg ( feature = "full" ) ]
 pub fn visit_arm<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast Arm) {
     for it in & _i . attrs { _visitor.visit_attribute(it) };
-    for el in Punctuated::elements(& _i . pats) { let it = el.item(); _visitor.visit_pat(it) };
+    for el in Punctuated::pairs(& _i . pats) { let it = el.value(); _visitor.visit_pat(it) };
     if let Some(ref it) = _i . guard { 
             tokens_helper(_visitor, &(& ( it ) . 0).0);
             _visitor.visit_expr(& * ( it ) . 1);
@@ -604,7 +604,7 @@
 pub fn visit_bound_lifetimes<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast BoundLifetimes) {
     tokens_helper(_visitor, &(& _i . for_token).0);
     tokens_helper(_visitor, &(& _i . lt_token).0);
-    for el in Punctuated::elements(& _i . lifetimes) { let it = el.item(); _visitor.visit_lifetime_def(it) };
+    for el in Punctuated::pairs(& _i . lifetimes) { let it = el.value(); _visitor.visit_lifetime_def(it) };
     tokens_helper(_visitor, &(& _i . gt_token).0);
 }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
@@ -635,7 +635,7 @@
 pub fn visit_data_enum<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast DataEnum) {
     tokens_helper(_visitor, &(& _i . enum_token).0);
     tokens_helper(_visitor, &(& _i . brace_token).0);
-    for el in Punctuated::elements(& _i . variants) { let it = el.item(); _visitor.visit_variant(it) };
+    for el in Punctuated::pairs(& _i . variants) { let it = el.value(); _visitor.visit_variant(it) };
 }
 # [ cfg ( feature = "derive" ) ]
 pub fn visit_data_struct<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast DataStruct) {
@@ -792,7 +792,7 @@
 pub fn visit_expr_array<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprArray) {
     for it in & _i . attrs { _visitor.visit_attribute(it) };
     tokens_helper(_visitor, &(& _i . bracket_token).0);
-    for el in Punctuated::elements(& _i . elems) { let it = el.item(); _visitor.visit_expr(it) };
+    for el in Punctuated::pairs(& _i . elems) { let it = el.value(); _visitor.visit_expr(it) };
 }
 # [ cfg ( feature = "full" ) ] # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 pub fn visit_expr_assign<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprAssign) {
@@ -838,7 +838,7 @@
     for it in & _i . attrs { _visitor.visit_attribute(it) };
     _visitor.visit_expr(& * _i . func);
     tokens_helper(_visitor, &(& _i . paren_token).0);
-    for el in Punctuated::elements(& _i . args) { let it = el.item(); _visitor.visit_expr(it) };
+    for el in Punctuated::pairs(& _i . args) { let it = el.value(); _visitor.visit_expr(it) };
 }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 pub fn visit_expr_cast<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprCast) {
@@ -859,7 +859,7 @@
     for it in & _i . attrs { _visitor.visit_attribute(it) };
     if let Some(ref it) = _i . capture { tokens_helper(_visitor, &(it).0) };
     tokens_helper(_visitor, &(& _i . or1_token).0);
-    for el in Punctuated::elements(& _i . inputs) { let it = el.item(); _visitor.visit_fn_arg(it) };
+    for el in Punctuated::pairs(& _i . inputs) { let it = el.value(); _visitor.visit_fn_arg(it) };
     tokens_helper(_visitor, &(& _i . or2_token).0);
     _visitor.visit_return_type(& _i . output);
     _visitor.visit_expr(& * _i . body);
@@ -965,7 +965,7 @@
     _visitor.visit_ident(& _i . method);
     if let Some(ref it) = _i . turbofish { _visitor.visit_method_turbofish(it) };
     tokens_helper(_visitor, &(& _i . paren_token).0);
-    for el in Punctuated::elements(& _i . args) { let it = el.item(); _visitor.visit_expr(it) };
+    for el in Punctuated::pairs(& _i . args) { let it = el.value(); _visitor.visit_expr(it) };
 }
 # [ cfg ( feature = "full" ) ] # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 pub fn visit_expr_paren<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprParen) {
@@ -1005,7 +1005,7 @@
     for it in & _i . attrs { _visitor.visit_attribute(it) };
     _visitor.visit_path(& _i . path);
     tokens_helper(_visitor, &(& _i . brace_token).0);
-    for el in Punctuated::elements(& _i . fields) { let it = el.item(); _visitor.visit_field_value(it) };
+    for el in Punctuated::pairs(& _i . fields) { let it = el.value(); _visitor.visit_field_value(it) };
     if let Some(ref it) = _i . dot2_token { tokens_helper(_visitor, &(it).0) };
     if let Some(ref it) = _i . rest { _visitor.visit_expr(& * * it) };
 }
@@ -1019,7 +1019,7 @@
 pub fn visit_expr_tuple<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprTuple) {
     for it in & _i . attrs { _visitor.visit_attribute(it) };
     tokens_helper(_visitor, &(& _i . paren_token).0);
-    for el in Punctuated::elements(& _i . elems) { let it = el.item(); _visitor.visit_expr(it) };
+    for el in Punctuated::pairs(& _i . elems) { let it = el.value(); _visitor.visit_expr(it) };
 }
 # [ cfg ( feature = "full" ) ] # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 pub fn visit_expr_type<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprType) {
@@ -1106,12 +1106,12 @@
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 pub fn visit_fields_named<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast FieldsNamed) {
     tokens_helper(_visitor, &(& _i . brace_token).0);
-    for el in Punctuated::elements(& _i . named) { let it = el.item(); _visitor.visit_field(it) };
+    for el in Punctuated::pairs(& _i . named) { let it = el.value(); _visitor.visit_field(it) };
 }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 pub fn visit_fields_unnamed<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast FieldsUnnamed) {
     tokens_helper(_visitor, &(& _i . paren_token).0);
-    for el in Punctuated::elements(& _i . unnamed) { let it = el.item(); _visitor.visit_field(it) };
+    for el in Punctuated::pairs(& _i . unnamed) { let it = el.value(); _visitor.visit_field(it) };
 }
 # [ cfg ( feature = "full" ) ]
 pub fn visit_file<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast File) {
@@ -1144,7 +1144,7 @@
     tokens_helper(_visitor, &(& _i . fn_token).0);
     _visitor.visit_generics(& _i . generics);
     tokens_helper(_visitor, &(& _i . paren_token).0);
-    for el in Punctuated::elements(& _i . inputs) { let it = el.item(); _visitor.visit_fn_arg(it) };
+    for el in Punctuated::pairs(& _i . inputs) { let it = el.value(); _visitor.visit_fn_arg(it) };
     if let Some(ref it) = _i . variadic { tokens_helper(_visitor, &(it).0) };
     _visitor.visit_return_type(& _i . output);
 }
@@ -1241,7 +1241,7 @@
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 pub fn visit_generics<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast Generics) {
     if let Some(ref it) = _i . lt_token { tokens_helper(_visitor, &(it).0) };
-    for el in Punctuated::elements(& _i . params) { let it = el.item(); _visitor.visit_generic_param(it) };
+    for el in Punctuated::pairs(& _i . params) { let it = el.value(); _visitor.visit_generic_param(it) };
     if let Some(ref it) = _i . gt_token { tokens_helper(_visitor, &(it).0) };
     if let Some(ref it) = _i . where_clause { _visitor.visit_where_clause(it) };
 }
@@ -1391,7 +1391,7 @@
     _visitor.visit_ident(& _i . ident);
     _visitor.visit_generics(& _i . generics);
     tokens_helper(_visitor, &(& _i . brace_token).0);
-    for el in Punctuated::elements(& _i . variants) { let it = el.item(); _visitor.visit_variant(it) };
+    for el in Punctuated::pairs(& _i . variants) { let it = el.value(); _visitor.visit_variant(it) };
 }
 # [ cfg ( feature = "full" ) ]
 pub fn visit_item_extern_crate<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ItemExternCrate) {
@@ -1503,7 +1503,7 @@
     _visitor.visit_ident(& _i . ident);
     _visitor.visit_generics(& _i . generics);
     if let Some(ref it) = _i . colon_token { tokens_helper(_visitor, &(it).0) };
-    for el in Punctuated::elements(& _i . supertraits) { let it = el.item(); _visitor.visit_type_param_bound(it) };
+    for el in Punctuated::pairs(& _i . supertraits) { let it = el.value(); _visitor.visit_type_param_bound(it) };
     tokens_helper(_visitor, &(& _i . brace_token).0);
     for it in & _i . items { _visitor.visit_trait_item(it) };
 }
@@ -1533,7 +1533,7 @@
     _visitor.visit_visibility(& _i . vis);
     tokens_helper(_visitor, &(& _i . use_token).0);
     if let Some(ref it) = _i . leading_colon { tokens_helper(_visitor, &(it).0) };
-    for el in Punctuated::elements(& _i . prefix) { let it = el.item(); _visitor.visit_ident(it) };
+    for el in Punctuated::pairs(& _i . prefix) { let it = el.value(); _visitor.visit_ident(it) };
     _visitor.visit_use_tree(& _i . tree);
     tokens_helper(_visitor, &(& _i . semi_token).0);
 }
@@ -1556,7 +1556,7 @@
     for it in & _i . attrs { _visitor.visit_attribute(it) };
     _visitor.visit_lifetime(& _i . lifetime);
     if let Some(ref it) = _i . colon_token { tokens_helper(_visitor, &(it).0) };
-    for el in Punctuated::elements(& _i . bounds) { let it = el.item(); _visitor.visit_lifetime(it) };
+    for el in Punctuated::pairs(& _i . bounds) { let it = el.value(); _visitor.visit_lifetime(it) };
 }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 pub fn visit_lit<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast Lit) {
@@ -1692,7 +1692,7 @@
 pub fn visit_meta_item_list<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast MetaItemList) {
     _visitor.visit_ident(& _i . ident);
     tokens_helper(_visitor, &(& _i . paren_token).0);
-    for el in Punctuated::elements(& _i . nested) { let it = el.item(); _visitor.visit_nested_meta_item(it) };
+    for el in Punctuated::pairs(& _i . nested) { let it = el.value(); _visitor.visit_nested_meta_item(it) };
 }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 pub fn visit_meta_name_value<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast MetaNameValue) {
@@ -1712,7 +1712,7 @@
 pub fn visit_method_turbofish<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast MethodTurbofish) {
     tokens_helper(_visitor, &(& _i . colon2_token).0);
     tokens_helper(_visitor, &(& _i . lt_token).0);
-    for el in Punctuated::elements(& _i . args) { let it = el.item(); _visitor.visit_generic_method_argument(it) };
+    for el in Punctuated::pairs(& _i . args) { let it = el.value(); _visitor.visit_generic_method_argument(it) };
     tokens_helper(_visitor, &(& _i . gt_token).0);
 }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
@@ -1729,7 +1729,7 @@
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 pub fn visit_parenthesized_generic_arguments<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ParenthesizedGenericArguments) {
     tokens_helper(_visitor, &(& _i . paren_token).0);
-    for el in Punctuated::elements(& _i . inputs) { let it = el.item(); _visitor.visit_type(it) };
+    for el in Punctuated::pairs(& _i . inputs) { let it = el.value(); _visitor.visit_type(it) };
     _visitor.visit_return_type(& _i . output);
 }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ] # [ cfg ( feature = "full" ) ]
@@ -1819,26 +1819,26 @@
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ] # [ cfg ( feature = "full" ) ]
 pub fn visit_pat_slice<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast PatSlice) {
     tokens_helper(_visitor, &(& _i . bracket_token).0);
-    for el in Punctuated::elements(& _i . front) { let it = el.item(); _visitor.visit_pat(it) };
+    for el in Punctuated::pairs(& _i . front) { let it = el.value(); _visitor.visit_pat(it) };
     if let Some(ref it) = _i . middle { _visitor.visit_pat(& * * it) };
     if let Some(ref it) = _i . dot2_token { tokens_helper(_visitor, &(it).0) };
     if let Some(ref it) = _i . comma_token { tokens_helper(_visitor, &(it).0) };
-    for el in Punctuated::elements(& _i . back) { let it = el.item(); _visitor.visit_pat(it) };
+    for el in Punctuated::pairs(& _i . back) { let it = el.value(); _visitor.visit_pat(it) };
 }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ] # [ cfg ( feature = "full" ) ]
 pub fn visit_pat_struct<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast PatStruct) {
     _visitor.visit_path(& _i . path);
     tokens_helper(_visitor, &(& _i . brace_token).0);
-    for el in Punctuated::elements(& _i . fields) { let it = el.item(); _visitor.visit_field_pat(it) };
+    for el in Punctuated::pairs(& _i . fields) { let it = el.value(); _visitor.visit_field_pat(it) };
     if let Some(ref it) = _i . dot2_token { tokens_helper(_visitor, &(it).0) };
 }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ] # [ cfg ( feature = "full" ) ]
 pub fn visit_pat_tuple<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast PatTuple) {
     tokens_helper(_visitor, &(& _i . paren_token).0);
-    for el in Punctuated::elements(& _i . front) { let it = el.item(); _visitor.visit_pat(it) };
+    for el in Punctuated::pairs(& _i . front) { let it = el.value(); _visitor.visit_pat(it) };
     if let Some(ref it) = _i . dot2_token { tokens_helper(_visitor, &(it).0) };
     if let Some(ref it) = _i . comma_token { tokens_helper(_visitor, &(it).0) };
-    for el in Punctuated::elements(& _i . back) { let it = el.item(); _visitor.visit_pat(it) };
+    for el in Punctuated::pairs(& _i . back) { let it = el.value(); _visitor.visit_pat(it) };
 }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ] # [ cfg ( feature = "full" ) ]
 pub fn visit_pat_tuple_struct<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast PatTupleStruct) {
@@ -1856,7 +1856,7 @@
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 pub fn visit_path<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast Path) {
     if let Some(ref it) = _i . leading_colon { tokens_helper(_visitor, &(it).0) };
-    for el in Punctuated::elements(& _i . segments) { let it = el.item(); _visitor.visit_path_segment(it) };
+    for el in Punctuated::pairs(& _i . segments) { let it = el.value(); _visitor.visit_path_segment(it) };
 }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 pub fn visit_path_arguments<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast PathArguments) {
@@ -1885,14 +1885,14 @@
 pub fn visit_predicate_lifetime<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast PredicateLifetime) {
     _visitor.visit_lifetime(& _i . lifetime);
     if let Some(ref it) = _i . colon_token { tokens_helper(_visitor, &(it).0) };
-    for el in Punctuated::elements(& _i . bounds) { let it = el.item(); _visitor.visit_lifetime(it) };
+    for el in Punctuated::pairs(& _i . bounds) { let it = el.value(); _visitor.visit_lifetime(it) };
 }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 pub fn visit_predicate_type<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast PredicateType) {
     if let Some(ref it) = _i . lifetimes { _visitor.visit_bound_lifetimes(it) };
     _visitor.visit_type(& _i . bounded_ty);
     tokens_helper(_visitor, &(& _i . colon_token).0);
-    for el in Punctuated::elements(& _i . bounds) { let it = el.item(); _visitor.visit_type_param_bound(it) };
+    for el in Punctuated::pairs(& _i . bounds) { let it = el.value(); _visitor.visit_type_param_bound(it) };
 }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 pub fn visit_qself<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast QSelf) {
@@ -2012,7 +2012,7 @@
     _visitor.visit_ident(& _i . ident);
     _visitor.visit_generics(& _i . generics);
     if let Some(ref it) = _i . colon_token { tokens_helper(_visitor, &(it).0) };
-    for el in Punctuated::elements(& _i . bounds) { let it = el.item(); _visitor.visit_type_param_bound(it) };
+    for el in Punctuated::pairs(& _i . bounds) { let it = el.value(); _visitor.visit_type_param_bound(it) };
     if let Some(ref it) = _i . default { 
             tokens_helper(_visitor, &(& ( it ) . 0).0);
             _visitor.visit_type(& ( it ) . 1);
@@ -2087,7 +2087,7 @@
     tokens_helper(_visitor, &(& _i . fn_token).0);
     if let Some(ref it) = _i . lifetimes { _visitor.visit_bound_lifetimes(it) };
     tokens_helper(_visitor, &(& _i . paren_token).0);
-    for el in Punctuated::elements(& _i . inputs) { let it = el.item(); _visitor.visit_bare_fn_arg(it) };
+    for el in Punctuated::pairs(& _i . inputs) { let it = el.value(); _visitor.visit_bare_fn_arg(it) };
     if let Some(ref it) = _i . variadic { tokens_helper(_visitor, &(it).0) };
     _visitor.visit_return_type(& _i . output);
 }
@@ -2099,7 +2099,7 @@
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 pub fn visit_type_impl_trait<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast TypeImplTrait) {
     tokens_helper(_visitor, &(& _i . impl_token).0);
-    for el in Punctuated::elements(& _i . bounds) { let it = el.item(); _visitor.visit_type_param_bound(it) };
+    for el in Punctuated::pairs(& _i . bounds) { let it = el.value(); _visitor.visit_type_param_bound(it) };
 }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 pub fn visit_type_infer<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast TypeInfer) {
@@ -2118,7 +2118,7 @@
     for it in & _i . attrs { _visitor.visit_attribute(it) };
     _visitor.visit_ident(& _i . ident);
     if let Some(ref it) = _i . colon_token { tokens_helper(_visitor, &(it).0) };
-    for el in Punctuated::elements(& _i . bounds) { let it = el.item(); _visitor.visit_type_param_bound(it) };
+    for el in Punctuated::pairs(& _i . bounds) { let it = el.value(); _visitor.visit_type_param_bound(it) };
     if let Some(ref it) = _i . eq_token { tokens_helper(_visitor, &(it).0) };
     if let Some(ref it) = _i . default { _visitor.visit_type(it) };
 }
@@ -2165,12 +2165,12 @@
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 pub fn visit_type_trait_object<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast TypeTraitObject) {
     if let Some(ref it) = _i . dyn_token { tokens_helper(_visitor, &(it).0) };
-    for el in Punctuated::elements(& _i . bounds) { let it = el.item(); _visitor.visit_type_param_bound(it) };
+    for el in Punctuated::pairs(& _i . bounds) { let it = el.value(); _visitor.visit_type_param_bound(it) };
 }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 pub fn visit_type_tuple<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast TypeTuple) {
     tokens_helper(_visitor, &(& _i . paren_token).0);
-    for el in Punctuated::elements(& _i . elems) { let it = el.item(); _visitor.visit_type(it) };
+    for el in Punctuated::pairs(& _i . elems) { let it = el.value(); _visitor.visit_type(it) };
 }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 pub fn visit_type_verbatim<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast TypeVerbatim) {
@@ -2197,7 +2197,7 @@
 # [ cfg ( feature = "full" ) ]
 pub fn visit_use_list<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast UseList) {
     tokens_helper(_visitor, &(& _i . brace_token).0);
-    for el in Punctuated::elements(& _i . items) { let it = el.item(); _visitor.visit_use_tree(it) };
+    for el in Punctuated::pairs(& _i . items) { let it = el.value(); _visitor.visit_use_tree(it) };
 }
 # [ cfg ( feature = "full" ) ]
 pub fn visit_use_path<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast UsePath) {
@@ -2266,7 +2266,7 @@
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 pub fn visit_where_clause<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast WhereClause) {
     tokens_helper(_visitor, &(& _i . where_token).0);
-    for el in Punctuated::elements(& _i . predicates) { let it = el.item(); _visitor.visit_where_predicate(it) };
+    for el in Punctuated::pairs(& _i . predicates) { let it = el.value(); _visitor.visit_where_predicate(it) };
 }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 pub fn visit_where_predicate<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast WherePredicate) {
diff --git a/src/gen/visit_mut.rs b/src/gen/visit_mut.rs
index 83f82d3..029db60 100644
--- a/src/gen/visit_mut.rs
+++ b/src/gen/visit_mut.rs
@@ -430,7 +430,7 @@
 pub fn visit_angle_bracketed_generic_arguments_mut<V: VisitMut + ?Sized>(_visitor: &mut V, _i: &mut AngleBracketedGenericArguments) {
     if let Some(ref mut it) = _i . colon2_token { tokens_helper(_visitor, &mut (it).0) };
     tokens_helper(_visitor, &mut (& mut _i . lt_token).0);
-    for mut el in Punctuated::elements_mut(& mut _i . args) { let it = el.item_mut(); _visitor.visit_generic_argument_mut(it) };
+    for mut el in Punctuated::pairs_mut(& mut _i . args) { let it = el.value_mut(); _visitor.visit_generic_argument_mut(it) };
     tokens_helper(_visitor, &mut (& mut _i . gt_token).0);
 }
 # [ cfg ( feature = "full" ) ]
@@ -454,7 +454,7 @@
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ] # [ cfg ( feature = "full" ) ]
 pub fn visit_arm_mut<V: VisitMut + ?Sized>(_visitor: &mut V, _i: &mut Arm) {
     for it in & mut _i . attrs { _visitor.visit_attribute_mut(it) };
-    for mut el in Punctuated::elements_mut(& mut _i . pats) { let it = el.item_mut(); _visitor.visit_pat_mut(it) };
+    for mut el in Punctuated::pairs_mut(& mut _i . pats) { let it = el.value_mut(); _visitor.visit_pat_mut(it) };
     if let Some(ref mut it) = _i . guard { 
             tokens_helper(_visitor, &mut (& mut ( it ) . 0).0);
             _visitor.visit_expr_mut(& mut * ( it ) . 1);
@@ -604,7 +604,7 @@
 pub fn visit_bound_lifetimes_mut<V: VisitMut + ?Sized>(_visitor: &mut V, _i: &mut BoundLifetimes) {
     tokens_helper(_visitor, &mut (& mut _i . for_token).0);
     tokens_helper(_visitor, &mut (& mut _i . lt_token).0);
-    for mut el in Punctuated::elements_mut(& mut _i . lifetimes) { let it = el.item_mut(); _visitor.visit_lifetime_def_mut(it) };
+    for mut el in Punctuated::pairs_mut(& mut _i . lifetimes) { let it = el.value_mut(); _visitor.visit_lifetime_def_mut(it) };
     tokens_helper(_visitor, &mut (& mut _i . gt_token).0);
 }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
@@ -635,7 +635,7 @@
 pub fn visit_data_enum_mut<V: VisitMut + ?Sized>(_visitor: &mut V, _i: &mut DataEnum) {
     tokens_helper(_visitor, &mut (& mut _i . enum_token).0);
     tokens_helper(_visitor, &mut (& mut _i . brace_token).0);
-    for mut el in Punctuated::elements_mut(& mut _i . variants) { let it = el.item_mut(); _visitor.visit_variant_mut(it) };
+    for mut el in Punctuated::pairs_mut(& mut _i . variants) { let it = el.value_mut(); _visitor.visit_variant_mut(it) };
 }
 # [ cfg ( feature = "derive" ) ]
 pub fn visit_data_struct_mut<V: VisitMut + ?Sized>(_visitor: &mut V, _i: &mut DataStruct) {
@@ -792,7 +792,7 @@
 pub fn visit_expr_array_mut<V: VisitMut + ?Sized>(_visitor: &mut V, _i: &mut ExprArray) {
     for it in & mut _i . attrs { _visitor.visit_attribute_mut(it) };
     tokens_helper(_visitor, &mut (& mut _i . bracket_token).0);
-    for mut el in Punctuated::elements_mut(& mut _i . elems) { let it = el.item_mut(); _visitor.visit_expr_mut(it) };
+    for mut el in Punctuated::pairs_mut(& mut _i . elems) { let it = el.value_mut(); _visitor.visit_expr_mut(it) };
 }
 # [ cfg ( feature = "full" ) ] # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 pub fn visit_expr_assign_mut<V: VisitMut + ?Sized>(_visitor: &mut V, _i: &mut ExprAssign) {
@@ -838,7 +838,7 @@
     for it in & mut _i . attrs { _visitor.visit_attribute_mut(it) };
     _visitor.visit_expr_mut(& mut * _i . func);
     tokens_helper(_visitor, &mut (& mut _i . paren_token).0);
-    for mut el in Punctuated::elements_mut(& mut _i . args) { let it = el.item_mut(); _visitor.visit_expr_mut(it) };
+    for mut el in Punctuated::pairs_mut(& mut _i . args) { let it = el.value_mut(); _visitor.visit_expr_mut(it) };
 }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 pub fn visit_expr_cast_mut<V: VisitMut + ?Sized>(_visitor: &mut V, _i: &mut ExprCast) {
@@ -859,7 +859,7 @@
     for it in & mut _i . attrs { _visitor.visit_attribute_mut(it) };
     if let Some(ref mut it) = _i . capture { tokens_helper(_visitor, &mut (it).0) };
     tokens_helper(_visitor, &mut (& mut _i . or1_token).0);
-    for mut el in Punctuated::elements_mut(& mut _i . inputs) { let it = el.item_mut(); _visitor.visit_fn_arg_mut(it) };
+    for mut el in Punctuated::pairs_mut(& mut _i . inputs) { let it = el.value_mut(); _visitor.visit_fn_arg_mut(it) };
     tokens_helper(_visitor, &mut (& mut _i . or2_token).0);
     _visitor.visit_return_type_mut(& mut _i . output);
     _visitor.visit_expr_mut(& mut * _i . body);
@@ -965,7 +965,7 @@
     _visitor.visit_ident_mut(& mut _i . method);
     if let Some(ref mut it) = _i . turbofish { _visitor.visit_method_turbofish_mut(it) };
     tokens_helper(_visitor, &mut (& mut _i . paren_token).0);
-    for mut el in Punctuated::elements_mut(& mut _i . args) { let it = el.item_mut(); _visitor.visit_expr_mut(it) };
+    for mut el in Punctuated::pairs_mut(& mut _i . args) { let it = el.value_mut(); _visitor.visit_expr_mut(it) };
 }
 # [ cfg ( feature = "full" ) ] # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 pub fn visit_expr_paren_mut<V: VisitMut + ?Sized>(_visitor: &mut V, _i: &mut ExprParen) {
@@ -1005,7 +1005,7 @@
     for it in & mut _i . attrs { _visitor.visit_attribute_mut(it) };
     _visitor.visit_path_mut(& mut _i . path);
     tokens_helper(_visitor, &mut (& mut _i . brace_token).0);
-    for mut el in Punctuated::elements_mut(& mut _i . fields) { let it = el.item_mut(); _visitor.visit_field_value_mut(it) };
+    for mut el in Punctuated::pairs_mut(& mut _i . fields) { let it = el.value_mut(); _visitor.visit_field_value_mut(it) };
     if let Some(ref mut it) = _i . dot2_token { tokens_helper(_visitor, &mut (it).0) };
     if let Some(ref mut it) = _i . rest { _visitor.visit_expr_mut(& mut * * it) };
 }
@@ -1019,7 +1019,7 @@
 pub fn visit_expr_tuple_mut<V: VisitMut + ?Sized>(_visitor: &mut V, _i: &mut ExprTuple) {
     for it in & mut _i . attrs { _visitor.visit_attribute_mut(it) };
     tokens_helper(_visitor, &mut (& mut _i . paren_token).0);
-    for mut el in Punctuated::elements_mut(& mut _i . elems) { let it = el.item_mut(); _visitor.visit_expr_mut(it) };
+    for mut el in Punctuated::pairs_mut(& mut _i . elems) { let it = el.value_mut(); _visitor.visit_expr_mut(it) };
 }
 # [ cfg ( feature = "full" ) ] # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 pub fn visit_expr_type_mut<V: VisitMut + ?Sized>(_visitor: &mut V, _i: &mut ExprType) {
@@ -1106,12 +1106,12 @@
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 pub fn visit_fields_named_mut<V: VisitMut + ?Sized>(_visitor: &mut V, _i: &mut FieldsNamed) {
     tokens_helper(_visitor, &mut (& mut _i . brace_token).0);
-    for mut el in Punctuated::elements_mut(& mut _i . named) { let it = el.item_mut(); _visitor.visit_field_mut(it) };
+    for mut el in Punctuated::pairs_mut(& mut _i . named) { let it = el.value_mut(); _visitor.visit_field_mut(it) };
 }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 pub fn visit_fields_unnamed_mut<V: VisitMut + ?Sized>(_visitor: &mut V, _i: &mut FieldsUnnamed) {
     tokens_helper(_visitor, &mut (& mut _i . paren_token).0);
-    for mut el in Punctuated::elements_mut(& mut _i . unnamed) { let it = el.item_mut(); _visitor.visit_field_mut(it) };
+    for mut el in Punctuated::pairs_mut(& mut _i . unnamed) { let it = el.value_mut(); _visitor.visit_field_mut(it) };
 }
 # [ cfg ( feature = "full" ) ]
 pub fn visit_file_mut<V: VisitMut + ?Sized>(_visitor: &mut V, _i: &mut File) {
@@ -1144,7 +1144,7 @@
     tokens_helper(_visitor, &mut (& mut _i . fn_token).0);
     _visitor.visit_generics_mut(& mut _i . generics);
     tokens_helper(_visitor, &mut (& mut _i . paren_token).0);
-    for mut el in Punctuated::elements_mut(& mut _i . inputs) { let it = el.item_mut(); _visitor.visit_fn_arg_mut(it) };
+    for mut el in Punctuated::pairs_mut(& mut _i . inputs) { let it = el.value_mut(); _visitor.visit_fn_arg_mut(it) };
     if let Some(ref mut it) = _i . variadic { tokens_helper(_visitor, &mut (it).0) };
     _visitor.visit_return_type_mut(& mut _i . output);
 }
@@ -1241,7 +1241,7 @@
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 pub fn visit_generics_mut<V: VisitMut + ?Sized>(_visitor: &mut V, _i: &mut Generics) {
     if let Some(ref mut it) = _i . lt_token { tokens_helper(_visitor, &mut (it).0) };
-    for mut el in Punctuated::elements_mut(& mut _i . params) { let it = el.item_mut(); _visitor.visit_generic_param_mut(it) };
+    for mut el in Punctuated::pairs_mut(& mut _i . params) { let it = el.value_mut(); _visitor.visit_generic_param_mut(it) };
     if let Some(ref mut it) = _i . gt_token { tokens_helper(_visitor, &mut (it).0) };
     if let Some(ref mut it) = _i . where_clause { _visitor.visit_where_clause_mut(it) };
 }
@@ -1391,7 +1391,7 @@
     _visitor.visit_ident_mut(& mut _i . ident);
     _visitor.visit_generics_mut(& mut _i . generics);
     tokens_helper(_visitor, &mut (& mut _i . brace_token).0);
-    for mut el in Punctuated::elements_mut(& mut _i . variants) { let it = el.item_mut(); _visitor.visit_variant_mut(it) };
+    for mut el in Punctuated::pairs_mut(& mut _i . variants) { let it = el.value_mut(); _visitor.visit_variant_mut(it) };
 }
 # [ cfg ( feature = "full" ) ]
 pub fn visit_item_extern_crate_mut<V: VisitMut + ?Sized>(_visitor: &mut V, _i: &mut ItemExternCrate) {
@@ -1503,7 +1503,7 @@
     _visitor.visit_ident_mut(& mut _i . ident);
     _visitor.visit_generics_mut(& mut _i . generics);
     if let Some(ref mut it) = _i . colon_token { tokens_helper(_visitor, &mut (it).0) };
-    for mut el in Punctuated::elements_mut(& mut _i . supertraits) { let it = el.item_mut(); _visitor.visit_type_param_bound_mut(it) };
+    for mut el in Punctuated::pairs_mut(& mut _i . supertraits) { let it = el.value_mut(); _visitor.visit_type_param_bound_mut(it) };
     tokens_helper(_visitor, &mut (& mut _i . brace_token).0);
     for it in & mut _i . items { _visitor.visit_trait_item_mut(it) };
 }
@@ -1533,7 +1533,7 @@
     _visitor.visit_visibility_mut(& mut _i . vis);
     tokens_helper(_visitor, &mut (& mut _i . use_token).0);
     if let Some(ref mut it) = _i . leading_colon { tokens_helper(_visitor, &mut (it).0) };
-    for mut el in Punctuated::elements_mut(& mut _i . prefix) { let it = el.item_mut(); _visitor.visit_ident_mut(it) };
+    for mut el in Punctuated::pairs_mut(& mut _i . prefix) { let it = el.value_mut(); _visitor.visit_ident_mut(it) };
     _visitor.visit_use_tree_mut(& mut _i . tree);
     tokens_helper(_visitor, &mut (& mut _i . semi_token).0);
 }
@@ -1556,7 +1556,7 @@
     for it in & mut _i . attrs { _visitor.visit_attribute_mut(it) };
     _visitor.visit_lifetime_mut(& mut _i . lifetime);
     if let Some(ref mut it) = _i . colon_token { tokens_helper(_visitor, &mut (it).0) };
-    for mut el in Punctuated::elements_mut(& mut _i . bounds) { let it = el.item_mut(); _visitor.visit_lifetime_mut(it) };
+    for mut el in Punctuated::pairs_mut(& mut _i . bounds) { let it = el.value_mut(); _visitor.visit_lifetime_mut(it) };
 }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 pub fn visit_lit_mut<V: VisitMut + ?Sized>(_visitor: &mut V, _i: &mut Lit) {
@@ -1692,7 +1692,7 @@
 pub fn visit_meta_item_list_mut<V: VisitMut + ?Sized>(_visitor: &mut V, _i: &mut MetaItemList) {
     _visitor.visit_ident_mut(& mut _i . ident);
     tokens_helper(_visitor, &mut (& mut _i . paren_token).0);
-    for mut el in Punctuated::elements_mut(& mut _i . nested) { let it = el.item_mut(); _visitor.visit_nested_meta_item_mut(it) };
+    for mut el in Punctuated::pairs_mut(& mut _i . nested) { let it = el.value_mut(); _visitor.visit_nested_meta_item_mut(it) };
 }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 pub fn visit_meta_name_value_mut<V: VisitMut + ?Sized>(_visitor: &mut V, _i: &mut MetaNameValue) {
@@ -1712,7 +1712,7 @@
 pub fn visit_method_turbofish_mut<V: VisitMut + ?Sized>(_visitor: &mut V, _i: &mut MethodTurbofish) {
     tokens_helper(_visitor, &mut (& mut _i . colon2_token).0);
     tokens_helper(_visitor, &mut (& mut _i . lt_token).0);
-    for mut el in Punctuated::elements_mut(& mut _i . args) { let it = el.item_mut(); _visitor.visit_generic_method_argument_mut(it) };
+    for mut el in Punctuated::pairs_mut(& mut _i . args) { let it = el.value_mut(); _visitor.visit_generic_method_argument_mut(it) };
     tokens_helper(_visitor, &mut (& mut _i . gt_token).0);
 }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
@@ -1729,7 +1729,7 @@
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 pub fn visit_parenthesized_generic_arguments_mut<V: VisitMut + ?Sized>(_visitor: &mut V, _i: &mut ParenthesizedGenericArguments) {
     tokens_helper(_visitor, &mut (& mut _i . paren_token).0);
-    for mut el in Punctuated::elements_mut(& mut _i . inputs) { let it = el.item_mut(); _visitor.visit_type_mut(it) };
+    for mut el in Punctuated::pairs_mut(& mut _i . inputs) { let it = el.value_mut(); _visitor.visit_type_mut(it) };
     _visitor.visit_return_type_mut(& mut _i . output);
 }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ] # [ cfg ( feature = "full" ) ]
@@ -1819,26 +1819,26 @@
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ] # [ cfg ( feature = "full" ) ]
 pub fn visit_pat_slice_mut<V: VisitMut + ?Sized>(_visitor: &mut V, _i: &mut PatSlice) {
     tokens_helper(_visitor, &mut (& mut _i . bracket_token).0);
-    for mut el in Punctuated::elements_mut(& mut _i . front) { let it = el.item_mut(); _visitor.visit_pat_mut(it) };
+    for mut el in Punctuated::pairs_mut(& mut _i . front) { let it = el.value_mut(); _visitor.visit_pat_mut(it) };
     if let Some(ref mut it) = _i . middle { _visitor.visit_pat_mut(& mut * * it) };
     if let Some(ref mut it) = _i . dot2_token { tokens_helper(_visitor, &mut (it).0) };
     if let Some(ref mut it) = _i . comma_token { tokens_helper(_visitor, &mut (it).0) };
-    for mut el in Punctuated::elements_mut(& mut _i . back) { let it = el.item_mut(); _visitor.visit_pat_mut(it) };
+    for mut el in Punctuated::pairs_mut(& mut _i . back) { let it = el.value_mut(); _visitor.visit_pat_mut(it) };
 }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ] # [ cfg ( feature = "full" ) ]
 pub fn visit_pat_struct_mut<V: VisitMut + ?Sized>(_visitor: &mut V, _i: &mut PatStruct) {
     _visitor.visit_path_mut(& mut _i . path);
     tokens_helper(_visitor, &mut (& mut _i . brace_token).0);
-    for mut el in Punctuated::elements_mut(& mut _i . fields) { let it = el.item_mut(); _visitor.visit_field_pat_mut(it) };
+    for mut el in Punctuated::pairs_mut(& mut _i . fields) { let it = el.value_mut(); _visitor.visit_field_pat_mut(it) };
     if let Some(ref mut it) = _i . dot2_token { tokens_helper(_visitor, &mut (it).0) };
 }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ] # [ cfg ( feature = "full" ) ]
 pub fn visit_pat_tuple_mut<V: VisitMut + ?Sized>(_visitor: &mut V, _i: &mut PatTuple) {
     tokens_helper(_visitor, &mut (& mut _i . paren_token).0);
-    for mut el in Punctuated::elements_mut(& mut _i . front) { let it = el.item_mut(); _visitor.visit_pat_mut(it) };
+    for mut el in Punctuated::pairs_mut(& mut _i . front) { let it = el.value_mut(); _visitor.visit_pat_mut(it) };
     if let Some(ref mut it) = _i . dot2_token { tokens_helper(_visitor, &mut (it).0) };
     if let Some(ref mut it) = _i . comma_token { tokens_helper(_visitor, &mut (it).0) };
-    for mut el in Punctuated::elements_mut(& mut _i . back) { let it = el.item_mut(); _visitor.visit_pat_mut(it) };
+    for mut el in Punctuated::pairs_mut(& mut _i . back) { let it = el.value_mut(); _visitor.visit_pat_mut(it) };
 }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ] # [ cfg ( feature = "full" ) ]
 pub fn visit_pat_tuple_struct_mut<V: VisitMut + ?Sized>(_visitor: &mut V, _i: &mut PatTupleStruct) {
@@ -1856,7 +1856,7 @@
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 pub fn visit_path_mut<V: VisitMut + ?Sized>(_visitor: &mut V, _i: &mut Path) {
     if let Some(ref mut it) = _i . leading_colon { tokens_helper(_visitor, &mut (it).0) };
-    for mut el in Punctuated::elements_mut(& mut _i . segments) { let it = el.item_mut(); _visitor.visit_path_segment_mut(it) };
+    for mut el in Punctuated::pairs_mut(& mut _i . segments) { let it = el.value_mut(); _visitor.visit_path_segment_mut(it) };
 }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 pub fn visit_path_arguments_mut<V: VisitMut + ?Sized>(_visitor: &mut V, _i: &mut PathArguments) {
@@ -1885,14 +1885,14 @@
 pub fn visit_predicate_lifetime_mut<V: VisitMut + ?Sized>(_visitor: &mut V, _i: &mut PredicateLifetime) {
     _visitor.visit_lifetime_mut(& mut _i . lifetime);
     if let Some(ref mut it) = _i . colon_token { tokens_helper(_visitor, &mut (it).0) };
-    for mut el in Punctuated::elements_mut(& mut _i . bounds) { let it = el.item_mut(); _visitor.visit_lifetime_mut(it) };
+    for mut el in Punctuated::pairs_mut(& mut _i . bounds) { let it = el.value_mut(); _visitor.visit_lifetime_mut(it) };
 }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 pub fn visit_predicate_type_mut<V: VisitMut + ?Sized>(_visitor: &mut V, _i: &mut PredicateType) {
     if let Some(ref mut it) = _i . lifetimes { _visitor.visit_bound_lifetimes_mut(it) };
     _visitor.visit_type_mut(& mut _i . bounded_ty);
     tokens_helper(_visitor, &mut (& mut _i . colon_token).0);
-    for mut el in Punctuated::elements_mut(& mut _i . bounds) { let it = el.item_mut(); _visitor.visit_type_param_bound_mut(it) };
+    for mut el in Punctuated::pairs_mut(& mut _i . bounds) { let it = el.value_mut(); _visitor.visit_type_param_bound_mut(it) };
 }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 pub fn visit_qself_mut<V: VisitMut + ?Sized>(_visitor: &mut V, _i: &mut QSelf) {
@@ -2012,7 +2012,7 @@
     _visitor.visit_ident_mut(& mut _i . ident);
     _visitor.visit_generics_mut(& mut _i . generics);
     if let Some(ref mut it) = _i . colon_token { tokens_helper(_visitor, &mut (it).0) };
-    for mut el in Punctuated::elements_mut(& mut _i . bounds) { let it = el.item_mut(); _visitor.visit_type_param_bound_mut(it) };
+    for mut el in Punctuated::pairs_mut(& mut _i . bounds) { let it = el.value_mut(); _visitor.visit_type_param_bound_mut(it) };
     if let Some(ref mut it) = _i . default { 
             tokens_helper(_visitor, &mut (& mut ( it ) . 0).0);
             _visitor.visit_type_mut(& mut ( it ) . 1);
@@ -2087,7 +2087,7 @@
     tokens_helper(_visitor, &mut (& mut _i . fn_token).0);
     if let Some(ref mut it) = _i . lifetimes { _visitor.visit_bound_lifetimes_mut(it) };
     tokens_helper(_visitor, &mut (& mut _i . paren_token).0);
-    for mut el in Punctuated::elements_mut(& mut _i . inputs) { let it = el.item_mut(); _visitor.visit_bare_fn_arg_mut(it) };
+    for mut el in Punctuated::pairs_mut(& mut _i . inputs) { let it = el.value_mut(); _visitor.visit_bare_fn_arg_mut(it) };
     if let Some(ref mut it) = _i . variadic { tokens_helper(_visitor, &mut (it).0) };
     _visitor.visit_return_type_mut(& mut _i . output);
 }
@@ -2099,7 +2099,7 @@
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 pub fn visit_type_impl_trait_mut<V: VisitMut + ?Sized>(_visitor: &mut V, _i: &mut TypeImplTrait) {
     tokens_helper(_visitor, &mut (& mut _i . impl_token).0);
-    for mut el in Punctuated::elements_mut(& mut _i . bounds) { let it = el.item_mut(); _visitor.visit_type_param_bound_mut(it) };
+    for mut el in Punctuated::pairs_mut(& mut _i . bounds) { let it = el.value_mut(); _visitor.visit_type_param_bound_mut(it) };
 }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 pub fn visit_type_infer_mut<V: VisitMut + ?Sized>(_visitor: &mut V, _i: &mut TypeInfer) {
@@ -2118,7 +2118,7 @@
     for it in & mut _i . attrs { _visitor.visit_attribute_mut(it) };
     _visitor.visit_ident_mut(& mut _i . ident);
     if let Some(ref mut it) = _i . colon_token { tokens_helper(_visitor, &mut (it).0) };
-    for mut el in Punctuated::elements_mut(& mut _i . bounds) { let it = el.item_mut(); _visitor.visit_type_param_bound_mut(it) };
+    for mut el in Punctuated::pairs_mut(& mut _i . bounds) { let it = el.value_mut(); _visitor.visit_type_param_bound_mut(it) };
     if let Some(ref mut it) = _i . eq_token { tokens_helper(_visitor, &mut (it).0) };
     if let Some(ref mut it) = _i . default { _visitor.visit_type_mut(it) };
 }
@@ -2165,12 +2165,12 @@
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 pub fn visit_type_trait_object_mut<V: VisitMut + ?Sized>(_visitor: &mut V, _i: &mut TypeTraitObject) {
     if let Some(ref mut it) = _i . dyn_token { tokens_helper(_visitor, &mut (it).0) };
-    for mut el in Punctuated::elements_mut(& mut _i . bounds) { let it = el.item_mut(); _visitor.visit_type_param_bound_mut(it) };
+    for mut el in Punctuated::pairs_mut(& mut _i . bounds) { let it = el.value_mut(); _visitor.visit_type_param_bound_mut(it) };
 }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 pub fn visit_type_tuple_mut<V: VisitMut + ?Sized>(_visitor: &mut V, _i: &mut TypeTuple) {
     tokens_helper(_visitor, &mut (& mut _i . paren_token).0);
-    for mut el in Punctuated::elements_mut(& mut _i . elems) { let it = el.item_mut(); _visitor.visit_type_mut(it) };
+    for mut el in Punctuated::pairs_mut(& mut _i . elems) { let it = el.value_mut(); _visitor.visit_type_mut(it) };
 }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 pub fn visit_type_verbatim_mut<V: VisitMut + ?Sized>(_visitor: &mut V, _i: &mut TypeVerbatim) {
@@ -2197,7 +2197,7 @@
 # [ cfg ( feature = "full" ) ]
 pub fn visit_use_list_mut<V: VisitMut + ?Sized>(_visitor: &mut V, _i: &mut UseList) {
     tokens_helper(_visitor, &mut (& mut _i . brace_token).0);
-    for mut el in Punctuated::elements_mut(& mut _i . items) { let it = el.item_mut(); _visitor.visit_use_tree_mut(it) };
+    for mut el in Punctuated::pairs_mut(& mut _i . items) { let it = el.value_mut(); _visitor.visit_use_tree_mut(it) };
 }
 # [ cfg ( feature = "full" ) ]
 pub fn visit_use_path_mut<V: VisitMut + ?Sized>(_visitor: &mut V, _i: &mut UsePath) {
@@ -2266,7 +2266,7 @@
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 pub fn visit_where_clause_mut<V: VisitMut + ?Sized>(_visitor: &mut V, _i: &mut WhereClause) {
     tokens_helper(_visitor, &mut (& mut _i . where_token).0);
-    for mut el in Punctuated::elements_mut(& mut _i . predicates) { let it = el.item_mut(); _visitor.visit_where_predicate_mut(it) };
+    for mut el in Punctuated::pairs_mut(& mut _i . predicates) { let it = el.value_mut(); _visitor.visit_where_predicate_mut(it) };
 }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 pub fn visit_where_predicate_mut<V: VisitMut + ?Sized>(_visitor: &mut V, _i: &mut WherePredicate) {
diff --git a/src/gen_helper.rs b/src/gen_helper.rs
index b981f32..f7f64a9 100644
--- a/src/gen_helper.rs
+++ b/src/gen_helper.rs
@@ -8,7 +8,7 @@
 
 #[cfg(feature = "fold")]
 pub mod fold {
-    use punctuated::{Element, Punctuated};
+    use punctuated::{Pair, Punctuated};
     use fold::Fold;
     use proc_macro2::Span;
 
@@ -35,9 +35,9 @@
         where
             F: FnMut(Self::Item) -> Self::Item,
         {
-            self.into_elements()
-                .map(Element::into_tuple)
-                .map(|(t, u)| Element::new(f(t), u))
+            self.into_pairs()
+                .map(Pair::into_tuple)
+                .map(|(t, u)| Pair::new(f(t), u))
                 .collect()
         }
     }
diff --git a/src/generics.rs b/src/generics.rs
index 6bae061..f50e477 100644
--- a/src/generics.rs
+++ b/src/generics.rs
@@ -213,7 +213,7 @@
     use super::*;
 
     use synom::Synom;
-    use punctuated::Element;
+    use punctuated::Pair;
 
     impl Synom for Generics {
         named!(parse -> Self, map!(
@@ -233,13 +233,13 @@
             ),
             |(lifetimes, ty_params, lt, gt)| Generics {
                 lt_token: lt,
-                params: lifetimes.into_elements()
-                    .map(Element::into_tuple)
-                    .map(|(life, comma)| Element::new(GenericParam::Lifetime(life), comma))
+                params: lifetimes.into_pairs()
+                    .map(Pair::into_tuple)
+                    .map(|(life, comma)| Pair::new(GenericParam::Lifetime(life), comma))
                     .chain(ty_params.unwrap_or_default()
-                        .into_elements()
-                        .map(Element::into_tuple)
-                        .map(|(ty, comma)| Element::new(GenericParam::Type(ty), comma)))
+                        .into_pairs()
+                        .map(Pair::into_tuple)
+                        .map(|(ty, comma)| Pair::new(GenericParam::Type(ty), comma)))
                     .collect(),
                 gt_token: gt,
                 where_clause: None,
@@ -341,13 +341,13 @@
             lifetimes: option!(syn!(BoundLifetimes)) >>
             mut path: syn!(Path) >>
             parenthesized: option!(cond_reduce!(
-                path.segments.last().unwrap().item().arguments.is_empty(),
+                path.segments.last().unwrap().value().arguments.is_empty(),
                 syn!(ParenthesizedGenericArguments)
             )) >>
             ({
                 if let Some(parenthesized) = parenthesized {
                     let parenthesized = PathArguments::Parenthesized(parenthesized);
-                    path.segments.last_mut().unwrap().item_mut().arguments = parenthesized;
+                    path.segments.last_mut().unwrap().value_mut().arguments = parenthesized;
                 }
                 TraitBound {
                     modifier: modifier,
@@ -485,8 +485,8 @@
             }
 
             TokensOrDefault(&self.0.lt_token).to_tokens(tokens);
-            for param in self.0.params.elements() {
-                match **param.item() {
+            for param in self.0.params.pairs() {
+                match **param.value() {
                     GenericParam::Lifetime(ref param) => {
                         param.to_tokens(tokens);
                     }
@@ -521,8 +521,8 @@
             }
 
             TokensOrDefault(&self.0.lt_token).to_tokens(tokens);
-            for param in self.0.params.elements() {
-                match **param.item() {
+            for param in self.0.params.pairs() {
+                match **param.value() {
                     GenericParam::Lifetime(ref param) => {
                         // Leave off the lifetime bounds and attributes
                         param.lifetime.to_tokens(tokens);
diff --git a/src/item.rs b/src/item.rs
index 360337d..7262401 100644
--- a/src/item.rs
+++ b/src/item.rs
@@ -660,14 +660,14 @@
             false => alt!(
                 tuple!(keyword!(as), syn!(Ident)) => {
                     |rename| UseTree::Path(UsePath {
-                        ident: prefix.pop().unwrap().into_item(),
+                        ident: prefix.pop().unwrap().into_value(),
                         rename: Some(rename),
                     })
                 }
                 |
                 epsilon!() => {
                     |_| UseTree::Path(UsePath {
-                        ident: prefix.pop().unwrap().into_item(),
+                        ident: prefix.pop().unwrap().into_value(),
                         rename: None,
                     })
                 }
diff --git a/src/path.rs b/src/path.rs
index debfa1d..edc6fac 100644
--- a/src/path.rs
+++ b/src/path.rs
@@ -45,7 +45,7 @@
             leading_colon: None,
             segments: Punctuated::new(),
         };
-        path.segments.push_item(segment.into());
+        path.segments.push_value(segment.into());
         path
     }
 }
@@ -189,7 +189,7 @@
         named!(parse -> Self, do_parse!(
             colon: option!(punct!(::)) >>
             segments: call!(Punctuated::<PathSegment, Token![::]>::parse_separated_nonempty) >>
-            cond_reduce!(segments.first().map_or(true, |seg| seg.item().ident != "dyn"), epsilon!()) >>
+            cond_reduce!(segments.first().map_or(true, |seg| seg.value().ident != "dyn"), epsilon!()) >>
             (Path {
                 leading_colon: colon,
                 segments: segments,
@@ -341,7 +341,7 @@
                     Some((as_, mut path)) => {
                         let pos = path.segments.len();
                         path.segments.push_punct(colon2);
-                        path.segments.extend(rest.into_elements());
+                        path.segments.extend(rest.into_pairs());
                         (pos, Some(as_), path)
                     }
                     None => {
diff --git a/src/punctuated.rs b/src/punctuated.rs
index e9eeb12..fda3c10 100644
--- a/src/punctuated.rs
+++ b/src/punctuated.rs
@@ -31,26 +31,26 @@
         self.inner.len()
     }
 
-    pub fn first(&self) -> Option<Element<&T, &P>> {
+    pub fn first(&self) -> Option<Pair<&T, &P>> {
         self.inner.first().map(|&(ref t, ref d)| match *d {
-            Some(ref d) => Element::Punctuated(t, d),
-            None => Element::End(t),
+            Some(ref d) => Pair::Punctuated(t, d),
+            None => Pair::End(t),
         })
     }
 
-    pub fn last(&self) -> Option<Element<&T, &P>> {
+    pub fn last(&self) -> Option<Pair<&T, &P>> {
         self.inner.last().map(|&(ref t, ref d)| match *d {
-            Some(ref d) => Element::Punctuated(t, d),
-            None => Element::End(t),
+            Some(ref d) => Pair::Punctuated(t, d),
+            None => Pair::End(t),
         })
     }
 
-    pub fn last_mut(&mut self) -> Option<Element<&mut T, &mut P>> {
+    pub fn last_mut(&mut self) -> Option<Pair<&mut T, &mut P>> {
         self.inner
             .last_mut()
             .map(|&mut (ref mut t, ref mut d)| match *d {
-                Some(ref mut d) => Element::Punctuated(t, d),
-                None => Element::End(t),
+                Some(ref mut d) => Pair::Punctuated(t, d),
+                None => Pair::End(t),
             })
     }
 
@@ -66,27 +66,27 @@
         }
     }
 
-    pub fn elements(&self) -> Elements<T, P> {
-        Elements {
+    pub fn pairs(&self) -> Pairs<T, P> {
+        Pairs {
             inner: self.inner.iter(),
         }
     }
 
-    pub fn elements_mut(&mut self) -> ElementsMut<T, P> {
-        ElementsMut {
+    pub fn pairs_mut(&mut self) -> PairsMut<T, P> {
+        PairsMut {
             inner: self.inner.iter_mut(),
         }
     }
 
-    pub fn into_elements(self) -> IntoElements<T, P> {
-        IntoElements {
+    pub fn into_pairs(self) -> IntoPairs<T, P> {
+        IntoPairs {
             inner: self.inner.into_iter(),
         }
     }
 
-    pub fn push_item(&mut self, item: T) {
+    pub fn push_value(&mut self, value: T) {
         assert!(self.empty_or_trailing());
-        self.inner.push((item, None));
+        self.inner.push((value, None));
     }
 
     pub fn push_punct(&mut self, punctuation: P) {
@@ -96,8 +96,8 @@
         last.1 = Some(punctuation);
     }
 
-    pub fn pop(&mut self) -> Option<Element<T, P>> {
-        self.inner.pop().map(|(t, d)| Element::new(t, d))
+    pub fn pop(&mut self) -> Option<Pair<T, P>> {
+        self.inner.pop().map(|(t, d)| Pair::new(t, d))
     }
 
     pub fn trailing_punct(&self) -> bool {
@@ -123,11 +123,11 @@
 where
     P: Default,
 {
-    pub fn push(&mut self, item: T) {
+    pub fn push(&mut self, value: T) {
         if !self.empty_or_trailing() {
             self.push_punct(Default::default());
         }
-        self.push_item(item);
+        self.push_value(value);
     }
 }
 
@@ -138,20 +138,20 @@
     }
 }
 
-impl<T, P> FromIterator<Element<T, P>> for Punctuated<T, P> {
-    fn from_iter<I: IntoIterator<Item = Element<T, P>>>(i: I) -> Self {
+impl<T, P> FromIterator<Pair<T, P>> for Punctuated<T, P> {
+    fn from_iter<I: IntoIterator<Item = Pair<T, P>>>(i: I) -> Self {
         let mut ret = Punctuated::new();
         ret.extend(i);
         ret
     }
 }
 
-impl<T, P> Extend<Element<T, P>> for Punctuated<T, P> {
-    fn extend<I: IntoIterator<Item = Element<T, P>>>(&mut self, i: I) {
-        for elem in i {
-            match elem {
-                Element::Punctuated(a, b) => self.inner.push((a, Some(b))),
-                Element::End(a) => self.inner.push((a, None)),
+impl<T, P> Extend<Pair<T, P>> for Punctuated<T, P> {
+    fn extend<I: IntoIterator<Item = Pair<T, P>>>(&mut self, i: I) {
+        for pair in i {
+            match pair {
+                Pair::Punctuated(a, b) => self.inner.push((a, Some(b))),
+                Pair::End(a) => self.inner.push((a, None)),
             }
         }
     }
@@ -192,47 +192,47 @@
     }
 }
 
-pub struct Elements<'a, T: 'a, P: 'a> {
+pub struct Pairs<'a, T: 'a, P: 'a> {
     inner: slice::Iter<'a, (T, Option<P>)>,
 }
 
-impl<'a, T, P> Iterator for Elements<'a, T, P> {
-    type Item = Element<&'a T, &'a P>;
+impl<'a, T, P> Iterator for Pairs<'a, T, P> {
+    type Item = Pair<&'a T, &'a P>;
 
     fn next(&mut self) -> Option<Self::Item> {
         self.inner.next().map(|pair| match pair.1 {
-            Some(ref p) => Element::Punctuated(&pair.0, p),
-            None => Element::End(&pair.0),
+            Some(ref p) => Pair::Punctuated(&pair.0, p),
+            None => Pair::End(&pair.0),
         })
     }
 }
 
-pub struct ElementsMut<'a, T: 'a, P: 'a> {
+pub struct PairsMut<'a, T: 'a, P: 'a> {
     inner: slice::IterMut<'a, (T, Option<P>)>,
 }
 
-impl<'a, T, P> Iterator for ElementsMut<'a, T, P> {
-    type Item = Element<&'a mut T, &'a mut P>;
+impl<'a, T, P> Iterator for PairsMut<'a, T, P> {
+    type Item = Pair<&'a mut T, &'a mut P>;
 
     fn next(&mut self) -> Option<Self::Item> {
         self.inner.next().map(|pair| match pair.1 {
-            Some(ref mut p) => Element::Punctuated(&mut pair.0, p),
-            None => Element::End(&mut pair.0),
+            Some(ref mut p) => Pair::Punctuated(&mut pair.0, p),
+            None => Pair::End(&mut pair.0),
         })
     }
 }
 
-pub struct IntoElements<T, P> {
+pub struct IntoPairs<T, P> {
     inner: vec::IntoIter<(T, Option<P>)>,
 }
 
-impl<T, P> Iterator for IntoElements<T, P> {
-    type Item = Element<T, P>;
+impl<T, P> Iterator for IntoPairs<T, P> {
+    type Item = Pair<T, P>;
 
     fn next(&mut self) -> Option<Self::Item> {
         self.inner.next().map(|pair| match pair.1 {
-            Some(p) => Element::Punctuated(pair.0, p),
-            None => Element::End(pair.0),
+            Some(p) => Pair::Punctuated(pair.0, p),
+            None => Pair::End(pair.0),
         })
     }
 }
@@ -273,48 +273,48 @@
     }
 }
 
-pub enum Element<T, P> {
+pub enum Pair<T, P> {
     Punctuated(T, P),
     End(T),
 }
 
-impl<T, P> Element<T, P> {
-    pub fn into_item(self) -> T {
+impl<T, P> Pair<T, P> {
+    pub fn into_value(self) -> T {
         match self {
-            Element::Punctuated(t, _) | Element::End(t) => t,
+            Pair::Punctuated(t, _) | Pair::End(t) => t,
         }
     }
 
-    pub fn item(&self) -> &T {
+    pub fn value(&self) -> &T {
         match *self {
-            Element::Punctuated(ref t, _) | Element::End(ref t) => t,
+            Pair::Punctuated(ref t, _) | Pair::End(ref t) => t,
         }
     }
 
-    pub fn item_mut(&mut self) -> &mut T {
+    pub fn value_mut(&mut self) -> &mut T {
         match *self {
-            Element::Punctuated(ref mut t, _) | Element::End(ref mut t) => t,
+            Pair::Punctuated(ref mut t, _) | Pair::End(ref mut t) => t,
         }
     }
 
     pub fn punct(&self) -> Option<&P> {
         match *self {
-            Element::Punctuated(_, ref d) => Some(d),
-            Element::End(_) => None,
+            Pair::Punctuated(_, ref d) => Some(d),
+            Pair::End(_) => None,
         }
     }
 
     pub fn new(t: T, d: Option<P>) -> Self {
         match d {
-            Some(d) => Element::Punctuated(t, d),
-            None => Element::End(t),
+            Some(d) => Pair::Punctuated(t, d),
+            None => Pair::End(t),
         }
     }
 
     pub fn into_tuple(self) -> (T, Option<P>) {
         match self {
-            Element::Punctuated(t, d) => (t, Some(d)),
-            Element::End(t) => (t, None),
+            Pair::Punctuated(t, d) => (t, Some(d)),
+            Pair::End(t) => (t, None),
         }
     }
 }
@@ -402,7 +402,7 @@
                         return parse_error();
                     }
                     input = i;
-                    res.push_item(o);
+                    res.push_value(o);
 
                     // get the separator first
                     while let Ok((s, i2)) = P::parse(input) {
@@ -416,7 +416,7 @@
                                 break;
                             }
                             res.push_punct(s);
-                            res.push_item(o3);
+                            res.push_value(o3);
                             input = i3;
                         } else {
                             break;
@@ -446,22 +446,22 @@
         P: ToTokens,
     {
         fn to_tokens(&self, tokens: &mut Tokens) {
-            tokens.append_all(self.elements())
+            tokens.append_all(self.pairs())
         }
     }
 
-    impl<T, P> ToTokens for Element<T, P>
+    impl<T, P> ToTokens for Pair<T, P>
     where
         T: ToTokens,
         P: ToTokens,
     {
         fn to_tokens(&self, tokens: &mut Tokens) {
             match *self {
-                Element::Punctuated(ref a, ref b) => {
+                Pair::Punctuated(ref a, ref b) => {
                     a.to_tokens(tokens);
                     b.to_tokens(tokens);
                 }
-                Element::End(ref a) => a.to_tokens(tokens),
+                Pair::End(ref a) => a.to_tokens(tokens),
             }
         }
     }
diff --git a/src/ty.rs b/src/ty.rs
index 503af2e..2bf359a 100644
--- a/src/ty.rs
+++ b/src/ty.rs
@@ -382,7 +382,7 @@
         named!(parse(allow_plus: bool) -> Self, do_parse!(
             qpath: qpath >>
             parenthesized: option!(cond_reduce!(
-                qpath.1.segments.last().unwrap().item().arguments.is_empty(),
+                qpath.1.segments.last().unwrap().value().arguments.is_empty(),
                 syn!(ParenthesizedGenericArguments)
             )) >>
             cond!(allow_plus, not!(punct!(+))) >>
@@ -390,7 +390,7 @@
                 let (qself, mut path) = qpath;
                 if let Some(parenthesized) = parenthesized {
                     let parenthesized = PathArguments::Parenthesized(parenthesized);
-                    path.segments.last_mut().unwrap().item_mut().arguments = parenthesized;
+                    path.segments.last_mut().unwrap().value_mut().arguments = parenthesized;
                 }
                 TypePath { qself: qself, path: path }
             })
@@ -432,7 +432,7 @@
                 |
                 syn!(TypeParamBound) => {|x| {
                     let mut bounds = Punctuated::new();
-                    bounds.push_item(x);
+                    bounds.push_value(x);
                     bounds
                 }}
             ) >>
@@ -634,13 +634,13 @@
             } else {
                 qself.position
             };
-            let mut segments = self.1.segments.elements();
+            let mut segments = self.1.segments.pairs();
             if pos > 0 {
                 TokensOrDefault(&qself.as_token).to_tokens(tokens);
                 self.1.leading_colon.to_tokens(tokens);
                 for (i, segment) in segments.by_ref().take(pos).enumerate() {
                     if i + 1 == pos {
-                        segment.item().to_tokens(tokens);
+                        segment.value().to_tokens(tokens);
                         qself.gt_token.to_tokens(tokens);
                         segment.punct().to_tokens(tokens);
                     } else {