Type field renames
diff --git a/src/gen/fold.rs b/src/gen/fold.rs
index b052989..cf93016 100644
--- a/src/gen/fold.rs
+++ b/src/gen/fold.rs
@@ -2450,9 +2450,9 @@
 pub fn fold_type_array<V: Folder + ?Sized>(_visitor: &mut V, _i: TypeArray) -> TypeArray {
     TypeArray {
         bracket_token: Bracket(tokens_helper(_visitor, &(_i . bracket_token).0)),
-        ty: Box::new(_visitor.fold_type(* _i . ty)),
+        elem: Box::new(_visitor.fold_type(* _i . elem)),
         semi_token: Token ! [ ; ](tokens_helper(_visitor, &(_i . semi_token).0)),
-        amt: _visitor.fold_expr(_i . amt),
+        len: _visitor.fold_expr(_i . len),
     }
 }
 
@@ -2473,7 +2473,7 @@
 pub fn fold_type_group<V: Folder + ?Sized>(_visitor: &mut V, _i: TypeGroup) -> TypeGroup {
     TypeGroup {
         group_token: Group(tokens_helper(_visitor, &(_i . group_token).0)),
-        ty: Box::new(_visitor.fold_type(* _i . ty)),
+        elem: Box::new(_visitor.fold_type(* _i . elem)),
     }
 }
 
@@ -2527,7 +2527,7 @@
 pub fn fold_type_paren<V: Folder + ?Sized>(_visitor: &mut V, _i: TypeParen) -> TypeParen {
     TypeParen {
         paren_token: Paren(tokens_helper(_visitor, &(_i . paren_token).0)),
-        ty: Box::new(_visitor.fold_type(* _i . ty)),
+        elem: Box::new(_visitor.fold_type(* _i . elem)),
     }
 }
 
@@ -2542,7 +2542,7 @@
     TypePtr {
         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)),
+        elem: Box::new(_visitor.fold_mut_type(* _i . elem)),
     }
 }
 
@@ -2550,14 +2550,14 @@
     TypeReference {
         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)),
+        elem: Box::new(_visitor.fold_mut_type(* _i . elem)),
     }
 }
 
 pub fn fold_type_slice<V: Folder + ?Sized>(_visitor: &mut V, _i: TypeSlice) -> TypeSlice {
     TypeSlice {
         bracket_token: Bracket(tokens_helper(_visitor, &(_i . bracket_token).0)),
-        ty: Box::new(_visitor.fold_type(* _i . ty)),
+        elem: Box::new(_visitor.fold_type(* _i . elem)),
     }
 }
 
@@ -2571,7 +2571,7 @@
 pub fn fold_type_tuple<V: Folder + ?Sized>(_visitor: &mut V, _i: TypeTuple) -> TypeTuple {
     TypeTuple {
         paren_token: Paren(tokens_helper(_visitor, &(_i . paren_token).0)),
-        tys: FoldHelper::lift(_i . tys, |it| { _visitor.fold_type(it) }),
+        elems: FoldHelper::lift(_i . elems, |it| { _visitor.fold_type(it) }),
     }
 }
 
