Remove clone from codegen types
diff --git a/codegen/src/gen.rs b/codegen/src/gen.rs
index 291758e..3daf75a 100644
--- a/codegen/src/gen.rs
+++ b/codegen/src/gen.rs
@@ -642,19 +642,17 @@
 const TERMINAL_TYPES: &[&str] = &["Span", "Ident"];
 
 pub fn generate(defs: &types::Definitions) {
-    let mut defs = defs.clone();
-
-    for &tt in TERMINAL_TYPES {
-        defs.types.push(types::Node {
+    let mut state = codegen::State::default();
+    for s in &defs.types {
+        codegen::generate(&mut state, s, defs);
+    }
+    for tt in TERMINAL_TYPES {
+        let s = types::Node {
             ident: tt.to_string(),
             features: types::Features::default(),
             data: types::Data::Private,
-        });
-    }
-
-    let mut state = codegen::State::default();
-    for s in &defs.types {
-        codegen::generate(&mut state, s, &defs);
+        };
+        codegen::generate(&mut state, &s, defs);
     }
 
     let full_macro = quote! {