Include token types in json file
diff --git a/codegen/src/gen.rs b/codegen/src/gen.rs
index c954961..1186ff9 100644
--- a/codegen/src/gen.rs
+++ b/codegen/src/gen.rs
@@ -116,7 +116,7 @@
     fn box_visit(
         elem: &types::Type,
         features: &types::Features,
-        types: &[types::TypeDef],
+        types: &[types::Node],
         kind: Kind,
         name: &Operand,
     ) -> Option<TokenStream> {
@@ -133,7 +133,7 @@
     fn vec_visit(
         elem: &types::Type,
         features: &types::Features,
-        types: &[types::TypeDef],
+        types: &[types::Node],
         kind: Kind,
         name: &Operand,
     ) -> Option<TokenStream> {
@@ -171,7 +171,7 @@
     fn punctuated_visit(
         elem: &types::Type,
         features: &types::Features,
-        types: &[types::TypeDef],
+        types: &[types::Node],
         kind: Kind,
         name: &Operand,
     ) -> Option<TokenStream> {
@@ -211,7 +211,7 @@
     fn option_visit(
         elem: &types::Type,
         features: &types::Features,
-        types: &[types::TypeDef],
+        types: &[types::Node],
         kind: Kind,
         name: &Operand,
     ) -> Option<TokenStream> {
@@ -241,7 +241,7 @@
     fn tuple_visit(
         elems: &[types::Type],
         features: &types::Features,
-        types: &[types::TypeDef],
+        types: &[types::Node],
         kind: Kind,
         name: &Operand,
     ) -> Option<TokenStream> {
@@ -333,7 +333,7 @@
     fn visit(
         ty: &types::Type,
         features: &types::Features,
-        types: &[types::TypeDef],
+        types: &[types::Node],
         kind: Kind,
         name: &Operand,
     ) -> Option<TokenStream> {
@@ -391,7 +391,7 @@
         }
     }
 
-    pub fn generate(state: &mut State, s: &types::TypeDef, types: &[types::TypeDef]) {
+    pub fn generate(state: &mut State, s: &types::Node, types: &[types::Node]) {
         let features = visit_features(s.features());
         let under_name = under_name(s.ident());
         let ty = Ident::new(s.ident(), Span::call_site());
@@ -404,7 +404,7 @@
         let mut fold_impl = TokenStream::new();
 
         match s {
-            types::TypeDef::Enum(ref e) => {
+            types::Node::Enum(ref e) => {
                 let mut visit_variants = TokenStream::new();
                 let mut visit_mut_variants = TokenStream::new();
                 let mut fold_variants = TokenStream::new();
@@ -508,7 +508,7 @@
                     }
                 });
             }
-            types::TypeDef::Struct(ref v) => {
+            types::Node::Struct(ref v) => {
                 let mut fold_fields = TokenStream::new();
 
                 for field in v.fields() {
@@ -555,7 +555,7 @@
         }
 
         let mut include_fold_impl = true;
-        if let types::TypeDef::Struct(ref data) = s {
+        if let types::Node::Struct(ref data) = s {
             if !data.all_fields_pub() {
                 include_fold_impl = false;
             }
@@ -631,10 +631,10 @@
         .unwrap();
 }
 
-pub fn generate(types: &[types::TypeDef]) {
+pub fn generate(defs: &types::Definitions) {
     let mut state = codegen::State::default();
-    for s in types {
-        codegen::generate(&mut state, s, types);
+    for s in &defs.types {
+        codegen::generate(&mut state, s, &defs.types);
     }
 
     let full_macro = quote! {