diff --git a/examples/trace-var/trace-var/src/lib.rs b/examples/trace-var/trace-var/src/lib.rs
index ec06cde..01db7f4 100644
--- a/examples/trace-var/trace-var/src/lib.rs
+++ b/examples/trace-var/trace-var/src/lib.rs
@@ -148,9 +148,9 @@
         match s {
             Stmt::Local(s) => {
                 if s.init.is_some() && self.should_print_pat(&s.pat) {
-                    self.let_and_print(*s)
+                    self.let_and_print(s)
                 } else {
-                    Stmt::Local(Box::new(fold::fold_local(self, *s)))
+                    Stmt::Local(fold::fold_local(self, s))
                 }
             }
             _ => fold::fold_stmt(self, s),
diff --git a/src/expr.rs b/src/expr.rs
index 8cab97d..b019231 100644
--- a/src/expr.rs
+++ b/src/expr.rs
@@ -572,16 +572,16 @@
     /// A statement, usually ending in a semicolon.
     pub enum Stmt {
         /// A local (let) binding.
-        Local(Box<Local>),
+        Local(Local),
 
         /// An item definition.
-        Item(Box<Item>),
+        Item(Item),
 
         /// Expr without trailing semicolon.
-        Expr(Box<Expr>),
+        Expr(Expr),
 
         /// Expression with trailing semicolon;
-        Semi(Box<Expr>, Token![;]),
+        Semi(Expr, Token![;]),
     }
 }
 
@@ -2080,7 +2080,7 @@
                 mut e: syn!(Expr) >>
                 ({
                     e.replace_attrs(attrs);
-                    Stmt::Expr(Box::new(e))
+                    Stmt::Expr(e)
                 })
             )) >>
             (match last {
@@ -2121,7 +2121,7 @@
     // expression statements
         data: braces!(syn!(TokenStream)) >>
         semi: option!(punct!(;)) >>
-        (Stmt::Item(Box::new(Item::Macro(ItemMacro {
+        (Stmt::Item(Item::Macro(ItemMacro {
             attrs: attrs,
             ident: None,
             mac: Macro {
@@ -2131,7 +2131,7 @@
                 tts: data.1,
             },
             semi_token: semi,
-        }))))
+        })))
     ));
 
     #[cfg(feature = "full")]
@@ -2142,18 +2142,18 @@
         ty: option!(tuple!(punct!(:), syn!(Type))) >>
         init: option!(tuple!(punct!(=), syn!(Expr))) >>
         semi: punct!(;) >>
-        (Stmt::Local(Box::new(Local {
+        (Stmt::Local(Local {
             attrs: attrs,
             let_token: let_,
             pat: Box::new(pat),
             ty: ty.map(|(colon, ty)| (colon, Box::new(ty))),
             init: init.map(|(eq, expr)| (eq, Box::new(expr))),
             semi_token: semi,
-        })))
+        }))
     ));
 
     #[cfg(feature = "full")]
-    named!(stmt_item -> Stmt, map!(syn!(Item), |i| Stmt::Item(Box::new(i))));
+    named!(stmt_item -> Stmt, map!(syn!(Item), |i| Stmt::Item(i)));
 
     #[cfg(feature = "full")]
     named!(stmt_blockexpr -> Stmt, do_parse!(
@@ -2167,9 +2167,9 @@
         ({
             e.replace_attrs(attrs);
             if let Some(semi) = semi {
-                Stmt::Semi(Box::new(e), semi)
+                Stmt::Semi(e, semi)
             } else {
-                Stmt::Expr(Box::new(e))
+                Stmt::Expr(e)
             }
         })
     ));
@@ -2181,7 +2181,7 @@
         semi: punct!(;) >>
         ({
             e.replace_attrs(attrs);
-            Stmt::Semi(Box::new(e), semi)
+            Stmt::Semi(e, semi)
         })
     ));
 
