East const to make nested pointer types work
diff --git a/gen/src/write.rs b/gen/src/write.rs
index b3911c1..930ce0b 100644
--- a/gen/src/write.rs
+++ b/gen/src/write.rs
@@ -1173,17 +1173,31 @@
             write!(out, ">");
         }
         Type::Ref(r) => {
-            if !r.mutable {
-                write!(out, "const ");
+            if let Type::Ptr(_) = r.inner {
+                write_type_space(out, &r.inner);
+                if !r.mutable {
+                    write!(out, "const");
+                }
+            } else {
+                if !r.mutable {
+                    write!(out, "const ");
+                }
+                write_type(out, &r.inner);
             }
-            write_type(out, &r.inner);
             write!(out, " &");
         }
         Type::Ptr(p) => {
-            if !p.mutable {
-                write!(out, "const ");
+            if let Type::Ptr(_) = p.inner {
+                write_type_space(out, &p.inner);
+                if !p.mutable {
+                    write!(out, "const");
+                }
+            } else {
+                if !p.mutable {
+                    write!(out, "const ");
+                }
+                write_type(out, &p.inner);
             }
-            write_type(out, &p.inner);
             write!(out, " *");
         }
         Type::Str(_) => {