Eliminate PolyTraitRef
diff --git a/src/gen/visit.rs b/src/gen/visit.rs
index 2770a7b..a14a24f 100644
--- a/src/gen/visit.rs
+++ b/src/gen/visit.rs
@@ -309,8 +309,6 @@
 
 fn visit_path_segment(&mut self, i: &'ast PathSegment) { visit_path_segment(self, i) }
 
-fn visit_poly_trait_ref(&mut self, i: &'ast PolyTraitRef) { visit_poly_trait_ref(self, i) }
-
 fn visit_predicate_eq(&mut self, i: &'ast PredicateEq) { visit_predicate_eq(self, i) }
 
 fn visit_predicate_lifetime(&mut self, i: &'ast PredicateLifetime) { visit_predicate_lifetime(self, i) }
@@ -327,6 +325,8 @@
 # [ cfg ( feature = "full" ) ]
 fn visit_stmt(&mut self, i: &'ast Stmt) { visit_stmt(self, i) }
 
+fn visit_trait_bound(&mut self, i: &'ast TraitBound) { visit_trait_bound(self, i) }
+
 fn visit_trait_bound_modifier(&mut self, i: &'ast TraitBoundModifier) { visit_trait_bound_modifier(self, i) }
 # [ cfg ( feature = "full" ) ]
 fn visit_trait_item(&mut self, i: &'ast TraitItem) { visit_trait_item(self, i) }
@@ -1794,11 +1794,6 @@
     _visitor.visit_path_arguments(& _i . arguments);
 }
 
-pub fn visit_poly_trait_ref<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast PolyTraitRef) {
-    if let Some(ref it) = _i . bound_lifetimes { _visitor.visit_bound_lifetimes(it) };
-    _visitor.visit_path(& _i . trait_ref);
-}
-
 pub fn visit_predicate_eq<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast PredicateEq) {
     _visitor.visit_type(& _i . lhs_ty);
     tokens_helper(_visitor, &(& _i . eq_token).0);
@@ -1812,7 +1807,7 @@
 }
 
 pub fn visit_predicate_type<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast PredicateType) {
-    if let Some(ref it) = _i . bound_lifetimes { _visitor.visit_bound_lifetimes(it) };
+    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) };
@@ -1868,6 +1863,12 @@
     }
 }
 
+pub fn visit_trait_bound<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast TraitBound) {
+    _visitor.visit_trait_bound_modifier(& _i . modifier);
+    if let Some(ref it) = _i . lifetimes { _visitor.visit_bound_lifetimes(it) };
+    _visitor.visit_path(& _i . path);
+}
+
 pub fn visit_trait_bound_modifier<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast TraitBoundModifier) {
     match *_i {
         TraitBoundModifier::None => { }
@@ -2042,11 +2043,10 @@
 
 pub fn visit_type_param_bound<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast TypeParamBound) {
     match *_i {
-        TypeParamBound::Trait(ref _binding_0, ref _binding_1, ) => {
-            _visitor.visit_poly_trait_ref(_binding_0);
-            _visitor.visit_trait_bound_modifier(_binding_1);
+        TypeParamBound::Trait(ref _binding_0, ) => {
+            _visitor.visit_trait_bound(_binding_0);
         }
-        TypeParamBound::Region(ref _binding_0, ) => {
+        TypeParamBound::Lifetime(ref _binding_0, ) => {
             _visitor.visit_lifetime(_binding_0);
         }
     }