diff --git a/src/gen/fold.rs b/src/gen/fold.rs
index d8e0ec5..0794f69 100644
--- a/src/gen/fold.rs
+++ b/src/gen/fold.rs
@@ -2462,22 +2462,22 @@
     match _i {
         Stmt::Local(_binding_0, ) => {
             Stmt::Local (
-                Box::new(_visitor.fold_local(* _binding_0)),
+                _visitor.fold_local(_binding_0),
             )
         }
         Stmt::Item(_binding_0, ) => {
             Stmt::Item (
-                Box::new(_visitor.fold_item(* _binding_0)),
+                _visitor.fold_item(_binding_0),
             )
         }
         Stmt::Expr(_binding_0, ) => {
             Stmt::Expr (
-                Box::new(_visitor.fold_expr(* _binding_0)),
+                _visitor.fold_expr(_binding_0),
             )
         }
         Stmt::Semi(_binding_0, _binding_1, ) => {
             Stmt::Semi (
-                Box::new(_visitor.fold_expr(* _binding_0)),
+                _visitor.fold_expr(_binding_0),
                 Token ! [ ; ](tokens_helper(_visitor, &(_binding_1).0)),
             )
         }
diff --git a/src/gen/visit.rs b/src/gen/visit.rs
index a3dc7f3..8b6c004 100644
--- a/src/gen/visit.rs
+++ b/src/gen/visit.rs
@@ -1930,16 +1930,16 @@
 pub fn visit_stmt<'ast, V: Visit<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast Stmt) {
     match *_i {
         Stmt::Local(ref _binding_0, ) => {
-            _visitor.visit_local(& * * _binding_0);
+            _visitor.visit_local(_binding_0);
         }
         Stmt::Item(ref _binding_0, ) => {
-            _visitor.visit_item(& * * _binding_0);
+            _visitor.visit_item(_binding_0);
         }
         Stmt::Expr(ref _binding_0, ) => {
-            _visitor.visit_expr(& * * _binding_0);
+            _visitor.visit_expr(_binding_0);
         }
         Stmt::Semi(ref _binding_0, ref _binding_1, ) => {
-            _visitor.visit_expr(& * * _binding_0);
+            _visitor.visit_expr(_binding_0);
             tokens_helper(_visitor, &(_binding_1).0);
         }
     }
diff --git a/src/gen/visit_mut.rs b/src/gen/visit_mut.rs
index 029db60..2408af0 100644
--- a/src/gen/visit_mut.rs
+++ b/src/gen/visit_mut.rs
@@ -1930,16 +1930,16 @@
 pub fn visit_stmt_mut<V: VisitMut + ?Sized>(_visitor: &mut V, _i: &mut Stmt) {
     match *_i {
         Stmt::Local(ref mut _binding_0, ) => {
-            _visitor.visit_local_mut(& mut * * _binding_0);
+            _visitor.visit_local_mut(_binding_0);
         }
         Stmt::Item(ref mut _binding_0, ) => {
-            _visitor.visit_item_mut(& mut * * _binding_0);
+            _visitor.visit_item_mut(_binding_0);
         }
         Stmt::Expr(ref mut _binding_0, ) => {
-            _visitor.visit_expr_mut(& mut * * _binding_0);
+            _visitor.visit_expr_mut(_binding_0);
         }
         Stmt::Semi(ref mut _binding_0, ref mut _binding_1, ) => {
-            _visitor.visit_expr_mut(& mut * * _binding_0);
+            _visitor.visit_expr_mut(_binding_0);
             tokens_helper(_visitor, &mut (_binding_1).0);
         }
     }
diff --git a/tests/test_expr.rs b/tests/test_expr.rs
index 2028af5..5c60d4b 100644
--- a/tests/test_expr.rs
+++ b/tests/test_expr.rs
@@ -102,7 +102,7 @@
 
     assert_let!(Item::Fn(ItemFn { ref block, .. }) = actual.items[1]; {
         assert_let!(Stmt::Local(ref local) = block.stmts[0]; {
-            assert_let!(Local { init: Some((_, ref init_expr)), .. } = **local; {
+            assert_let!(Local { init: Some((_, ref init_expr)), .. } = *local; {
                 assert_let!(Expr::Catch(..) = **init_expr);
             });
         });
@@ -114,7 +114,7 @@
         });
 
         assert_let!(Stmt::Expr(ref expr) = block.stmts[3]; {
-            assert_let!(Expr::While(ExprWhile { ref cond, .. }) = **expr; {
+            assert_let!(Expr::While(ExprWhile { ref cond, .. }) = *expr; {
                 assert_let!(Expr::Path(ExprPath { qself: None, ref path, .. }) = **cond; {
                     assert_eq!(*path, "catch".into());
                 });
@@ -122,7 +122,7 @@
         });
 
         assert_let!(Stmt::Semi(ref expr, _) = block.stmts[5]; {
-            assert_let!(Expr::Assign(ExprAssign { ref left, ref right, .. }) = **expr; {
+            assert_let!(Expr::Assign(ExprAssign { ref left, ref right, .. }) = *expr; {
                 assert_let!(Expr::Path(ExprPath { qself: None, ref path, .. }) = **left; {
                     assert_eq!(*path, "catch".into());
                 });
@@ -136,7 +136,7 @@
         });
 
         assert_let!(Stmt::Semi(ref expr, _) = block.stmts[7]; {
-            assert_let!(Expr::Match(ExprMatch { ref expr, .. }) = **expr; {
+            assert_let!(Expr::Match(ExprMatch { ref expr, .. }) = *expr; {
                 assert_let!(Expr::Path(ExprPath { qself: None, ref path, .. }) = **expr; {
                     assert_eq!(*path, "catch".into());
                 });
diff --git a/tests/test_precedence.rs b/tests/test_precedence.rs
index d9cd744..0a2ee15 100644
--- a/tests/test_precedence.rs
+++ b/tests/test_precedence.rs
@@ -328,8 +328,8 @@
         fn fold_stmt(&mut self, stmt: Stmt) -> Stmt {
             match stmt {
                 // Don't wrap toplevel expressions in statements.
-                Stmt::Expr(e) => Stmt::Expr(Box::new(fold_expr(self, *e))),
-                Stmt::Semi(e, semi) => Stmt::Semi(Box::new(fold_expr(self, *e)), semi),
+                Stmt::Expr(e) => Stmt::Expr(fold_expr(self, e)),
+                Stmt::Semi(e, semi) => Stmt::Semi(fold_expr(self, e), semi),
                 s => s,
             }
         }
