Roughly parse 2.0 macro syntax
diff --git a/src/gen/fold.rs b/src/gen/fold.rs
index e92937f..722c1a1 100644
--- a/src/gen/fold.rs
+++ b/src/gen/fold.rs
@@ -244,6 +244,8 @@
 # [ cfg ( feature = "full" ) ]
 fn fold_item_macro(&mut self, i: ItemMacro) -> ItemMacro { fold_item_macro(self, i) }
 # [ cfg ( feature = "full" ) ]
+fn fold_item_macro2(&mut self, i: ItemMacro2) -> ItemMacro2 { fold_item_macro2(self, i) }
+# [ cfg ( feature = "full" ) ]
 fn fold_item_mod(&mut self, i: ItemMod) -> ItemMod { fold_item_mod(self, i) }
 # [ cfg ( feature = "full" ) ]
 fn fold_item_static(&mut self, i: ItemStatic) -> ItemStatic { fold_item_static(self, i) }
@@ -1700,6 +1702,11 @@
                 _visitor.fold_item_macro(_binding_0),
             )
         }
+        Macro2(_binding_0, ) => {
+            Macro2 (
+                _visitor.fold_item_macro2(_binding_0),
+            )
+        }
     }
 }
 # [ cfg ( feature = "full" ) ]
@@ -1797,6 +1804,17 @@
     }
 }
 # [ cfg ( feature = "full" ) ]
+pub fn fold_item_macro2<V: Folder + ?Sized>(_visitor: &mut V, _i: ItemMacro2) -> ItemMacro2 {
+    ItemMacro2 {
+        attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
+        vis: _visitor.fold_visibility(_i . vis),
+        macro_token: _i . macro_token,
+        ident: _i . ident,
+        args: _i . args,
+        body: _i . body,
+    }
+}
+# [ cfg ( feature = "full" ) ]
 pub fn fold_item_mod<V: Folder + ?Sized>(_visitor: &mut V, _i: ItemMod) -> ItemMod {
     ItemMod {
         attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
diff --git a/src/gen/visit.rs b/src/gen/visit.rs
index 6e167b1..06697aa 100644
--- a/src/gen/visit.rs
+++ b/src/gen/visit.rs
@@ -217,6 +217,8 @@
 # [ cfg ( feature = "full" ) ]
 fn visit_item_macro(&mut self, i: &'ast ItemMacro) { visit_item_macro(self, i) }
 # [ cfg ( feature = "full" ) ]
+fn visit_item_macro2(&mut self, i: &'ast ItemMacro2) { visit_item_macro2(self, i) }
+# [ cfg ( feature = "full" ) ]
 fn visit_item_mod(&mut self, i: &'ast ItemMod) { visit_item_mod(self, i) }
 # [ cfg ( feature = "full" ) ]
 fn visit_item_static(&mut self, i: &'ast ItemStatic) { visit_item_static(self, i) }
@@ -1309,6 +1311,9 @@
         Macro(ref _binding_0, ) => {
             _visitor.visit_item_macro(&* _binding_0);
         }
+        Macro2(ref _binding_0, ) => {
+            _visitor.visit_item_macro2(&* _binding_0);
+        }
     }
 }
 # [ cfg ( feature = "full" ) ]
@@ -1390,6 +1395,15 @@
     _visitor.visit_macro(&_i . mac);
 }
 # [ cfg ( feature = "full" ) ]
+pub fn visit_item_macro2<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ItemMacro2) {
+    for it in (_i . attrs).iter() { _visitor.visit_attribute(&it) };
+    _visitor.visit_visibility(&_i . vis);
+    // Skipped field _i . macro_token;
+    // Skipped field _i . ident;
+    // Skipped field _i . args;
+    // Skipped field _i . body;
+}
+# [ cfg ( feature = "full" ) ]
 pub fn visit_item_mod<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ItemMod) {
     for it in (_i . attrs).iter() { _visitor.visit_attribute(&it) };
     _visitor.visit_visibility(&_i . vis);
diff --git a/src/gen/visit_mut.rs b/src/gen/visit_mut.rs
index d0c5113..3a91cd4 100644
--- a/src/gen/visit_mut.rs
+++ b/src/gen/visit_mut.rs
@@ -217,6 +217,8 @@
 # [ cfg ( feature = "full" ) ]
 fn visit_item_macro_mut(&mut self, i: &mut ItemMacro) { visit_item_macro_mut(self, i) }
 # [ cfg ( feature = "full" ) ]
+fn visit_item_macro2_mut(&mut self, i: &mut ItemMacro2) { visit_item_macro2_mut(self, i) }
+# [ cfg ( feature = "full" ) ]
 fn visit_item_mod_mut(&mut self, i: &mut ItemMod) { visit_item_mod_mut(self, i) }
 # [ cfg ( feature = "full" ) ]
 fn visit_item_static_mut(&mut self, i: &mut ItemStatic) { visit_item_static_mut(self, i) }
@@ -1309,6 +1311,9 @@
         Macro(ref mut _binding_0, ) => {
             _visitor.visit_item_macro_mut(&mut * _binding_0);
         }
+        Macro2(ref mut _binding_0, ) => {
+            _visitor.visit_item_macro2_mut(&mut * _binding_0);
+        }
     }
 }
 # [ cfg ( feature = "full" ) ]
@@ -1390,6 +1395,15 @@
     _visitor.visit_macro_mut(&mut _i . mac);
 }
 # [ cfg ( feature = "full" ) ]
+pub fn visit_item_macro2_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut ItemMacro2) {
+    for mut it in (_i . attrs).iter_mut() { _visitor.visit_attribute_mut(&mut it) };
+    _visitor.visit_visibility_mut(&mut _i . vis);
+    // Skipped field _i . macro_token;
+    // Skipped field _i . ident;
+    // Skipped field _i . args;
+    // Skipped field _i . body;
+}
+# [ cfg ( feature = "full" ) ]
 pub fn visit_item_mod_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut ItemMod) {
     for mut it in (_i . attrs).iter_mut() { _visitor.visit_attribute_mut(&mut it) };
     _visitor.visit_visibility_mut(&mut _i . vis);