diff --git a/src/gen/visit.rs b/src/gen/visit.rs
index e06c758..4991eb2 100644
--- a/src/gen/visit.rs
+++ b/src/gen/visit.rs
@@ -1904,9 +1904,9 @@
 
 pub fn visit_type_array<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast TypeArray) {
     tokens_helper(_visitor, &(& _i . bracket_token).0);
-    _visitor.visit_type(& * _i . ty);
+    _visitor.visit_type(& * _i . elem);
     tokens_helper(_visitor, &(& _i . semi_token).0);
-    _visitor.visit_expr(& _i . amt);
+    _visitor.visit_expr(& _i . len);
 }
 
 pub fn visit_type_bare_fn<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast TypeBareFn) {
@@ -1921,7 +1921,7 @@
 
 pub fn visit_type_group<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast TypeGroup) {
     tokens_helper(_visitor, &(& _i . group_token).0);
-    _visitor.visit_type(& * _i . ty);
+    _visitor.visit_type(& * _i . elem);
 }
 
 pub fn visit_type_impl_trait<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast TypeImplTrait) {
@@ -1961,7 +1961,7 @@
 
 pub fn visit_type_paren<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast TypeParen) {
     tokens_helper(_visitor, &(& _i . paren_token).0);
-    _visitor.visit_type(& * _i . ty);
+    _visitor.visit_type(& * _i . elem);
 }
 
 pub fn visit_type_path<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast TypePath) {
@@ -1972,18 +1972,18 @@
 pub fn visit_type_ptr<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast TypePtr) {
     tokens_helper(_visitor, &(& _i . star_token).0);
     if let Some(ref it) = _i . const_token { tokens_helper(_visitor, &(it).0) };
-    _visitor.visit_mut_type(& * _i . ty);
+    _visitor.visit_mut_type(& * _i . elem);
 }
 
 pub fn visit_type_reference<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast TypeReference) {
     tokens_helper(_visitor, &(& _i . and_token).0);
     if let Some(ref it) = _i . lifetime { _visitor.visit_lifetime(it) };
-    _visitor.visit_mut_type(& * _i . ty);
+    _visitor.visit_mut_type(& * _i . elem);
 }
 
 pub fn visit_type_slice<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast TypeSlice) {
     tokens_helper(_visitor, &(& _i . bracket_token).0);
-    _visitor.visit_type(& * _i . ty);
+    _visitor.visit_type(& * _i . elem);
 }
 
 pub fn visit_type_trait_object<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast TypeTraitObject) {
@@ -1993,7 +1993,7 @@
 
 pub fn visit_type_tuple<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast TypeTuple) {
     tokens_helper(_visitor, &(& _i . paren_token).0);
-    for el in & _i . tys { let it = el.item(); _visitor.visit_type(it) };
+    for el in & _i . elems { let it = el.item(); _visitor.visit_type(it) };
 }
 
 pub fn visit_un_op<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast UnOp) {
diff --git a/src/gen/visit_mut.rs b/src/gen/visit_mut.rs
index 34543d7..c20a220 100644
--- a/src/gen/visit_mut.rs
+++ b/src/gen/visit_mut.rs
@@ -1904,9 +1904,9 @@
 
 pub fn visit_type_array_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut TypeArray) {
     tokens_helper(_visitor, &mut (& mut _i . bracket_token).0);
-    _visitor.visit_type_mut(& mut * _i . ty);
+    _visitor.visit_type_mut(& mut * _i . elem);
     tokens_helper(_visitor, &mut (& mut _i . semi_token).0);
-    _visitor.visit_expr_mut(& mut _i . amt);
+    _visitor.visit_expr_mut(& mut _i . len);
 }
 
 pub fn visit_type_bare_fn_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut TypeBareFn) {
@@ -1921,7 +1921,7 @@
 
 pub fn visit_type_group_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut TypeGroup) {
     tokens_helper(_visitor, &mut (& mut _i . group_token).0);
-    _visitor.visit_type_mut(& mut * _i . ty);
+    _visitor.visit_type_mut(& mut * _i . elem);
 }
 
 pub fn visit_type_impl_trait_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut TypeImplTrait) {
@@ -1961,7 +1961,7 @@
 
 pub fn visit_type_paren_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut TypeParen) {
     tokens_helper(_visitor, &mut (& mut _i . paren_token).0);
-    _visitor.visit_type_mut(& mut * _i . ty);
+    _visitor.visit_type_mut(& mut * _i . elem);
 }
 
 pub fn visit_type_path_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut TypePath) {
@@ -1972,18 +1972,18 @@
 pub fn visit_type_ptr_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut TypePtr) {
     tokens_helper(_visitor, &mut (& mut _i . star_token).0);
     if let Some(ref mut it) = _i . const_token { tokens_helper(_visitor, &mut (it).0) };
-    _visitor.visit_mut_type_mut(& mut * _i . ty);
+    _visitor.visit_mut_type_mut(& mut * _i . elem);
 }
 
 pub fn visit_type_reference_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut TypeReference) {
     tokens_helper(_visitor, &mut (& mut _i . and_token).0);
     if let Some(ref mut it) = _i . lifetime { _visitor.visit_lifetime_mut(it) };
-    _visitor.visit_mut_type_mut(& mut * _i . ty);
+    _visitor.visit_mut_type_mut(& mut * _i . elem);
 }
 
 pub fn visit_type_slice_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut TypeSlice) {
     tokens_helper(_visitor, &mut (& mut _i . bracket_token).0);
-    _visitor.visit_type_mut(& mut * _i . ty);
+    _visitor.visit_type_mut(& mut * _i . elem);
 }
 
 pub fn visit_type_trait_object_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut TypeTraitObject) {
@@ -1993,7 +1993,7 @@
 
 pub fn visit_type_tuple_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut TypeTuple) {
     tokens_helper(_visitor, &mut (& mut _i . paren_token).0);
-    for mut el in & mut _i . tys { let it = el.item_mut(); _visitor.visit_type_mut(it) };
+    for mut el in & mut _i . elems { let it = el.item_mut(); _visitor.visit_type_mut(it) };
 }
 
 pub fn visit_un_op_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut UnOp) {
diff --git a/src/ty.rs b/src/ty.rs
index 01fd7bc..ed18f25 100644
--- a/src/ty.rs
+++ b/src/ty.rs
@@ -7,26 +7,26 @@
         /// A variable-length array (`[T]`)
         pub Slice(TypeSlice {
             pub bracket_token: token::Bracket,
-            pub ty: Box<Type>,
+            pub elem: Box<Type>,
         }),
         /// A fixed length array (`[T; n]`)
         pub Array(TypeArray {
             pub bracket_token: token::Bracket,
-            pub ty: Box<Type>,
+            pub elem: Box<Type>,
             pub semi_token: Token![;],
-            pub amt: Expr,
+            pub len: Expr,
         }),
         /// A raw pointer (`*const T` or `*mut T`)
         pub Ptr(TypePtr {
             pub star_token: Token![*],
             pub const_token: Option<Token![const]>,
-            pub ty: Box<MutType>,
+            pub elem: Box<MutType>,
         }),
         /// A reference (`&'a T` or `&'a mut T`)
         pub Reference(TypeReference {
             pub and_token: Token![&],
             pub lifetime: Option<Lifetime>,
-            pub ty: Box<MutType>,
+            pub elem: Box<MutType>,
         }),
         /// A bare function (e.g. `fn(usize) -> bool`)
         pub BareFn(TypeBareFn {
@@ -39,7 +39,7 @@
         /// A tuple (`(A, B, C, D, ...)`)
         pub Tuple(TypeTuple {
             pub paren_token: token::Paren,
-            pub tys: Delimited<Type, Token![,]>,
+            pub elems: Delimited<Type, Token![,]>,
         }),
         /// A path (`module::module::...::Type`), optionally
         /// "qualified", e.g. `<Vec<T> as SomeTrait>::SomeType`.
@@ -64,12 +64,12 @@
         /// No-op; kept solely so that we can pretty-print faithfully
         pub Paren(TypeParen {
             pub paren_token: token::Paren,
-            pub ty: Box<Type>,
+            pub elem: Box<Type>,
         }),
         /// No-op: kept solely so that we can pretty-print faithfully
         pub Group(TypeGroup {
             pub group_token: token::Group,
-            pub ty: Box<Type>,
+            pub elem: Box<Type>,
         }),
         /// TypeKind::Infer means the type should be inferred instead of it having been
         /// specified. This can appear anywhere in a type.
@@ -386,7 +386,7 @@
         named!(parse -> Self, map!(
             brackets!(syn!(Type)),
             |(ty, b)| TypeSlice {
-                ty: Box::new(ty),
+                elem: Box::new(ty),
                 bracket_token: b,
             }
         ));
@@ -402,8 +402,8 @@
             )),
             |((elem, semi, len), brackets)| {
                 TypeArray {
-                    ty: Box::new(elem),
-                    amt: len,
+                    elem: Box::new(elem),
+                    len: len,
                     bracket_token: brackets,
                     semi_token: semi,
                 }
@@ -423,7 +423,7 @@
             (TypePtr {
                 const_token: mutability.1,
                 star_token: star,
-                ty: Box::new(MutType {
+                elem: Box::new(MutType {
                     ty: target,
                     mutability: mutability.0,
                 }),
@@ -440,7 +440,7 @@
             target: call!(Type::without_plus) >>
             (TypeReference {
                 lifetime: life,
-                ty: Box::new(MutType {
+                elem: Box::new(MutType {
                     ty: target,
                     mutability: mutability,
                 }),
@@ -495,7 +495,7 @@
         named!(parse -> Self, do_parse!(
             data: parens!(call!(Delimited::parse_terminated)) >>
             (TypeTuple {
-                tys: data.0,
+                elems: data.0,
                 paren_token: data.1,
             })
         ));
@@ -620,7 +620,7 @@
             data: grouped!(syn!(Type)) >>
             (TypeGroup {
                 group_token: data.1,
-                ty: Box::new(data.0),
+                elem: Box::new(data.0),
             })
         ));
     }
@@ -630,7 +630,7 @@
             data: parens!(syn!(Type)) >>
             (TypeParen {
                 paren_token: data.1,
-                ty: Box::new(data.0),
+                elem: Box::new(data.0),
             })
         ));
     }
@@ -817,7 +817,7 @@
     impl ToTokens for TypeSlice {
         fn to_tokens(&self, tokens: &mut Tokens) {
             self.bracket_token.surround(tokens, |tokens| {
-                self.ty.to_tokens(tokens);
+                self.elem.to_tokens(tokens);
             });
         }
     }
@@ -825,9 +825,9 @@
     impl ToTokens for TypeArray {
         fn to_tokens(&self, tokens: &mut Tokens) {
             self.bracket_token.surround(tokens, |tokens| {
-                self.ty.to_tokens(tokens);
+                self.elem.to_tokens(tokens);
                 self.semi_token.to_tokens(tokens);
-                self.amt.to_tokens(tokens);
+                self.len.to_tokens(tokens);
             });
         }
     }
@@ -835,13 +835,13 @@
     impl ToTokens for TypePtr {
         fn to_tokens(&self, tokens: &mut Tokens) {
             self.star_token.to_tokens(tokens);
-            match self.ty.mutability {
+            match self.elem.mutability {
                 Some(ref tok) => tok.to_tokens(tokens),
                 None => {
                     TokensOrDefault(&self.const_token).to_tokens(tokens);
                 }
             }
-            self.ty.ty.to_tokens(tokens);
+            self.elem.ty.to_tokens(tokens);
         }
     }
 
@@ -849,8 +849,8 @@
         fn to_tokens(&self, tokens: &mut Tokens) {
             self.and_token.to_tokens(tokens);
             self.lifetime.to_tokens(tokens);
-            self.ty.mutability.to_tokens(tokens);
-            self.ty.ty.to_tokens(tokens);
+            self.elem.mutability.to_tokens(tokens);
+            self.elem.ty.to_tokens(tokens);
         }
     }
 
@@ -869,7 +869,7 @@
     impl ToTokens for TypeTuple {
         fn to_tokens(&self, tokens: &mut Tokens) {
             self.paren_token.surround(tokens, |tokens| {
-                self.tys.to_tokens(tokens);
+                self.elems.to_tokens(tokens);
             })
         }
     }
@@ -935,7 +935,7 @@
     impl ToTokens for TypeGroup {
         fn to_tokens(&self, tokens: &mut Tokens) {
             self.group_token.surround(tokens, |tokens| {
-                self.ty.to_tokens(tokens);
+                self.elem.to_tokens(tokens);
             });
         }
     }
@@ -943,7 +943,7 @@
     impl ToTokens for TypeParen {
         fn to_tokens(&self, tokens: &mut Tokens) {
             self.paren_token.surround(tokens, |tokens| {
-                self.ty.to_tokens(tokens);
+                self.elem.to_tokens(tokens);
             });
         }
     }