Redesign MetaItem naming
diff --git a/src/attr.rs b/src/attr.rs
index 393ffc8..d2ca870 100644
--- a/src/attr.rs
+++ b/src/attr.rs
@@ -94,8 +94,8 @@
 }
 
 impl Attribute {
-    /// Parses the tokens after the path as a [`MetaItem`](enum.MetaItem.html) if possible.
-    pub fn meta_item(&self) -> Option<MetaItem> {
+    /// Parses the tokens after the path as a [`Meta`](enum.Meta.html) if possible.
+    pub fn interpret_meta(&self) -> Option<Meta> {
         let name = if self.path.segments.len() == 1 {
             &self.path.segments.first().unwrap().value().ident
         } else {
@@ -103,7 +103,7 @@
         };
 
         if self.tts.is_empty() {
-            return Some(MetaItem::Term(*name));
+            return Some(Meta::Word(*name));
         }
 
         let tts = self.tts.clone().into_iter().collect::<Vec<_>>();
@@ -112,7 +112,7 @@
             if let TokenNode::Group(Delimiter::Parenthesis, ref ts) = tts[0].kind {
                 let tokens = ts.clone().into_iter().collect::<Vec<_>>();
                 if let Some(nested_meta_items) = list_of_nested_meta_items_from_tokens(&tokens) {
-                    return Some(MetaItem::List(MetaItemList {
+                    return Some(Meta::List(MetaList {
                         paren_token: token::Paren(tts[0].span),
                         ident: *name,
                         nested: nested_meta_items,
@@ -124,7 +124,7 @@
         if tts.len() == 2 {
             if let TokenNode::Op('=', Spacing::Alone) = tts[0].kind {
                 if let TokenNode::Literal(ref lit) = tts[1].kind {
-                    return Some(MetaItem::NameValue(MetaNameValue {
+                    return Some(Meta::NameValue(MetaNameValue {
                         ident: *name,
                         eq_token: Token![=]([tts[0].span]),
                         lit: Lit::new(lit.clone(), tts[1].span),
@@ -137,13 +137,13 @@
     }
 }
 
-fn nested_meta_item_from_tokens(tts: &[TokenTree]) -> Option<(NestedMetaItem, &[TokenTree])> {
+fn nested_meta_item_from_tokens(tts: &[TokenTree]) -> Option<(NestedMeta, &[TokenTree])> {
     assert!(!tts.is_empty());
 
     match tts[0].kind {
         TokenNode::Literal(ref lit) => {
             let lit = Lit::new(lit.clone(), tts[0].span);
-            Some((NestedMetaItem::Literal(lit), &tts[1..]))
+            Some((NestedMeta::Literal(lit), &tts[1..]))
         }
 
         TokenNode::Term(sym) => {
@@ -156,7 +156,7 @@
                             eq_token: Token![=]([tts[1].span]),
                             lit: Lit::new(lit.clone(), tts[2].span),
                         };
-                        return Some((MetaItem::NameValue(pair).into(), &tts[3..]));
+                        return Some((Meta::NameValue(pair).into(), &tts[3..]));
                     }
                 }
             }
@@ -166,12 +166,12 @@
                     let inner_tts = inner_tts.clone().into_iter().collect::<Vec<_>>();
                     return match list_of_nested_meta_items_from_tokens(&inner_tts) {
                         Some(nested_meta_items) => {
-                            let list = MetaItemList {
+                            let list = MetaList {
                                 ident: ident,
                                 paren_token: token::Paren(tts[1].span),
                                 nested: nested_meta_items,
                             };
-                            Some((MetaItem::List(list).into(), &tts[2..]))
+                            Some((Meta::List(list).into(), &tts[2..]))
                         }
 
                         None => None,
@@ -179,7 +179,7 @@
                 }
             }
 
-            Some((MetaItem::Term(ident).into(), &tts[1..]))
+            Some((Meta::Word(ident).into(), &tts[1..]))
         }
 
         _ => None,
@@ -188,7 +188,7 @@
 
 fn list_of_nested_meta_items_from_tokens(
     mut tts: &[TokenTree],
-) -> Option<Punctuated<NestedMetaItem, Token![,]>> {
+) -> Option<Punctuated<NestedMeta, Token![,]>> {
     let mut nested_meta_items = Punctuated::new();
     let mut first = true;
 
@@ -246,16 +246,16 @@
     /// A compile-time attribute item.
     ///
     /// E.g. `#[test]`, `#[derive(..)]` or `#[feature = "foo"]`
-    pub enum MetaItem {
+    pub enum Meta {
         /// Term meta item.
         ///
         /// E.g. `test` as in `#[test]`
-        pub Term(Ident),
+        pub Word(Ident),
 
         /// List meta item.
         ///
         /// E.g. `derive(..)` as in `#[derive(..)]`
-        pub List(MetaItemList {
+        pub List(MetaList {
             /// Name of this attribute.
             ///
             /// E.g. `derive` in `#[derive(..)]`
@@ -266,7 +266,7 @@
             /// Arguments to this attribute
             ///
             /// E.g. `..` in `#[derive(..)]`
-            pub nested: Punctuated<NestedMetaItem, Token![,]>,
+            pub nested: Punctuated<NestedMeta, Token![,]>,
         }),
 
         /// Name-value meta item.
@@ -288,16 +288,16 @@
     }
 }
 
-impl MetaItem {
+impl Meta {
     /// Name of the item.
     ///
     /// E.g. `test` as in `#[test]`, `derive` as in `#[derive(..)]`, and
     /// `feature` as in `#[feature = "foo"]`.
     pub fn name(&self) -> &str {
         match *self {
-            MetaItem::Term(ref name) => name.as_ref(),
-            MetaItem::NameValue(ref pair) => pair.ident.as_ref(),
-            MetaItem::List(ref list) => list.ident.as_ref(),
+            Meta::Word(ref name) => name.as_ref(),
+            Meta::NameValue(ref pair) => pair.ident.as_ref(),
+            Meta::List(ref list) => list.ident.as_ref(),
         }
     }
 }
@@ -306,11 +306,11 @@
     /// Possible values inside of compile-time attribute lists.
     ///
     /// E.g. the '..' in `#[name(..)]`.
-    pub enum NestedMetaItem {
-        /// A full `MetaItem`.
+    pub enum NestedMeta {
+        /// A full `Meta`.
         ///
-        /// E.g. `Copy` in `#[derive(Copy)]` would be a `MetaItem::Term(Ident::from("Copy"))`.
-        pub MetaItem(MetaItem),
+        /// E.g. `Copy` in `#[derive(Copy)]` would be a `Meta::Word(Ident::from("Copy"))`.
+        pub Meta(Meta),
 
         /// A Rust literal.
         ///
@@ -491,7 +491,7 @@
         fn to_tokens(&self, tokens: &mut Tokens) {
             // If this was a sugared doc, emit it in its original form instead of `#[doc = "..."]`
             if self.is_sugared_doc {
-                if let Some(MetaItem::NameValue(ref pair)) = self.meta_item() {
+                if let Some(Meta::NameValue(ref pair)) = self.interpret_meta() {
                     if pair.ident == "doc" {
                         if let Lit::Str(ref comment) = pair.lit {
                             tokens.append(TokenTree {
@@ -515,7 +515,7 @@
         }
     }
 
-    impl ToTokens for MetaItemList {
+    impl ToTokens for MetaList {
         fn to_tokens(&self, tokens: &mut Tokens) {
             self.ident.to_tokens(tokens);
             self.paren_token.surround(tokens, |tokens| {
diff --git a/src/gen/fold.rs b/src/gen/fold.rs
index 190e3b6..6c1d54b 100644
--- a/src/gen/fold.rs
+++ b/src/gen/fold.rs
@@ -272,9 +272,9 @@
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 fn fold_member(&mut self, i: Member) -> Member { fold_member(self, i) }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
-fn fold_meta_item(&mut self, i: MetaItem) -> MetaItem { fold_meta_item(self, i) }
+fn fold_meta(&mut self, i: Meta) -> Meta { fold_meta(self, i) }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
-fn fold_meta_item_list(&mut self, i: MetaItemList) -> MetaItemList { fold_meta_item_list(self, i) }
+fn fold_meta_list(&mut self, i: MetaList) -> MetaList { fold_meta_list(self, i) }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 fn fold_meta_name_value(&mut self, i: MetaNameValue) -> MetaNameValue { fold_meta_name_value(self, i) }
 # [ cfg ( feature = "full" ) ]
@@ -282,7 +282,7 @@
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ] # [ cfg ( feature = "full" ) ]
 fn fold_method_turbofish(&mut self, i: MethodTurbofish) -> MethodTurbofish { fold_method_turbofish(self, i) }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
-fn fold_nested_meta_item(&mut self, i: NestedMetaItem) -> NestedMetaItem { fold_nested_meta_item(self, i) }
+fn fold_nested_meta(&mut self, i: NestedMeta) -> NestedMeta { fold_nested_meta(self, i) }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 fn fold_parenthesized_generic_arguments(&mut self, i: ParenthesizedGenericArguments) -> ParenthesizedGenericArguments { fold_parenthesized_generic_arguments(self, i) }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ] # [ cfg ( feature = "full" ) ]
@@ -2101,31 +2101,31 @@
     }
 }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
-pub fn fold_meta_item<V: Fold + ?Sized>(_visitor: &mut V, _i: MetaItem) -> MetaItem {
+pub fn fold_meta<V: Fold + ?Sized>(_visitor: &mut V, _i: Meta) -> Meta {
     match _i {
-        MetaItem::Term(_binding_0, ) => {
-            MetaItem::Term (
+        Meta::Word(_binding_0, ) => {
+            Meta::Word (
                 _visitor.fold_ident(_binding_0),
             )
         }
-        MetaItem::List(_binding_0, ) => {
-            MetaItem::List (
-                _visitor.fold_meta_item_list(_binding_0),
+        Meta::List(_binding_0, ) => {
+            Meta::List (
+                _visitor.fold_meta_list(_binding_0),
             )
         }
-        MetaItem::NameValue(_binding_0, ) => {
-            MetaItem::NameValue (
+        Meta::NameValue(_binding_0, ) => {
+            Meta::NameValue (
                 _visitor.fold_meta_name_value(_binding_0),
             )
         }
     }
 }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
-pub fn fold_meta_item_list<V: Fold + ?Sized>(_visitor: &mut V, _i: MetaItemList) -> MetaItemList {
-    MetaItemList {
+pub fn fold_meta_list<V: Fold + ?Sized>(_visitor: &mut V, _i: MetaList) -> MetaList {
+    MetaList {
         ident: _visitor.fold_ident(_i . ident),
         paren_token: Paren(tokens_helper(_visitor, &(_i . paren_token).0)),
-        nested: FoldHelper::lift(_i . nested, |it| { _visitor.fold_nested_meta_item(it) }),
+        nested: FoldHelper::lift(_i . nested, |it| { _visitor.fold_nested_meta(it) }),
     }
 }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
@@ -2156,15 +2156,15 @@
     }
 }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
-pub fn fold_nested_meta_item<V: Fold + ?Sized>(_visitor: &mut V, _i: NestedMetaItem) -> NestedMetaItem {
+pub fn fold_nested_meta<V: Fold + ?Sized>(_visitor: &mut V, _i: NestedMeta) -> NestedMeta {
     match _i {
-        NestedMetaItem::MetaItem(_binding_0, ) => {
-            NestedMetaItem::MetaItem (
-                _visitor.fold_meta_item(_binding_0),
+        NestedMeta::Meta(_binding_0, ) => {
+            NestedMeta::Meta (
+                _visitor.fold_meta(_binding_0),
             )
         }
-        NestedMetaItem::Literal(_binding_0, ) => {
-            NestedMetaItem::Literal (
+        NestedMeta::Literal(_binding_0, ) => {
+            NestedMeta::Literal (
                 _visitor.fold_lit(_binding_0),
             )
         }
diff --git a/src/gen/visit.rs b/src/gen/visit.rs
index 5f0cb02..3ca8e38 100644
--- a/src/gen/visit.rs
+++ b/src/gen/visit.rs
@@ -270,9 +270,9 @@
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 fn visit_member(&mut self, i: &'ast Member) { visit_member(self, i) }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
-fn visit_meta_item(&mut self, i: &'ast MetaItem) { visit_meta_item(self, i) }
+fn visit_meta(&mut self, i: &'ast Meta) { visit_meta(self, i) }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
-fn visit_meta_item_list(&mut self, i: &'ast MetaItemList) { visit_meta_item_list(self, i) }
+fn visit_meta_list(&mut self, i: &'ast MetaList) { visit_meta_list(self, i) }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 fn visit_meta_name_value(&mut self, i: &'ast MetaNameValue) { visit_meta_name_value(self, i) }
 # [ cfg ( feature = "full" ) ]
@@ -280,7 +280,7 @@
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ] # [ cfg ( feature = "full" ) ]
 fn visit_method_turbofish(&mut self, i: &'ast MethodTurbofish) { visit_method_turbofish(self, i) }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
-fn visit_nested_meta_item(&mut self, i: &'ast NestedMetaItem) { visit_nested_meta_item(self, i) }
+fn visit_nested_meta(&mut self, i: &'ast NestedMeta) { visit_nested_meta(self, i) }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 fn visit_parenthesized_generic_arguments(&mut self, i: &'ast ParenthesizedGenericArguments) { visit_parenthesized_generic_arguments(self, i) }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ] # [ cfg ( feature = "full" ) ]
@@ -1666,24 +1666,24 @@
     }
 }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
-pub fn visit_meta_item<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast MetaItem) {
+pub fn visit_meta<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast Meta) {
     match *_i {
-        MetaItem::Term(ref _binding_0, ) => {
+        Meta::Word(ref _binding_0, ) => {
             _visitor.visit_ident(_binding_0);
         }
-        MetaItem::List(ref _binding_0, ) => {
-            _visitor.visit_meta_item_list(_binding_0);
+        Meta::List(ref _binding_0, ) => {
+            _visitor.visit_meta_list(_binding_0);
         }
-        MetaItem::NameValue(ref _binding_0, ) => {
+        Meta::NameValue(ref _binding_0, ) => {
             _visitor.visit_meta_name_value(_binding_0);
         }
     }
 }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
-pub fn visit_meta_item_list<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast MetaItemList) {
+pub fn visit_meta_list<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast MetaList) {
     _visitor.visit_ident(& _i . ident);
     tokens_helper(_visitor, &(& _i . paren_token).0);
-    for el in Punctuated::pairs(& _i . nested) { let it = el.value(); _visitor.visit_nested_meta_item(it) };
+    for el in Punctuated::pairs(& _i . nested) { let it = el.value(); _visitor.visit_nested_meta(it) };
 }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 pub fn visit_meta_name_value<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast MetaNameValue) {
@@ -1707,12 +1707,12 @@
     tokens_helper(_visitor, &(& _i . gt_token).0);
 }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
-pub fn visit_nested_meta_item<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast NestedMetaItem) {
+pub fn visit_nested_meta<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast NestedMeta) {
     match *_i {
-        NestedMetaItem::MetaItem(ref _binding_0, ) => {
-            _visitor.visit_meta_item(_binding_0);
+        NestedMeta::Meta(ref _binding_0, ) => {
+            _visitor.visit_meta(_binding_0);
         }
-        NestedMetaItem::Literal(ref _binding_0, ) => {
+        NestedMeta::Literal(ref _binding_0, ) => {
             _visitor.visit_lit(_binding_0);
         }
     }
diff --git a/src/gen/visit_mut.rs b/src/gen/visit_mut.rs
index 96f3338..e11e97d 100644
--- a/src/gen/visit_mut.rs
+++ b/src/gen/visit_mut.rs
@@ -271,9 +271,9 @@
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 fn visit_member_mut(&mut self, i: &mut Member) { visit_member_mut(self, i) }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
-fn visit_meta_item_mut(&mut self, i: &mut MetaItem) { visit_meta_item_mut(self, i) }
+fn visit_meta_mut(&mut self, i: &mut Meta) { visit_meta_mut(self, i) }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
-fn visit_meta_item_list_mut(&mut self, i: &mut MetaItemList) { visit_meta_item_list_mut(self, i) }
+fn visit_meta_list_mut(&mut self, i: &mut MetaList) { visit_meta_list_mut(self, i) }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 fn visit_meta_name_value_mut(&mut self, i: &mut MetaNameValue) { visit_meta_name_value_mut(self, i) }
 # [ cfg ( feature = "full" ) ]
@@ -281,7 +281,7 @@
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ] # [ cfg ( feature = "full" ) ]
 fn visit_method_turbofish_mut(&mut self, i: &mut MethodTurbofish) { visit_method_turbofish_mut(self, i) }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
-fn visit_nested_meta_item_mut(&mut self, i: &mut NestedMetaItem) { visit_nested_meta_item_mut(self, i) }
+fn visit_nested_meta_mut(&mut self, i: &mut NestedMeta) { visit_nested_meta_mut(self, i) }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 fn visit_parenthesized_generic_arguments_mut(&mut self, i: &mut ParenthesizedGenericArguments) { visit_parenthesized_generic_arguments_mut(self, i) }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ] # [ cfg ( feature = "full" ) ]
@@ -1667,24 +1667,24 @@
     }
 }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
-pub fn visit_meta_item_mut<V: VisitMut + ?Sized>(_visitor: &mut V, _i: &mut MetaItem) {
+pub fn visit_meta_mut<V: VisitMut + ?Sized>(_visitor: &mut V, _i: &mut Meta) {
     match *_i {
-        MetaItem::Term(ref mut _binding_0, ) => {
+        Meta::Word(ref mut _binding_0, ) => {
             _visitor.visit_ident_mut(_binding_0);
         }
-        MetaItem::List(ref mut _binding_0, ) => {
-            _visitor.visit_meta_item_list_mut(_binding_0);
+        Meta::List(ref mut _binding_0, ) => {
+            _visitor.visit_meta_list_mut(_binding_0);
         }
-        MetaItem::NameValue(ref mut _binding_0, ) => {
+        Meta::NameValue(ref mut _binding_0, ) => {
             _visitor.visit_meta_name_value_mut(_binding_0);
         }
     }
 }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
-pub fn visit_meta_item_list_mut<V: VisitMut + ?Sized>(_visitor: &mut V, _i: &mut MetaItemList) {
+pub fn visit_meta_list_mut<V: VisitMut + ?Sized>(_visitor: &mut V, _i: &mut MetaList) {
     _visitor.visit_ident_mut(& mut _i . ident);
     tokens_helper(_visitor, &mut (& mut _i . paren_token).0);
-    for mut el in Punctuated::pairs_mut(& mut _i . nested) { let it = el.value_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_mut(it) };
 }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 pub fn visit_meta_name_value_mut<V: VisitMut + ?Sized>(_visitor: &mut V, _i: &mut MetaNameValue) {
@@ -1708,12 +1708,12 @@
     tokens_helper(_visitor, &mut (& mut _i . gt_token).0);
 }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
-pub fn visit_nested_meta_item_mut<V: VisitMut + ?Sized>(_visitor: &mut V, _i: &mut NestedMetaItem) {
+pub fn visit_nested_meta_mut<V: VisitMut + ?Sized>(_visitor: &mut V, _i: &mut NestedMeta) {
     match *_i {
-        NestedMetaItem::MetaItem(ref mut _binding_0, ) => {
-            _visitor.visit_meta_item_mut(_binding_0);
+        NestedMeta::Meta(ref mut _binding_0, ) => {
+            _visitor.visit_meta_mut(_binding_0);
         }
-        NestedMetaItem::Literal(ref mut _binding_0, ) => {
+        NestedMeta::Literal(ref mut _binding_0, ) => {
             _visitor.visit_lit_mut(_binding_0);
         }
     }
diff --git a/src/lib.rs b/src/lib.rs
index b2075a5..948dd3e 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -281,7 +281,7 @@
 #[cfg(any(feature = "full", feature = "derive"))]
 mod attr;
 #[cfg(any(feature = "full", feature = "derive"))]
-pub use attr::{AttrStyle, Attribute, MetaItem, MetaItemList, MetaNameValue, NestedMetaItem};
+pub use attr::{AttrStyle, Attribute, Meta, MetaList, MetaNameValue, NestedMeta};
 
 #[cfg(any(feature = "full", feature = "derive"))]
 mod data;