Extern types
diff --git a/src/gen/fold.rs b/src/gen/fold.rs
index 4ab418a..c12d2d2 100644
--- a/src/gen/fold.rs
+++ b/src/gen/fold.rs
@@ -199,6 +199,8 @@
 fn fold_foreign_item_fn(&mut self, i: ForeignItemFn) -> ForeignItemFn { fold_foreign_item_fn(self, i) }
 # [ cfg ( feature = "full" ) ]
 fn fold_foreign_item_static(&mut self, i: ForeignItemStatic) -> ForeignItemStatic { fold_foreign_item_static(self, i) }
+# [ cfg ( feature = "full" ) ]
+fn fold_foreign_item_type(&mut self, i: ForeignItemType) -> ForeignItemType { fold_foreign_item_type(self, i) }
 
 fn fold_generics(&mut self, i: Generics) -> Generics { fold_generics(self, i) }
 # [ cfg ( feature = "full" ) ]
@@ -1394,6 +1396,11 @@
                 _visitor.fold_foreign_item_static(_binding_0),
             )
         }
+        Type(_binding_0, ) => {
+            Type (
+                _visitor.fold_foreign_item_type(_binding_0),
+            )
+        }
     }
 }
 # [ cfg ( feature = "full" ) ]
@@ -1419,6 +1426,16 @@
         semi_token: _i . semi_token,
     }
 }
+# [ cfg ( feature = "full" ) ]
+pub fn fold_foreign_item_type<V: Folder + ?Sized>(_visitor: &mut V, _i: ForeignItemType) -> ForeignItemType {
+    ForeignItemType {
+        attrs: FoldHelper::lift(_i . attrs, |it| { _visitor.fold_attribute(it) }),
+        vis: _visitor.fold_visibility(_i . vis),
+        type_token: _i . type_token,
+        ident: _i . ident,
+        semi_token: _i . semi_token,
+    }
+}
 
 pub fn fold_generics<V: Folder + ?Sized>(_visitor: &mut V, _i: Generics) -> Generics {
     Generics {
diff --git a/src/gen/visit.rs b/src/gen/visit.rs
index 3e52f7c..8b6b816 100644
--- a/src/gen/visit.rs
+++ b/src/gen/visit.rs
@@ -172,6 +172,8 @@
 fn visit_foreign_item_fn(&mut self, i: &ForeignItemFn) { visit_foreign_item_fn(self, i) }
 # [ cfg ( feature = "full" ) ]
 fn visit_foreign_item_static(&mut self, i: &ForeignItemStatic) { visit_foreign_item_static(self, i) }
+# [ cfg ( feature = "full" ) ]
+fn visit_foreign_item_type(&mut self, i: &ForeignItemType) { visit_foreign_item_type(self, i) }
 
 fn visit_generics(&mut self, i: &Generics) { visit_generics(self, i) }
 # [ cfg ( feature = "full" ) ]
@@ -1085,6 +1087,9 @@
         Static(ref _binding_0, ) => {
             _visitor.visit_foreign_item_static(&* _binding_0);
         }
+        Type(ref _binding_0, ) => {
+            _visitor.visit_foreign_item_type(&* _binding_0);
+        }
     }
 }
 # [ cfg ( feature = "full" ) ]
@@ -1106,6 +1111,14 @@
     _visitor.visit_type(&_i . ty);
     // Skipped field _i . semi_token;
 }
+# [ cfg ( feature = "full" ) ]
+pub fn visit_foreign_item_type<V: Visitor + ?Sized>(_visitor: &mut V, _i: &ForeignItemType) {
+    for it in (_i . attrs).iter() { _visitor.visit_attribute(&it) };
+    _visitor.visit_visibility(&_i . vis);
+    // Skipped field _i . type_token;
+    // Skipped field _i . ident;
+    // Skipped field _i . semi_token;
+}
 
 pub fn visit_generics<V: Visitor + ?Sized>(_visitor: &mut V, _i: &Generics) {
     // Skipped field _i . lt_token;
diff --git a/src/gen/visit_mut.rs b/src/gen/visit_mut.rs
index e35470a..42462d4 100644
--- a/src/gen/visit_mut.rs
+++ b/src/gen/visit_mut.rs
@@ -172,6 +172,8 @@
 fn visit_foreign_item_fn_mut(&mut self, i: &mut ForeignItemFn) { visit_foreign_item_fn_mut(self, i) }
 # [ cfg ( feature = "full" ) ]
 fn visit_foreign_item_static_mut(&mut self, i: &mut ForeignItemStatic) { visit_foreign_item_static_mut(self, i) }
+# [ cfg ( feature = "full" ) ]
+fn visit_foreign_item_type_mut(&mut self, i: &mut ForeignItemType) { visit_foreign_item_type_mut(self, i) }
 
 fn visit_generics_mut(&mut self, i: &mut Generics) { visit_generics_mut(self, i) }
 # [ cfg ( feature = "full" ) ]
@@ -1085,6 +1087,9 @@
         Static(ref mut _binding_0, ) => {
             _visitor.visit_foreign_item_static_mut(&mut * _binding_0);
         }
+        Type(ref mut _binding_0, ) => {
+            _visitor.visit_foreign_item_type_mut(&mut * _binding_0);
+        }
     }
 }
 # [ cfg ( feature = "full" ) ]
@@ -1106,6 +1111,14 @@
     _visitor.visit_type_mut(&mut _i . ty);
     // Skipped field _i . semi_token;
 }
+# [ cfg ( feature = "full" ) ]
+pub fn visit_foreign_item_type_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut ForeignItemType) {
+    for mut it in (_i . attrs).iter_mut() { _visitor.visit_attribute_mut(&mut it) };
+    _visitor.visit_visibility_mut(&mut _i . vis);
+    // Skipped field _i . type_token;
+    // Skipped field _i . ident;
+    // Skipped field _i . semi_token;
+}
 
 pub fn visit_generics_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut Generics) {
     // Skipped field _i . lt_token;