diff --git a/codegen/src/debug.rs b/codegen/src/debug.rs
index 7795496..0cda534 100644
--- a/codegen/src/debug.rs
+++ b/codegen/src/debug.rs
@@ -120,6 +120,10 @@
     if fields.len() != 1 {
         return None;
     }
+    let mut outer = outer;
+    if outer == "Visibility" {
+        outer = "Vis";
+    }
     match &fields[0] {
         Type::Syn(ty) if outer.to_owned() + inner == *ty => Some(ty),
         _ => None
diff --git a/tests/debug/gen.rs b/tests/debug/gen.rs
index d9aeee7..05a5f70 100644
--- a/tests/debug/gen.rs
+++ b/tests/debug/gen.rs
@@ -5786,19 +5786,29 @@
     fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
         let _val = &self.value;
         match _val {
-            syn::Visibility::Public(_v0) => {
-                let mut formatter = formatter.debug_tuple("Public");
-                formatter.field(Lite(_v0));
+            syn::Visibility::Public(_val) => {
+                let mut formatter = formatter.debug_struct("Visibility::Public");
                 formatter.finish()
             }
-            syn::Visibility::Crate(_v0) => {
-                let mut formatter = formatter.debug_tuple("Crate");
-                formatter.field(Lite(_v0));
+            syn::Visibility::Crate(_val) => {
+                let mut formatter = formatter.debug_struct("Visibility::Crate");
                 formatter.finish()
             }
-            syn::Visibility::Restricted(_v0) => {
-                let mut formatter = formatter.debug_tuple("Restricted");
-                formatter.field(Lite(_v0));
+            syn::Visibility::Restricted(_val) => {
+                let mut formatter = formatter.debug_struct("Visibility::Restricted");
+                if let Some(val) = &_val.in_token {
+                    #[derive(RefCast)]
+                    #[repr(transparent)]
+                    struct Print(syn::token::In);
+                    impl Debug for Print {
+                        fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
+                            formatter.write_str("Some")?;
+                            Ok(())
+                        }
+                    }
+                    formatter.field("in_token", Print::ref_cast(val));
+                }
+                formatter.field("path", Lite(&_val.path));
                 formatter.finish()
             }
             syn::Visibility::Inherited => formatter.write_str("Inherited"),
diff --git a/tests/test_derive_input.rs b/tests/test_derive_input.rs
index bf4440b..ef7d2c1 100644
--- a/tests/test_derive_input.rs
+++ b/tests/test_derive_input.rs
@@ -55,18 +55,14 @@
        ⋮            tts: `( Debug , Clone )`,
        ⋮        },
        ⋮    ],
-       ⋮    vis: Public(
-       ⋮        VisPublic,
-       ⋮    ),
+       ⋮    vis: Visibility::Public,
        ⋮    ident: "Item",
        ⋮    generics: Generics,
        ⋮    data: Data::Struct {
        ⋮        fields: Fields::Named {
        ⋮            named: [
        ⋮                Field {
-       ⋮                    vis: Public(
-       ⋮                        VisPublic,
-       ⋮                    ),
+       ⋮                    vis: Visibility::Public,
        ⋮                    ident: Some("ident"),
        ⋮                    colon_token: Some,
        ⋮                    ty: Type::Path {
@@ -81,9 +77,7 @@
        ⋮                    },
        ⋮                },
        ⋮                Field {
-       ⋮                    vis: Public(
-       ⋮                        VisPublic,
-       ⋮                    ),
+       ⋮                    vis: Visibility::Public,
        ⋮                    ident: Some("attrs"),
        ⋮                    colon_token: Some,
        ⋮                    ty: Type::Path {
