Move Cursor and TokenBuffer into buffer module
diff --git a/src/attr.rs b/src/attr.rs
index 10868c2..aa578c2 100644
--- a/src/attr.rs
+++ b/src/attr.rs
@@ -324,7 +324,7 @@
 #[cfg(feature = "parsing")]
 pub mod parsing {
     use super::*;
-    use cursor::Cursor;
+    use buffer::Cursor;
     use parse_error;
     use synom::PResult;
     use proc_macro2::{Literal, Spacing, Span, TokenNode, TokenTree};
diff --git a/src/cursor.rs b/src/buffer.rs
similarity index 96%
rename from src/cursor.rs
rename to src/buffer.rs
index ddedd46..05a2760 100644
--- a/src/cursor.rs
+++ b/src/buffer.rs
@@ -25,10 +25,10 @@
 use std::fmt::{self, Debug};
 
 /// Internal type which is used instead of `TokenTree` to represent a single
-/// `TokenTree` within a `SynomBuffer`.
+/// `TokenTree` within a `TokenBuffer`.
 enum Entry {
     /// Mimicing types from proc-macro.
-    Group(Span, Delimiter, SynomBuffer),
+    Group(Span, Delimiter, TokenBuffer),
     Term(Span, Term),
     Op(Span, char, Spacing),
     Literal(Span, Literal),
@@ -39,17 +39,17 @@
 
 /// A buffer of data which contains a structured representation of the input
 /// `TokenStream` object.
-pub struct SynomBuffer {
+pub struct TokenBuffer {
     // NOTE: Do not derive clone on this - there are raw pointers inside which
-    // will be messed up. Moving the `SynomBuffer` itself is safe as the actual
+    // will be messed up. Moving the `TokenBuffer` itself is safe as the actual
     // backing slices won't be moved.
     data: Box<[Entry]>,
 }
 
-impl SynomBuffer {
+impl TokenBuffer {
     // NOTE: DO NOT MUTATE THE `Vec` RETURNED FROM THIS FUNCTION ONCE IT
     // RETURNS, THE ADDRESS OF ITS BACKING MEMORY MUST REMAIN STABLE.
-    fn inner_new(stream: TokenStream, up: *const Entry) -> SynomBuffer {
+    fn inner_new(stream: TokenStream, up: *const Entry) -> TokenBuffer {
         // Build up the entries list, recording the locations of any Groups
         // in the list to be processed later.
         let mut entries = Vec::new();
@@ -94,12 +94,12 @@
             entries[idx] = Entry::Group(span, delim, inner);
         }
 
-        SynomBuffer { data: entries }
+        TokenBuffer { data: entries }
     }
 
-    /// Create a new SynomBuffer, which contains the data from the given
+    /// Create a new TokenBuffer, which contains the data from the given
     /// TokenStream.
-    pub fn new(stream: TokenStream) -> SynomBuffer {
+    pub fn new(stream: TokenStream) -> TokenBuffer {
         Self::inner_new(stream, ptr::null())
     }
 
@@ -113,7 +113,7 @@
 /// into the immutable data which is used internally to represent a
 /// `TokenStream`, and can be efficiently manipulated and copied around.
 ///
-/// An empty `Cursor` can be created directly, or one may create a `SynomBuffer`
+/// An empty `Cursor` can be created directly, or one may create a `TokenBuffer`
 /// object and get a cursor to its first token with `begin()`.
 ///
 /// Two cursors are equal if they have the same location in the same input
diff --git a/src/error.rs b/src/error.rs
index eddb33f..4241d1c 100644
--- a/src/error.rs
+++ b/src/error.rs
@@ -7,7 +7,7 @@
 // except according to those terms.
 
 use std::error::Error;
-use cursor::Cursor;
+use buffer::Cursor;
 use std::fmt::{self, Display};
 
 /// The result of a parser
diff --git a/src/expr.rs b/src/expr.rs
index 200a884..ee7aa19 100644
--- a/src/expr.rs
+++ b/src/expr.rs
@@ -804,7 +804,7 @@
     #[cfg(feature = "full")]
     use proc_macro2::TokenStream;
     use synom::Synom;
-    use cursor::Cursor;
+    use buffer::Cursor;
     #[cfg(feature = "full")]
     use parse_error;
     use synom::PResult;
diff --git a/src/ident.rs b/src/ident.rs
index 2f4be82..af58263 100644
--- a/src/ident.rs
+++ b/src/ident.rs
@@ -231,7 +231,7 @@
 pub mod parsing {
     use super::*;
     use synom::Synom;
-    use cursor::Cursor;
+    use buffer::Cursor;
     use parse_error;
     use synom::PResult;
 
diff --git a/src/item.rs b/src/item.rs
index 67e3edd..360337d 100644
--- a/src/item.rs
+++ b/src/item.rs
@@ -552,7 +552,8 @@
 pub mod parsing {
     use super::*;
 
-    use synom::{Cursor, PResult, Synom};
+    use buffer::Cursor;
+    use synom::{PResult, Synom};
 
     impl_synom!(Item "item" alt!(
         syn!(ItemExternCrate) => { Item::ExternCrate }
diff --git a/src/lib.rs b/src/lib.rs
index 386ba97..937953c 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -377,7 +377,7 @@
 pub use path::PathTokens;
 
 #[cfg(feature = "parsing")]
-mod cursor;
+pub mod buffer;
 #[cfg(feature = "parsing")]
 pub mod synom;
 pub mod punctuated;
@@ -408,7 +408,7 @@
 #[cfg(feature = "parsing")]
 use synom::Synom;
 #[cfg(feature = "parsing")]
-use cursor::SynomBuffer;
+use buffer::TokenBuffer;
 
 #[cfg(feature = "parsing")]
 mod error;
@@ -471,7 +471,7 @@
 where
     T: Synom,
 {
-    let buf = SynomBuffer::new(tokens);
+    let buf = TokenBuffer::new(tokens);
     let result = T::parse(buf.begin());
     let err = match result {
         Ok((t, rest)) => {
diff --git a/src/lifetime.rs b/src/lifetime.rs
index eadd273..e16b6b4 100644
--- a/src/lifetime.rs
+++ b/src/lifetime.rs
@@ -101,7 +101,7 @@
 pub mod parsing {
     use super::*;
     use synom::Synom;
-    use cursor::Cursor;
+    use buffer::Cursor;
     use parse_error;
     use synom::PResult;
 
diff --git a/src/lit.rs b/src/lit.rs
index 041661a..b1977cd 100644
--- a/src/lit.rs
+++ b/src/lit.rs
@@ -271,7 +271,7 @@
 pub mod parsing {
     use super::*;
     use synom::Synom;
-    use cursor::Cursor;
+    use buffer::Cursor;
     use parse_error;
     use synom::PResult;
 
diff --git a/src/parsers.rs b/src/parsers.rs
index a72aaa8..1059078 100644
--- a/src/parsers.rs
+++ b/src/parsers.rs
@@ -6,7 +6,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use cursor::Cursor;
+use buffer::Cursor;
 use parse_error;
 use synom::PResult;
 
@@ -63,13 +63,13 @@
 #[macro_export]
 macro_rules! named {
     ($name:ident -> $o:ty, $submac:ident!( $($args:tt)* )) => {
-        fn $name(i: $crate::synom::Cursor) -> $crate::synom::PResult<$o> {
+        fn $name(i: $crate::buffer::Cursor) -> $crate::synom::PResult<$o> {
             $submac!(i, $($args)*)
         }
     };
 
     (pub $name:ident -> $o:ty, $submac:ident!( $($args:tt)* )) => {
-        pub fn $name(i: $crate::synom::Cursor) -> $crate::synom::PResult<$o> {
+        pub fn $name(i: $crate::buffer::Cursor) -> $crate::synom::PResult<$o> {
             $submac!(i, $($args)*)
         }
     };
@@ -77,13 +77,13 @@
     // These two variants are for defining named parsers which have custom
     // arguments, and are called with `call!()`
     ($name:ident($($params:tt)*) -> $o:ty, $submac:ident!( $($args:tt)* )) => {
-        fn $name(i: $crate::synom::Cursor, $($params)*) -> $crate::synom::PResult<$o> {
+        fn $name(i: $crate::buffer::Cursor, $($params)*) -> $crate::synom::PResult<$o> {
             $submac!(i, $($args)*)
         }
     };
 
     (pub $name:ident($($params:tt)*) -> $o:ty, $submac:ident!( $($args:tt)* )) => {
-        pub fn $name(i: $crate::synom::Cursor, $($params)*) -> $crate::synom::PResult<$o> {
+        pub fn $name(i: $crate::buffer::Cursor, $($params)*) -> $crate::synom::PResult<$o> {
             $submac!(i, $($args)*)
         }
     };
diff --git a/src/punctuated.rs b/src/punctuated.rs
index 4369724..e9eeb12 100644
--- a/src/punctuated.rs
+++ b/src/punctuated.rs
@@ -323,7 +323,7 @@
 mod parsing {
     use super::Punctuated;
     use synom::Synom;
-    use cursor::Cursor;
+    use buffer::Cursor;
     use parse_error;
     use synom::PResult;
 
diff --git a/src/synom.rs b/src/synom.rs
index de16e29..b2469ed 100644
--- a/src/synom.rs
+++ b/src/synom.rs
@@ -31,10 +31,10 @@
 
 use proc_macro2::TokenStream;
 
-pub use cursor::*;
-
 pub use error::{PResult, ParseError};
 
+use buffer::Cursor;
+
 pub trait Synom: Sized {
     fn parse(input: Cursor) -> PResult<Self>;
 
diff --git a/src/token.rs b/src/token.rs
index 53ed6fb..c52a546 100644
--- a/src/token.rs
+++ b/src/token.rs
@@ -79,7 +79,7 @@
 
         #[cfg(feature = "parsing")]
         impl ::Synom for $name {
-            fn parse(tokens: $crate::synom::Cursor) -> $crate::synom::PResult<$name> {
+            fn parse(tokens: $crate::buffer::Cursor) -> $crate::synom::PResult<$name> {
                 parsing::punct($s, tokens, $name)
             }
 
@@ -130,7 +130,7 @@
 
         #[cfg(feature = "parsing")]
         impl ::Synom for $name {
-            fn parse(tokens: $crate::synom::Cursor) -> $crate::synom::PResult<$name> {
+            fn parse(tokens: $crate::buffer::Cursor) -> $crate::synom::PResult<$name> {
                 parsing::keyword($s, tokens, $name)
             }
         }
@@ -179,8 +179,8 @@
             }
 
             #[cfg(feature = "parsing")]
-            pub fn parse<F, R>(tokens: $crate::synom::Cursor, f: F) -> $crate::synom::PResult<($name, R)>
-                where F: FnOnce($crate::synom::Cursor) -> $crate::synom::PResult<R>
+            pub fn parse<F, R>(tokens: $crate::buffer::Cursor, f: F) -> $crate::synom::PResult<($name, R)>
+                where F: FnOnce($crate::buffer::Cursor) -> $crate::synom::PResult<R>
             {
                 parsing::delim($s, tokens, $name, f)
             }
@@ -482,7 +482,7 @@
 mod parsing {
     use proc_macro2::{Delimiter, Spacing, Span};
 
-    use cursor::Cursor;
+    use buffer::Cursor;
     use parse_error;
     use synom::PResult;
 
diff --git a/src/tt.rs b/src/tt.rs
index 043b22f..11c3e3c 100644
--- a/src/tt.rs
+++ b/src/tt.rs
@@ -7,7 +7,7 @@
 // except according to those terms.
 
 use proc_macro2::{Delimiter, TokenNode, TokenStream, TokenTree};
-use cursor::Cursor;
+use buffer::Cursor;
 use parse_error;
 use synom::PResult;
 use MacroDelimiter;