Clean up printing of Receiver to tokens
diff --git a/syntax/impls.rs b/syntax/impls.rs
index d3c4b0f..3509899 100644
--- a/syntax/impls.rs
+++ b/syntax/impls.rs
@@ -184,8 +184,13 @@
 
 impl PartialEq for Receiver {
     fn eq(&self, other: &Receiver) -> bool {
-        let Receiver { mutability, ident } = self;
         let Receiver {
+            ampersand: _,
+            mutability,
+            ident,
+        } = self;
+        let Receiver {
+            ampersand: _,
             mutability: mutability2,
             ident: ident2,
         } = other;
@@ -195,7 +200,11 @@
 
 impl Hash for Receiver {
     fn hash<H: Hasher>(&self, state: &mut H) {
-        let Receiver { mutability, ident } = self;
+        let Receiver {
+            ampersand: _,
+            mutability,
+            ident,
+        } = self;
         mutability.is_some().hash(state);
         ident.hash(state);
     }
diff --git a/syntax/mod.rs b/syntax/mod.rs
index 49bb299..b160e5a 100644
--- a/syntax/mod.rs
+++ b/syntax/mod.rs
@@ -75,6 +75,7 @@
 }
 
 pub struct Receiver {
+    pub ampersand: Token![&],
     pub mutability: Option<Token![mut]>,
     pub ident: Ident,
 }
diff --git a/syntax/parse.rs b/syntax/parse.rs
index 6e5b36e..7bd36de 100644
--- a/syntax/parse.rs
+++ b/syntax/parse.rs
@@ -180,6 +180,7 @@
                 if let Type::Ref(reference) = ty {
                     if let Type::Ident(ident) = reference.inner {
                         receiver = Some(Receiver {
+                            ampersand: reference.ampersand,
                             mutability: reference.mutability,
                             ident,
                         });
diff --git a/syntax/tokens.rs b/syntax/tokens.rs
index df11852..784de37 100644
--- a/syntax/tokens.rs
+++ b/syntax/tokens.rs
@@ -1,5 +1,5 @@
 use crate::syntax::atom::Atom::*;
-use crate::syntax::{Derive, ExternFn, Ref, Signature, Slice, Ty1, Type, Var};
+use crate::syntax::{Derive, ExternFn, Receiver, Ref, Signature, Slice, Ty1, Type, Var};
 use proc_macro2::{Ident, Span, TokenStream};
 use quote::{quote_spanned, ToTokens};
 use syn::Token;
@@ -97,3 +97,11 @@
         }
     }
 }
+
+impl ToTokens for Receiver {
+    fn to_tokens(&self, tokens: &mut TokenStream) {
+        self.ampersand.to_tokens(tokens);
+        self.mutability.to_tokens(tokens);
+        self.ident.to_tokens(tokens);
+    }
+}