Remove grouped macro
diff --git a/src/expr.rs b/src/expr.rs
index 5b635ae..b6aef5a 100644
--- a/src/expr.rs
+++ b/src/expr.rs
@@ -1026,7 +1026,7 @@
 
     #[cfg(feature = "full")]
     use ext::IdentExt;
-    use parse::{Parse, ParseStream, Result};
+    use parse::{Parse, ParseBuffer, ParseStream, Result};
     use path;
 
     // When we're parsing expressions which occur before blocks, like in an if
@@ -1814,11 +1814,11 @@
 
     #[cfg(feature = "full")]
     fn expr_group(input: ParseStream) -> Result<ExprGroup> {
-        let content;
+        let group = private::<ParseBuffer>::parse_group(input)?;
         Ok(ExprGroup {
             attrs: Vec::new(),
-            group_token: grouped!(content in input),
-            expr: content.parse()?,
+            group_token: group.token,
+            expr: group.content.parse()?,
         })
     }
 
diff --git a/src/group.rs b/src/group.rs
index b968b91..7acb318 100644
--- a/src/group.rs
+++ b/src/group.rs
@@ -1,7 +1,7 @@
 use proc_macro2::{Delimiter, Span};
 
 use error::Result;
-use parse::ParseBuffer;
+use parse::{ParseBuffer, ParseStream};
 use private;
 use token;
 
@@ -74,11 +74,11 @@
                 content: content,
             })
     }
+}
 
-    // Not public API.
-    #[doc(hidden)]
-    pub fn parse_group(&self) -> Result<Group<'a>> {
-        self.parse_delimited(Delimiter::None)
+impl<'a> private<ParseBuffer<'a>> {
+    pub fn parse_group(input: ParseStream) -> Result<Group> {
+        input.parse_delimited(Delimiter::None)
             .map(|(span, content)| Group {
                 token: token::Group(span),
                 content: content,
@@ -169,19 +169,3 @@
         }
     };
 }
-
-#[doc(hidden)]
-#[macro_export]
-macro_rules! grouped {
-    ($content:ident in $cursor:expr) => {
-        match $crate::parse::ParseBuffer::parse_group(&$cursor) {
-            $crate::export::Ok(group) => {
-                $content = group.content;
-                group.token
-            }
-            $crate::export::Err(error) => {
-                return $crate::export::Err(error);
-            }
-        }
-    };
-}
diff --git a/src/ty.rs b/src/ty.rs
index 94258e1..23e516a 100644
--- a/src/ty.rs
+++ b/src/ty.rs
@@ -250,7 +250,7 @@
 pub mod parsing {
     use super::*;
 
-    use parse::{Parse, ParseStream, Result};
+    use parse::{Parse, ParseBuffer, ParseStream, Result};
     use path;
 
     impl Parse for Type {
@@ -677,10 +677,10 @@
 
     impl Parse for TypeGroup {
         fn parse(input: ParseStream) -> Result<Self> {
-            let content;
+            let group = private::<ParseBuffer>::parse_group(input)?;
             Ok(TypeGroup {
-                group_token: grouped!(content in input),
-                elem: content.parse()?,
+                group_token: group.token,
+                elem: group.content.parse()?,
             })
         }
     }