Omit Span::lo/hi when not using procmacro2_unstable

Token![...] being 24 bytes is a large number.
diff --git a/src/stable.rs b/src/stable.rs
index 9e69791..56c0dd2 100644
--- a/src/stable.rs
+++ b/src/stable.rs
@@ -54,7 +54,6 @@
 fn get_cursor(src: &str) -> Cursor {
     Cursor {
         rest: src,
-        off: 0,
     }
 }
 
@@ -313,15 +312,30 @@
 }
 
 #[derive(Clone, Copy, Debug)]
-pub struct Span { lo: u32, hi: u32 }
+pub struct Span {
+    #[cfg(procmacro2_unstable)]
+    lo: u32,
+    #[cfg(procmacro2_unstable)]
+    hi: u32,
+}
 
 impl Span {
     pub fn call_site() -> Span {
-        Span { lo: 0, hi: 0 }
+        Span {
+            #[cfg(procmacro2_unstable)]
+            lo: 0,
+            #[cfg(procmacro2_unstable)]
+            hi: 0,
+        }
     }
 
     pub fn def_site() -> Span {
-        Span { lo: 0, hi: 0 }
+        Span {
+            #[cfg(procmacro2_unstable)]
+            lo: 0,
+            #[cfg(procmacro2_unstable)]
+            hi: 0,
+        }
     }
 
     #[cfg(procmacro2_unstable)]
@@ -568,6 +582,16 @@
     |trees| ::TokenStream(TokenStream { inner: trees })
 ));
 
+#[cfg(not(procmacro2_unstable))]
+fn token_tree(input: Cursor) -> PResult<TokenTree> {
+    let (input, kind) = token_kind(input)?;
+    Ok((input, TokenTree {
+        span: ::Span(Span {}),
+        kind: kind,
+    }))
+}
+
+#[cfg(procmacro2_unstable)]
 fn token_tree(input: Cursor) -> PResult<TokenTree> {
     let input = skip_whitespace(input);
     let lo = input.off;