diff --git a/codegen/src/main.rs b/codegen/src/main.rs
index c128e06..cc48ddd 100644
--- a/codegen/src/main.rs
+++ b/codegen/src/main.rs
@@ -17,6 +17,7 @@
 mod full;
 mod gen;
 mod json;
+mod operand;
 mod parse;
 mod version;
 mod visit;
diff --git a/codegen/src/operand.rs b/codegen/src/operand.rs
new file mode 100644
index 0000000..db3bd18
--- /dev/null
+++ b/codegen/src/operand.rs
@@ -0,0 +1,38 @@
+use proc_macro2::TokenStream;
+use quote::quote;
+
+pub enum Operand {
+    Borrowed(TokenStream),
+    Owned(TokenStream),
+}
+
+pub use self::Operand::*;
+
+impl Operand {
+    pub fn tokens(&self) -> &TokenStream {
+        match self {
+            Borrowed(n) | Owned(n) => n,
+        }
+    }
+
+    pub fn ref_tokens(&self) -> TokenStream {
+        match self {
+            Borrowed(n) => n.clone(),
+            Owned(n) => quote!(&#n),
+        }
+    }
+
+    pub fn ref_mut_tokens(&self) -> TokenStream {
+        match self {
+            Borrowed(n) => n.clone(),
+            Owned(n) => quote!(&mut #n),
+        }
+    }
+
+    pub fn owned_tokens(&self) -> TokenStream {
+        match self {
+            Borrowed(n) => quote!(*#n),
+            Owned(n) => n.clone(),
+        }
+    }
+}
diff --git a/codegen/src/visit.rs b/codegen/src/visit.rs
index 818ad61..9f85df9 100644
--- a/codegen/src/visit.rs
+++ b/codegen/src/visit.rs
@@ -1,3 +1,4 @@
+use crate::operand::*;
 use crate::{file, full, gen};
 use inflections::Inflect;
 use proc_macro2::{Span, TokenStream};
@@ -17,35 +18,6 @@
     Ident::new(&name.to_snake_case(), Span::call_site())
 }
 
-enum Operand {
-    Borrowed(TokenStream),
-    Owned(TokenStream),
-}
-
-use self::Operand::*;
-
-impl Operand {
-    fn tokens(&self) -> &TokenStream {
-        match self {
-            Borrowed(n) | Owned(n) => n,
-        }
-    }
-
-    fn ref_tokens(&self) -> TokenStream {
-        match self {
-            Borrowed(n) => n.clone(),
-            Owned(n) => quote!(&#n),
-        }
-    }
-
-    fn owned_tokens(&self) -> TokenStream {
-        match self {
-            Borrowed(n) => quote!(*#n),
-            Owned(n) => n.clone(),
-        }
-    }
-}
-
 fn simple_visit(item: &str, name: &Operand) -> TokenStream {
     let ident = under_name(item);
     let method = Ident::new(&format!("visit_{}", ident), Span::call_site());
diff --git a/codegen/src/visit_mut.rs b/codegen/src/visit_mut.rs
index 51d0c81..850ba56 100644
--- a/codegen/src/visit_mut.rs
+++ b/codegen/src/visit_mut.rs
@@ -1,3 +1,4 @@
+use crate::operand::*;
 use crate::{file, full, gen};
 use inflections::Inflect;
 use proc_macro2::{Span, TokenStream};
@@ -17,35 +18,6 @@
     Ident::new(&name.to_snake_case(), Span::call_site())
 }
 
-enum Operand {
-    Borrowed(TokenStream),
-    Owned(TokenStream),
-}
-
-use self::Operand::*;
-
-impl Operand {
-    fn tokens(&self) -> &TokenStream {
-        match self {
-            Borrowed(n) | Owned(n) => n,
-        }
-    }
-
-    fn ref_mut_tokens(&self) -> TokenStream {
-        match self {
-            Borrowed(n) => n.clone(),
-            Owned(n) => quote!(&mut #n),
-        }
-    }
-
-    fn owned_tokens(&self) -> TokenStream {
-        match self {
-            Borrowed(n) => quote!(*#n),
-            Owned(n) => n.clone(),
-        }
-    }
-}
-
 fn simple_visit(item: &str, name: &Operand) -> TokenStream {
     let ident = under_name(item);
     let method = Ident::new(&format!("visit_{}_mut", ident), Span::call_site());
