Use consistent imports in codegen crate
diff --git a/codegen/src/visit.rs b/codegen/src/visit.rs
index 15888d1..7300220 100644
--- a/codegen/src/visit.rs
+++ b/codegen/src/visit.rs
@@ -1,9 +1,9 @@
-use crate::operand::*;
+use crate::operand::{Borrowed, Operand, Owned};
 use crate::{file, full, gen};
-use proc_macro2::{Span, TokenStream};
+use proc_macro2::{Ident, Span, TokenStream};
 use quote::{quote, TokenStreamExt};
-use syn::*;
-use syn_codegen as types;
+use syn::Index;
+use syn_codegen::{Data, Definitions, Features, Node, Type};
 
 const VISIT_SRC: &str = "../src/gen/visit.rs";
 
@@ -30,17 +30,17 @@
 }
 
 fn visit(
-    ty: &types::Type,
-    features: &types::Features,
-    defs: &types::Definitions,
+    ty: &Type,
+    features: &Features,
+    defs: &Definitions,
     name: &Operand,
 ) -> Option<TokenStream> {
     match ty {
-        types::Type::Box(t) => {
+        Type::Box(t) => {
             let name = name.owned_tokens();
             visit(t, features, defs, &Owned(quote!(*#name)))
         }
-        types::Type::Vec(t) => {
+        Type::Vec(t) => {
             let operand = Borrowed(quote!(it));
             let val = visit(t, features, defs, &operand)?;
             let name = name.ref_tokens();
@@ -50,7 +50,7 @@
                 }
             })
         }
-        types::Type::Punctuated(p) => {
+        Type::Punctuated(p) => {
             let operand = Borrowed(quote!(it));
             let val = visit(&p.element, features, defs, &operand)?;
             let name = name.ref_tokens();
@@ -61,7 +61,7 @@
                 }
             })
         }
-        types::Type::Option(t) => {
+        Type::Option(t) => {
             let it = Borrowed(quote!(it));
             let val = visit(t, features, defs, &it)?;
             let name = name.owned_tokens();
@@ -71,7 +71,7 @@
                 }
             })
         }
-        types::Type::Tuple(t) => {
+        Type::Tuple(t) => {
             let mut code = TokenStream::new();
             for (i, elem) in t.iter().enumerate() {
                 let name = name.tokens();
@@ -83,7 +83,7 @@
             }
             Some(code)
         }
-        types::Type::Token(t) => {
+        Type::Token(t) => {
             let name = name.tokens();
             let repr = &defs.tokens[t];
             let is_keyword = repr.chars().next().unwrap().is_alphabetic();
@@ -96,14 +96,14 @@
                 tokens_helper(_visitor, &#name.#spans)
             })
         }
-        types::Type::Group(_) => {
+        Type::Group(_) => {
             let name = name.tokens();
             Some(quote! {
                 tokens_helper(_visitor, &#name.span)
             })
         }
-        types::Type::Syn(t) => {
-            fn requires_full(features: &types::Features) -> bool {
+        Type::Syn(t) => {
+            fn requires_full(features: &Features) -> bool {
                 features.any.contains("full") && features.any.len() == 1
             }
             let mut res = simple_visit(t, name);
@@ -113,12 +113,12 @@
             }
             Some(res)
         }
-        types::Type::Ext(t) if gen::TERMINAL_TYPES.contains(&&t[..]) => Some(simple_visit(t, name)),
-        types::Type::Ext(_) | types::Type::Std(_) => None,
+        Type::Ext(t) if gen::TERMINAL_TYPES.contains(&&t[..]) => Some(simple_visit(t, name)),
+        Type::Ext(_) | Type::Std(_) => None,
     }
 }
 
-fn visit_features(features: &types::Features) -> TokenStream {
+fn visit_features(features: &Features) -> TokenStream {
     let features = &features.any;
     match features.len() {
         0 => quote!(),
@@ -127,7 +127,7 @@
     }
 }
 
-fn node(state: &mut State, s: &types::Node, defs: &types::Definitions) {
+fn node(state: &mut State, s: &Node, defs: &Definitions) {
     let features = visit_features(&s.features);
     let under_name = gen::under_name(&s.ident);
     let ty = Ident::new(&s.ident, Span::call_site());
@@ -136,7 +136,7 @@
     let mut visit_impl = TokenStream::new();
 
     match &s.data {
-        types::Data::Enum(variants) => {
+        Data::Enum(variants) => {
             let mut visit_variants = TokenStream::new();
 
             for (variant, fields) in variants {
@@ -182,7 +182,7 @@
                 }
             });
         }
-        types::Data::Struct(fields) => {
+        Data::Struct(fields) => {
             for (field, ty) in fields {
                 let id = Ident::new(&field, Span::call_site());
                 let ref_toks = Owned(quote!(_i.#id));
@@ -193,7 +193,7 @@
                 });
             }
         }
-        types::Data::Private => {}
+        Data::Private => {}
     }
 
     state.visit_trait.append_all(quote! {
@@ -213,7 +213,7 @@
     });
 }
 
-pub fn generate(defs: &types::Definitions) {
+pub fn generate(defs: &Definitions) {
     let state = gen::traverse(defs, node);
     let full_macro = full::get_macro();
     let visit_trait = state.visit_trait;