diff --git a/README.md b/README.md
index bd28f61..ecc6eb8 100644
--- a/README.md
+++ b/README.md
@@ -81,12 +81,9 @@
 
 ```rust
 extern crate proc_macro;
-extern crate syn;
-
-#[macro_use]
-extern crate quote;
 
 use proc_macro::TokenStream;
+use quote::quote;
 use syn::{parse_macro_input, DeriveInput};
 
 #[proc_macro_derive(MyMacro)]
diff --git a/src/attr.rs b/src/attr.rs
index 8494265..da12047 100644
--- a/src/attr.rs
+++ b/src/attr.rs
@@ -70,10 +70,7 @@
     /// [`Attribute::parse_inner`]: #method.parse_inner
     ///
     /// ```
-    /// #[macro_use]
-    /// extern crate syn;
-    ///
-    /// use syn::{Attribute, Ident, Result};
+    /// use syn::{Attribute, Ident, Result, Token};
     /// use syn::parse::{Parse, ParseStream};
     ///
     /// // Parses a unit struct with attributes.
@@ -97,8 +94,6 @@
     ///         })
     ///     }
     /// }
-    /// #
-    /// # fn main() {}
     /// ```
     pub struct Attribute #manual_extra_traits {
         pub pound_token: Token![#],
@@ -488,13 +483,10 @@
 /// as type `AttributeArgs`.
 ///
 /// ```rust
-/// #[macro_use]
-/// extern crate syn;
-///
 /// extern crate proc_macro;
 ///
 /// use proc_macro::TokenStream;
-/// use syn::{AttributeArgs, ItemFn};
+/// use syn::{parse_macro_input, AttributeArgs, ItemFn};
 ///
 /// # const IGNORE: &str = stringify! {
 /// #[proc_macro_attribute]
@@ -506,8 +498,6 @@
 ///     /* ... */
 /// #   "".parse().unwrap()
 /// }
-/// #
-/// # fn main() {}
 /// ```
 pub type AttributeArgs = Vec<NestedMeta>;
 
diff --git a/src/error.rs b/src/error.rs
index 13095cc..e3bc304 100644
--- a/src/error.rs
+++ b/src/error.rs
@@ -52,10 +52,7 @@
     /// # Example
     ///
     /// ```
-    /// #[macro_use]
-    /// extern crate syn;
-    ///
-    /// use syn::{Error, Ident, LitStr, Result};
+    /// use syn::{Error, Ident, LitStr, Result, Token};
     /// use syn::parse::ParseStream;
     ///
     /// // Parses input that looks like `name = "string"` where the key must be
@@ -72,8 +69,6 @@
     ///     let s: LitStr = input.parse()?;
     ///     Ok(s)
     /// }
-    /// #
-    /// # fn main() {}
     /// ```
     pub fn new<T: Display>(span: Span, message: T) -> Self {
         Error {
diff --git a/src/expr.rs b/src/expr.rs
index 62c4832..d07070f 100644
--- a/src/expr.rs
+++ b/src/expr.rs
@@ -2292,10 +2292,7 @@
         /// # Example
         ///
         /// ```
-        /// #[macro_use]
-        /// extern crate syn;
-        ///
-        /// use syn::{token, Attribute, Block, Ident, Result, Stmt};
+        /// use syn::{braced, token, Attribute, Block, Ident, Result, Stmt, Token};
         /// use syn::parse::{Parse, ParseStream};
         ///
         /// // Parse a function with no generics or parameter list.
@@ -2337,8 +2334,6 @@
         ///         })
         ///     }
         /// }
-        /// #
-        /// # fn main() {}
         /// ```
         pub fn parse_within(input: ParseStream) -> Result<Vec<Stmt>> {
             let mut stmts = Vec::new();
diff --git a/src/ext.rs b/src/ext.rs
index 16d0dbf..38c7a2c 100644
--- a/src/ext.rs
+++ b/src/ext.rs
@@ -18,10 +18,7 @@
     /// identifiers.
     ///
     /// ```rust
-    /// #[macro_use]
-    /// extern crate syn;
-    ///
-    /// use syn::{Error, Ident, Result};
+    /// use syn::{Error, Ident, Result, Token};
     /// use syn::ext::IdentExt;
     /// use syn::parse::ParseStream;
     ///
@@ -41,8 +38,6 @@
     ///     let name = input.call(Ident::parse_any)?;
     ///     Ok(name)
     /// }
-    /// #
-    /// # fn main() {}
     /// ```
     fn parse_any(input: ParseStream) -> Result<Self>;
 }
diff --git a/src/file.rs b/src/file.rs
index f1f7034..caa1565 100644
--- a/src/file.rs
+++ b/src/file.rs
@@ -11,8 +11,6 @@
     /// representation of the syntax tree.
     ///
     /// ```
-    /// # extern crate syn;
-    /// #
     /// use std::env;
     /// use std::fs::File;
     /// use std::io::Read;
diff --git a/src/generics.rs b/src/generics.rs
index b73d786..8119385 100644
--- a/src/generics.rs
+++ b/src/generics.rs
@@ -293,13 +293,11 @@
     /// for that type.
     ///
     /// ```
-    /// # #[macro_use]
+    /// # extern crate proc_macro2;
     /// # extern crate quote;
     /// #
-    /// # extern crate proc_macro2;
-    /// # extern crate syn;
-    /// #
     /// # use proc_macro2::{Span, Ident};
+    /// # use quote::quote;
     /// #
     /// # fn main() {
     /// #     let generics: syn::Generics = Default::default();
diff --git a/src/group.rs b/src/group.rs
index 026ece4..d2cbd3e 100644
--- a/src/group.rs
+++ b/src/group.rs
@@ -95,13 +95,10 @@
 /// # Example
 ///
 /// ```rust
-/// # #[macro_use]
 /// # extern crate quote;
+/// # use quote::quote;
 /// #
-/// #[macro_use]
-/// extern crate syn;
-///
-/// use syn::{token, Ident, Result, Type};
+/// use syn::{parenthesized, token, Ident, Result, Token, Type};
 /// use syn::parse::{Parse, ParseStream};
 /// use syn::punctuated::Punctuated;
 ///
@@ -156,12 +153,10 @@
 /// # Example
 ///
 /// ```rust
-/// # #[macro_use]
 /// # extern crate quote;
+/// # use quote::quote;
 /// #
-/// #[macro_use]
-/// extern crate syn;
-/// use syn::{token, Ident, Result, Type};
+/// use syn::{braced, token, Ident, Result, Token, Type};
 /// use syn::parse::{Parse, ParseStream};
 /// use syn::punctuated::Punctuated;
 ///
@@ -237,16 +232,13 @@
 /// # Example
 ///
 /// ```rust
-/// # #[macro_use]
+/// # extern crate proc_macro2;
 /// # extern crate quote;
 /// #
-/// #[macro_use]
-/// extern crate syn;
-///
-/// extern crate proc_macro2;
-///
+/// # use quote::quote;
+/// #
 /// use proc_macro2::TokenStream;
-/// use syn::{token, Result};
+/// use syn::{bracketed, token, Result, Token};
 /// use syn::parse::{Parse, ParseStream};
 ///
 /// // Parse an outer attribute like:
diff --git a/src/keyword.rs b/src/keyword.rs
index 9bfb260..54aba98 100644
--- a/src/keyword.rs
+++ b/src/keyword.rs
@@ -8,14 +8,9 @@
 /// with a `kw::` or `keyword::` prefix.
 ///
 /// ```
-/// # #[macro_use]
-/// # extern crate syn;
-/// #
 /// mod kw {
-///     custom_keyword!(whatever);
+///     syn::custom_keyword!(whatever);
 /// }
-/// #
-/// # fn main() {}
 /// ```
 ///
 /// The generated syntax tree node supports the following operations just like
@@ -49,15 +44,12 @@
 /// by crates that need to use them as such.
 ///
 /// ```
-/// #[macro_use]
-/// extern crate syn;
-///
-/// use syn::{LitBool, LitStr, Result};
+/// use syn::{LitBool, LitStr, Result, Token};
 /// use syn::parse::{Parse, ParseStream};
 ///
 /// mod kw {
-///     custom_keyword!(bool);
-///     custom_keyword!(str);
+///     syn::custom_keyword!(bool);
+///     syn::custom_keyword!(str);
 /// }
 ///
 /// enum Argument {
@@ -93,8 +85,6 @@
 ///         }
 ///     }
 /// }
-/// #
-/// # fn main() {}
 /// ```
 #[macro_export(local_inner_macros)]
 macro_rules! custom_keyword {
diff --git a/src/lib.rs b/src/lib.rs
index 12802e9..382e504 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -65,15 +65,13 @@
 //! ```
 //!
 //! ```rust
-//! #[macro_use]
-//! extern crate quote;
-//! #[macro_use]
-//! extern crate syn;
-//!
+//! # extern crate quote;
+//! #
 //! extern crate proc_macro;
 //!
 //! use proc_macro::TokenStream;
-//! use syn::DeriveInput;
+//! use quote::quote;
+//! use syn::{parse_macro_input, DeriveInput};
 //!
 //! # const IGNORE_TOKENS: &str = stringify! {
 //! #[proc_macro_derive(MyMacro)]
@@ -90,8 +88,6 @@
 //!     // Hand the output tokens back to the compiler
 //!     TokenStream::from(expanded)
 //! }
-//! #
-//! # fn main() {}
 //! ```
 //!
 //! The [`heapsize`] example directory shows a complete working Macros 1.1
@@ -589,13 +585,12 @@
 /// # Examples
 ///
 /// ```rust
-/// #[macro_use]
-/// extern crate quote;
-///
+/// # extern crate quote;
+/// #
 /// extern crate proc_macro;
-/// extern crate syn;
 ///
 /// use proc_macro::TokenStream;
+/// use quote::quote;
 /// use syn::DeriveInput;
 ///
 /// # const IGNORE_TOKENS: &str = stringify! {
@@ -613,8 +608,6 @@
 ///     // Convert into a token stream and return it
 ///     expanded.into()
 /// }
-/// #
-/// # fn main() {}
 /// ```
 #[cfg(all(
     not(all(target_arch = "wasm32", target_os = "unknown")),
@@ -654,8 +647,6 @@
 /// # Examples
 ///
 /// ```rust
-/// # extern crate syn;
-/// #
 /// use syn::{Expr, Result};
 ///
 /// fn run() -> Result<()> {
@@ -665,7 +656,9 @@
 ///     Ok(())
 /// }
 /// #
-/// # fn main() { run().unwrap() }
+/// # fn main() {
+/// #     run().unwrap();
+/// # }
 /// ```
 #[cfg(feature = "parsing")]
 pub fn parse_str<T: parse::Parse>(s: &str) -> Result<T> {
@@ -688,8 +681,6 @@
 /// # Examples
 ///
 /// ```rust,no_run
-/// # extern crate syn;
-/// #
 /// use std::error::Error;
 /// use std::fs::File;
 /// use std::io::Read;
@@ -708,7 +699,9 @@
 ///     Ok(())
 /// }
 /// #
-/// # fn main() { run().unwrap() }
+/// # fn main() {
+/// #     run().unwrap();
+/// # }
 /// ```
 #[cfg(all(feature = "parsing", feature = "full"))]
 pub fn parse_file(mut content: &str) -> Result<File> {
diff --git a/src/lifetime.rs b/src/lifetime.rs
index dbf01a9..9572a61 100644
--- a/src/lifetime.rs
+++ b/src/lifetime.rs
@@ -37,7 +37,6 @@
     ///
     /// ```
     /// # extern crate proc_macro2;
-    /// # extern crate syn;
     /// #
     /// # use proc_macro2::Span;
     /// # use syn::Lifetime;
diff --git a/src/lit.rs b/src/lit.rs
index a39cd3c..9fd87e8 100644
--- a/src/lit.rs
+++ b/src/lit.rs
@@ -123,7 +123,6 @@
     ///
     /// ```
     /// # extern crate proc_macro2;
-    /// # extern crate syn;
     /// #
     /// use proc_macro2::Span;
     /// use syn::{Attribute, Error, Ident, Lit, Meta, MetaNameValue, Path, Result};
diff --git a/src/lookahead.rs b/src/lookahead.rs
index c8fdbc8..10cd023 100644
--- a/src/lookahead.rs
+++ b/src/lookahead.rs
@@ -22,10 +22,7 @@
 /// # Example
 ///
 /// ```
-/// #[macro_use]
-/// extern crate syn;
-///
-/// use syn::{ConstParam, Ident, Lifetime, LifetimeDef, Result, TypeParam};
+/// use syn::{ConstParam, Ident, Lifetime, LifetimeDef, Result, Token, TypeParam};
 /// use syn::parse::{Parse, ParseStream};
 ///
 /// // A generic parameter, a single one of the comma-separated elements inside
@@ -59,8 +56,6 @@
 ///         }
 ///     }
 /// }
-/// #
-/// # fn main() {}
 /// ```
 pub struct Lookahead1<'a> {
     scope: Span,
diff --git a/src/parse.rs b/src/parse.rs
index 80e0004..34bbf0a 100644
--- a/src/parse.rs
+++ b/src/parse.rs
@@ -26,13 +26,10 @@
 //! [`parse_macro_input!`]: ../macro.parse_macro_input.html
 //!
 //! ```
-//! #[macro_use]
-//! extern crate syn;
-//!
 //! extern crate proc_macro;
 //!
 //! use proc_macro::TokenStream;
-//! use syn::{token, Field, Ident, Result};
+//! use syn::{braced, parse_macro_input, token, Field, Ident, Result, Token};
 //! use syn::parse::{Parse, ParseStream};
 //! use syn::punctuated::Punctuated;
 //!
@@ -90,8 +87,6 @@
 //!     /* ... */
 //! #   "".parse().unwrap()
 //! }
-//! #
-//! # fn main() {}
 //! ```
 //!
 //! # The `syn::parse*` functions
@@ -139,7 +134,6 @@
 //!
 //! ```compile_fail
 //! # extern crate proc_macro;
-//! # extern crate syn;
 //! #
 //! # use syn::punctuated::Punctuated;
 //! # use syn::{PathSegment, Result, Token};
@@ -161,15 +155,12 @@
 //! [`Parser`]: trait.Parser.html
 //!
 //! ```
-//! #[macro_use]
-//! extern crate syn;
-//!
-//! extern crate proc_macro2;
-//!
+//! # extern crate proc_macro2;
+//! #
 //! use proc_macro2::TokenStream;
 //! use syn::parse::Parser;
 //! use syn::punctuated::Punctuated;
-//! use syn::{Attribute, Expr, PathSegment};
+//! use syn::{Attribute, Expr, PathSegment, Token};
 //!
 //! # fn run_parsers() -> syn::Result<()> {
 //! #     let tokens = TokenStream::new().into();
@@ -191,8 +182,6 @@
 //! #
 //! #     Ok(())
 //! # }
-//! #
-//! # fn main() {}
 //! ```
 //!
 //! ---
@@ -306,7 +295,6 @@
 ///
 /// ```
 /// # extern crate proc_macro2;
-/// # extern crate syn;
 /// #
 /// use proc_macro2::TokenTree;
 /// use syn::Result;
@@ -330,7 +318,6 @@
 ///     })
 /// }
 /// #
-/// #
 /// # fn remainder_after_skipping_past_next_at(
 /// #     input: ParseStream,
 /// # ) -> Result<proc_macro2::TokenStream> {
@@ -443,10 +430,7 @@
     /// [`Attribute::parse_outer`]: ../struct.Attribute.html#method.parse_outer
     ///
     /// ```
-    /// #[macro_use]
-    /// extern crate syn;
-    ///
-    /// use syn::{Attribute, Ident, Result};
+    /// use syn::{Attribute, Ident, Result, Token};
     /// use syn::parse::{Parse, ParseStream};
     ///
     /// // Parses a unit struct with attributes.
@@ -470,8 +454,6 @@
     ///         })
     ///     }
     /// }
-    /// #
-    /// # fn main() {}
     /// ```
     pub fn call<T>(&self, function: fn(ParseStream) -> Result<T>) -> Result<T> {
         function(self)
@@ -499,10 +481,7 @@
     /// token in the input is either `where` or an opening curly brace.
     ///
     /// ```
-    /// #[macro_use]
-    /// extern crate syn;
-    ///
-    /// use syn::{token, Generics, Ident, Result, TypeParamBound};
+    /// use syn::{braced, token, Generics, Ident, Result, Token, TypeParamBound};
     /// use syn::parse::{Parse, ParseStream};
     /// use syn::punctuated::Punctuated;
     ///
@@ -550,8 +529,6 @@
     ///         })
     ///     }
     /// }
-    /// #
-    /// # fn main() {}
     /// ```
     pub fn peek<T: Peek>(&self, token: T) -> bool {
         let _ = token;
@@ -571,10 +548,7 @@
     /// }`. In other words `union` is a contextual keyword.
     ///
     /// ```
-    /// #[macro_use]
-    /// extern crate syn;
-    ///
-    /// use syn::{Ident, ItemUnion, Macro, Result};
+    /// use syn::{Ident, ItemUnion, Macro, Result, Token};
     /// use syn::parse::{Parse, ParseStream};
     ///
     /// // Parses either a union or a macro invocation.
@@ -594,8 +568,6 @@
     ///         }
     ///     }
     /// }
-    /// #
-    /// # fn main() {}
     /// ```
     pub fn peek2<T: Peek>(&self, token: T) -> bool {
         let ahead = self.fork();
@@ -617,13 +589,10 @@
     /// # Example
     ///
     /// ```rust
-    /// # #[macro_use]
     /// # extern crate quote;
+    /// # use quote::quote;
     /// #
-    /// #[macro_use]
-    /// extern crate syn;
-    ///
-    /// use syn::{token, Ident, Result, Type};
+    /// use syn::{parenthesized, token, Ident, Result, Token, Type};
     /// use syn::parse::{Parse, ParseStream};
     /// use syn::punctuated::Punctuated;
     ///
@@ -673,10 +642,7 @@
     /// # Example
     ///
     /// ```rust
-    /// #[macro_use]
-    /// extern crate syn;
-    ///
-    /// use syn::{token, Ident, Item, Result};
+    /// use syn::{braced, token, Ident, Item, Result, Token};
     /// use syn::parse::{Parse, ParseStream};
     ///
     /// // Parses a Rust `mod m { ... }` containing zero or more items.
@@ -704,8 +670,6 @@
     ///         })
     ///     }
     /// }
-    /// #
-    /// # fn main() {}
     /// ```
     pub fn is_empty(&self) -> bool {
         self.cursor().eof()
@@ -717,10 +681,7 @@
     /// # Example
     ///
     /// ```
-    /// #[macro_use]
-    /// extern crate syn;
-    ///
-    /// use syn::{ConstParam, Ident, Lifetime, LifetimeDef, Result, TypeParam};
+    /// use syn::{ConstParam, Ident, Lifetime, LifetimeDef, Result, Token, TypeParam};
     /// use syn::parse::{Parse, ParseStream};
     ///
     /// // A generic parameter, a single one of the comma-separated elements inside
@@ -754,8 +715,6 @@
     ///         }
     ///     }
     /// }
-    /// #
-    /// # fn main() {}
     /// ```
     pub fn lookahead1(&self) -> Lookahead1<'a> {
         lookahead::new(self.scope, self.cursor())
@@ -826,10 +785,7 @@
     /// work performed against the forked parse stream.
     ///
     /// ```
-    /// #[macro_use]
-    /// extern crate syn;
-    ///
-    /// use syn::{token, Ident, Path, Result};
+    /// use syn::{parenthesized, token, Ident, Path, Result, Token};
     /// use syn::ext::IdentExt;
     /// use syn::parse::{Parse, ParseStream};
     ///
@@ -883,8 +839,6 @@
     ///         })
     ///     }
     /// }
-    /// #
-    /// # fn main() {}
     /// ```
     pub fn fork(&self) -> Self {
         ParseBuffer {
@@ -902,10 +856,7 @@
     /// # Example
     ///
     /// ```
-    /// #[macro_use]
-    /// extern crate syn;
-    ///
-    /// use syn::{Expr, Result};
+    /// use syn::{Expr, Result, Token};
     /// use syn::parse::{Parse, ParseStream};
     ///
     /// // Some kind of loop: `while` or `for` or `loop`.
@@ -927,8 +878,6 @@
     ///         }
     ///     }
     /// }
-    /// #
-    /// # fn main() {}
     /// ```
     pub fn error<T: Display>(&self, message: T) -> Error {
         error::new_at(self.scope, self.cursor(), message)
@@ -945,7 +894,6 @@
     ///
     /// ```
     /// # extern crate proc_macro2;
-    /// # extern crate syn;
     /// #
     /// use proc_macro2::TokenTree;
     /// use syn::Result;
diff --git a/src/parse_macro_input.rs b/src/parse_macro_input.rs
index 6b3785b..e38c711 100644
--- a/src/parse_macro_input.rs
+++ b/src/parse_macro_input.rs
@@ -9,13 +9,10 @@
 /// # Intended usage
 ///
 /// ```rust
-/// #[macro_use]
-/// extern crate syn;
-///
 /// extern crate proc_macro;
 ///
 /// use proc_macro::TokenStream;
-/// use syn::Result;
+/// use syn::{parse_macro_input, Result};
 /// use syn::parse::{Parse, ParseStream};
 ///
 /// struct MyMacroInput {
@@ -38,8 +35,6 @@
 ///     /* ... */
 /// #   "".parse().unwrap()
 /// }
-/// #
-/// # fn main() {}
 /// ```
 #[macro_export(local_inner_macros)]
 macro_rules! parse_macro_input {
diff --git a/src/parse_quote.rs b/src/parse_quote.rs
index 5d4045b..13ba95b 100644
--- a/src/parse_quote.rs
+++ b/src/parse_quote.rs
@@ -9,12 +9,10 @@
 /// [`Parse`]: parse/trait.Parse.html
 ///
 /// ```
-/// #[macro_use]
-/// extern crate quote;
-/// #[macro_use]
-/// extern crate syn;
-///
-/// use syn::Stmt;
+/// # extern crate quote;
+/// #
+/// use quote::quote;
+/// use syn::{parse_quote, Stmt};
 ///
 /// fn main() {
 ///     let name = quote!(v);
@@ -38,12 +36,7 @@
 /// parameter `T` in the input generics.
 ///
 /// ```
-#[cfg_attr(not(syn_can_call_macro_by_path), doc = " #[macro_use]")]
-#[cfg_attr(not(syn_can_call_macro_by_path), doc = " extern crate quote;")]
-/// #[macro_use]
-/// extern crate syn;
-///
-/// use syn::{Generics, GenericParam};
+/// use syn::{parse_quote, Generics, GenericParam};
 ///
 /// // Add a bound `T: HeapSize` to every type parameter T.
 /// fn add_trait_bounds(mut generics: Generics) -> Generics {
@@ -54,8 +47,6 @@
 ///     }
 ///     generics
 /// }
-/// #
-/// # fn main() {}
 /// ```
 ///
 /// # Special cases
diff --git a/src/path.rs b/src/path.rs
index 97ba58c..f35c111 100644
--- a/src/path.rs
+++ b/src/path.rs
@@ -359,10 +359,7 @@
         /// # Example
         ///
         /// ```
-        /// #[macro_use]
-        /// extern crate syn;
-        ///
-        /// use syn::{Path, Result};
+        /// use syn::{Path, Result, Token};
         /// use syn::parse::{Parse, ParseStream};
         ///
         /// // A simplified single `use` statement like:
@@ -386,8 +383,6 @@
         ///         })
         ///     }
         /// }
-        /// #
-        /// # fn main() {}
         /// ```
         pub fn parse_mod_style(input: ParseStream) -> Result<Self> {
             Ok(Path {
diff --git a/src/spanned.rs b/src/spanned.rs
index a1a2a9a..a6a2120 100644
--- a/src/spanned.rs
+++ b/src/spanned.rs
@@ -23,13 +23,11 @@
 //! ```
 //! # extern crate proc_macro;
 //! # extern crate proc_macro2;
-//! # extern crate syn;
+//! # extern crate quote;
 //! #
-//! #[macro_use]
-//! extern crate quote;
-//!
 //! use proc_macro::TokenStream;
 //! use proc_macro2::Span;
+//! use quote::quote_spanned;
 //! use syn::Type;
 //! use syn::spanned::Spanned;
 //!
@@ -51,8 +49,6 @@
 //! # fn get_a_type() -> Type {
 //! #     unimplemented!()
 //! # }
-//! #
-//! # fn main() {}
 //! ```
 //!
 //! By inserting this `assert_sync` fragment into the output code generated by
diff --git a/src/token.rs b/src/token.rs
index 6409c51..8dc6e24 100644
--- a/src/token.rs
+++ b/src/token.rs
@@ -13,10 +13,7 @@
 //! [`ItemStatic`]: ../struct.ItemStatic.html
 //!
 //! ```
-//! # #[macro_use]
-//! # extern crate syn;
-//! #
-//! # use syn::{Attribute, Expr, Ident, Type, Visibility};
+//! # use syn::{Attribute, Expr, Ident, Token, Type, Visibility};
 //! #
 //! pub struct ItemStatic {
 //!     pub attrs: Vec<Attribute>,
@@ -30,8 +27,6 @@
 //!     pub expr: Box<Expr>,
 //!     pub semi_token: Token![;],
 //! }
-//! #
-//! # fn main() {}
 //! ```
 //!
 //! # Parsing
@@ -46,8 +41,6 @@
 //! [`braced!`]: ../macro.braced.html
 //!
 //! ```
-//! # extern crate syn;
-//! #
 //! use syn::{Attribute, Result};
 //! use syn::parse::{Parse, ParseStream};
 //! #
@@ -74,8 +67,6 @@
 //!         # unimplemented!()
 //!     }
 //! }
-//! #
-//! # fn main() {}
 //! ```
 
 use std;
