diff --git a/src/gen/fold.rs b/src/gen/fold.rs
index e53ff9a..b5b67b3 100644
--- a/src/gen/fold.rs
+++ b/src/gen/fold.rs
@@ -2483,6 +2483,7 @@
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 pub fn fold_trait_bound<V: Fold + ?Sized>(_visitor: &mut V, _i: TraitBound) -> TraitBound {
     TraitBound {
+        paren_token: (_i . paren_token).map(|it| { Paren(tokens_helper(_visitor, &(it).0)) }),
         modifier: _visitor.fold_trait_bound_modifier(_i . modifier),
         lifetimes: (_i . lifetimes).map(|it| { _visitor.fold_bound_lifetimes(it) }),
         path: _visitor.fold_path(_i . path),
diff --git a/src/gen/visit.rs b/src/gen/visit.rs
index 1298276..6a38d1d 100644
--- a/src/gen/visit.rs
+++ b/src/gen/visit.rs
@@ -1935,6 +1935,7 @@
 }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 pub fn visit_trait_bound<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast TraitBound) {
+    if let Some(ref it) = _i . paren_token { tokens_helper(_visitor, &(it).0) };
     _visitor.visit_trait_bound_modifier(& _i . modifier);
     if let Some(ref it) = _i . lifetimes { _visitor.visit_bound_lifetimes(it) };
     _visitor.visit_path(& _i . path);
diff --git a/src/gen/visit_mut.rs b/src/gen/visit_mut.rs
index 95a358a..2a86a0c 100644
--- a/src/gen/visit_mut.rs
+++ b/src/gen/visit_mut.rs
@@ -1936,6 +1936,7 @@
 }
 # [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
 pub fn visit_trait_bound_mut<V: VisitMut + ?Sized>(_visitor: &mut V, _i: &mut TraitBound) {
+    if let Some(ref mut it) = _i . paren_token { tokens_helper(_visitor, &mut (it).0) };
     _visitor.visit_trait_bound_modifier_mut(& mut _i . modifier);
     if let Some(ref mut it) = _i . lifetimes { _visitor.visit_bound_lifetimes_mut(it) };
     _visitor.visit_path_mut(& mut _i . path);
diff --git a/src/generics.rs b/src/generics.rs
index a27298f..eaade92 100644
--- a/src/generics.rs
+++ b/src/generics.rs
@@ -385,6 +385,7 @@
     /// *This type is available if Syn is built with the `"derive"` or `"full"`
     /// feature.*
     pub struct TraitBound {
+        pub paren_token: Option<token::Paren>,
         pub modifier: TraitBoundModifier,
         /// The `for<'a>` in `for<'a> Foo<&'a T>`
         pub lifetimes: Option<BoundLifetimes>,
@@ -599,7 +600,10 @@
             |
             syn!(TraitBound) => { TypeParamBound::Trait }
             |
-            parens!(syn!(TraitBound)) => { |bound| TypeParamBound::Trait(bound.1) }
+            parens!(syn!(TraitBound)) => {|(parens, mut bound)| {
+                bound.paren_token = Some(parens);
+                TypeParamBound::Trait(bound)
+            }}
         ));
 
         fn description() -> Option<&'static str> {
@@ -622,6 +626,7 @@
                     path.segments.last_mut().unwrap().value_mut().arguments = parenthesized;
                 }
                 TraitBound {
+                    paren_token: None,
                     modifier: modifier,
                     lifetimes: lifetimes,
                     path: path,
@@ -919,9 +924,15 @@
 
     impl ToTokens for TraitBound {
         fn to_tokens(&self, tokens: &mut Tokens) {
-            self.modifier.to_tokens(tokens);
-            self.lifetimes.to_tokens(tokens);
-            self.path.to_tokens(tokens);
+            let to_tokens = |tokens: &mut Tokens| {
+                self.modifier.to_tokens(tokens);
+                self.lifetimes.to_tokens(tokens);
+                self.path.to_tokens(tokens);
+            };
+            match self.paren_token {
+                Some(paren) => paren.surround(tokens, to_tokens),
+                None => to_tokens(tokens),
+            }
         }
     }
 
diff --git a/tests/test_generics.rs b/tests/test_generics.rs
index 84eb529..d4ca16f 100644
--- a/tests/test_generics.rs
+++ b/tests/test_generics.rs
@@ -79,6 +79,7 @@
                     }.into(),
                     bounds: punctuated![
                         TypeParamBound::Trait(TraitBound {
+                            paren_token: None,
                             modifier: TraitBoundModifier::None,
                             lifetimes: None,
                             path: "Debug".into(),
@@ -126,6 +127,7 @@
 
     let tokens = quote!(Debug);
     let expected = TypeParamBound::Trait(TraitBound {
+        paren_token: None,
         modifier: TraitBoundModifier::None,
         lifetimes: None,
         path: "Debug".into(),
@@ -137,6 +139,7 @@
 
     let tokens = quote!(?Sized);
     let expected = TypeParamBound::Trait(TraitBound {
+        paren_token: None,
         modifier: TraitBoundModifier::Maybe(Default::default()),
         lifetimes: None,
         path: "Sized".into(),
