Reduce json nesting
diff --git a/codegen/src/gen.rs b/codegen/src/gen.rs
index 9f622b9..c954961 100644
--- a/codegen/src/gen.rs
+++ b/codegen/src/gen.rs
@@ -340,7 +340,9 @@
         match ty {
             types::Type::Box(t) => box_visit(&*t, features, types, kind, name),
             types::Type::Vec(t) => vec_visit(&*t, features, types, kind, name),
-            types::Type::Punctuated(t, _) => punctuated_visit(&*t, features, types, kind, name),
+            types::Type::Punctuated(p) => {
+                punctuated_visit(p.element(), features, types, kind, name)
+            }
             types::Type::Option(t) => option_visit(&*t, features, types, kind, name),
             types::Type::Tuple(t) => tuple_visit(t, features, types, kind, name),
             types::Type::Token(t) => {
@@ -350,7 +352,7 @@
                     Some(token_punct_visit(t, kind, name))
                 }
             }
-            types::Type::TokenGroup(t) => Some(token_group_visit(&t[..], kind, name)),
+            types::Type::Group(t) => Some(token_group_visit(&t[..], kind, name)),
             types::Type::Item(t) => {
                 fn requires_full(features: &types::Features) -> bool {
                     features.contains("full") && features.len() == 1
diff --git a/codegen/src/parse.rs b/codegen/src/parse.rs
index e7eef19..25b8ac1 100644
--- a/codegen/src/parse.rs
+++ b/codegen/src/parse.rs
@@ -162,7 +162,7 @@
                         _ => panic!(),
                     };
 
-                    types::Type::Punctuated(Box::new(nested), punct)
+                    types::Type::Punctuated(types::Punctuated::new(nested, punct))
                 }
                 "Vec" => {
                     let nested = introspect_type(first_arg(&last.arguments), items, tokens);
@@ -173,7 +173,7 @@
                     types::Type::Box(Box::new(nested))
                 }
                 "Brace" | "Bracket" | "Paren" | "Group" => {
-                    types::Type::TokenGroup(last.ident.to_string())
+                    types::Type::Group(last.ident.to_string())
                 }
                 "TokenStream" | "Literal" => types::Type::Ext(last.ident.to_string()),
                 "String" | "u32" | "usize" | "bool" => types::Type::Std(last.ident.to_string()),
diff --git a/codegen/src/types.rs b/codegen/src/types.rs
index 3770f41..679b72e 100644
--- a/codegen/src/types.rs
+++ b/codegen/src/types.rs
@@ -1,7 +1,7 @@
 use std::ops;
 
 #[derive(Debug, Serialize)]
-#[serde(rename_all = "snake_case")]
+#[serde(tag = "node", rename_all = "lowercase")]
 pub enum TypeDef {
     Struct(Struct),
     Enum(Enum),
@@ -31,11 +31,12 @@
 #[derive(Debug, Serialize)]
 pub struct Field {
     ident: String,
+    #[serde(rename = "type")]
     ty: Type,
 }
 
 #[derive(Debug, Serialize)]
-#[serde(rename_all = "snake_case")]
+#[serde(rename_all = "lowercase")]
 pub enum Type {
     /// Type defined by `syn`
     Item(String),
@@ -50,10 +51,11 @@
     Token(Token),
 
     /// Token group
-    TokenGroup(String),
+    Group(String),
 
     /// Punctuated list
-    Punctuated(Box<Type>, Token),
+    Punctuated(Punctuated),
+
     Option(Box<Type>),
     Box(Box<Type>),
     Vec(Box<Type>),
@@ -63,9 +65,16 @@
 #[derive(Debug, Clone, Serialize)]
 pub struct Token {
     repr: String,
+    #[serde(rename = "type")]
     ty: String,
 }
 
+#[derive(Debug, Serialize)]
+pub struct Punctuated {
+    element: Box<Type>,
+    punct: Token,
+}
+
 #[derive(Debug, Default, Clone, Serialize)]
 pub struct Features {
     any: Vec<String>,
@@ -172,6 +181,16 @@
     }
 }
 
+impl Punctuated {
+    pub fn new(element: Type, punct: Token) -> Self {
+        Punctuated { element: Box::new(element), punct }
+    }
+
+    pub fn element(&self) -> &Type {
+        &self.element
+    }
+}
+
 impl Features {
     pub fn new(any: Vec<String>) -> Features {
         Features { any }
diff --git a/syn.json b/syn.json
index 9db26ba..597cc1f 100644
--- a/syn.json
+++ b/syn.json
@@ -2,9690 +2,9493 @@
   "version": "0.15.26",
   "types": [
     {
-      "struct": {
-        "ident": "Abi",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "extern_token",
-            "ty": {
-              "token": {
-                "repr": "extern",
-                "ty": "Extern"
-              }
-            }
-          },
-          {
-            "ident": "name",
-            "ty": {
-              "option": {
-                "item": "LitStr"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "AngleBracketedGenericArguments",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "colon2_token",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": "::",
-                  "ty": "Colon2"
-                }
-              }
-            }
-          },
-          {
-            "ident": "lt_token",
-            "ty": {
-              "token": {
-                "repr": "<",
-                "ty": "Lt"
-              }
-            }
-          },
-          {
-            "ident": "args",
-            "ty": {
-              "punctuated": [
-                {
-                  "item": "GenericArgument"
-                },
-                {
-                  "repr": ",",
-                  "ty": "Comma"
-                }
-              ]
-            }
-          },
-          {
-            "ident": "gt_token",
-            "ty": {
-              "token": {
-                "repr": ">",
-                "ty": "Gt"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ArgCaptured",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "pat",
-            "ty": {
-              "item": "Pat"
-            }
-          },
-          {
-            "ident": "colon_token",
-            "ty": {
-              "token": {
-                "repr": ":",
-                "ty": "Colon"
-              }
-            }
-          },
-          {
-            "ident": "ty",
-            "ty": {
-              "item": "Type"
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ArgSelf",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "mutability",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": "mut",
-                  "ty": "Mut"
-                }
-              }
-            }
-          },
-          {
-            "ident": "self_token",
-            "ty": {
-              "token": {
-                "repr": "self",
-                "ty": "SelfValue"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ArgSelfRef",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "and_token",
-            "ty": {
-              "token": {
-                "repr": "&",
-                "ty": "And"
-              }
-            }
-          },
-          {
-            "ident": "lifetime",
-            "ty": {
-              "option": {
-                "item": "Lifetime"
-              }
-            }
-          },
-          {
-            "ident": "mutability",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": "mut",
-                  "ty": "Mut"
-                }
-              }
-            }
-          },
-          {
-            "ident": "self_token",
-            "ty": {
-              "token": {
-                "repr": "self",
-                "ty": "SelfValue"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "Arm",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "leading_vert",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": "|",
-                  "ty": "Or"
-                }
-              }
-            }
-          },
-          {
-            "ident": "pats",
-            "ty": {
-              "punctuated": [
-                {
-                  "item": "Pat"
-                },
-                {
-                  "repr": "|",
-                  "ty": "Or"
-                }
-              ]
-            }
-          },
-          {
-            "ident": "guard",
-            "ty": {
-              "option": {
-                "tuple": [
-                  {
-                    "token": {
-                      "repr": "if",
-                      "ty": "If"
-                    }
-                  },
-                  {
-                    "box": {
-                      "item": "Expr"
-                    }
-                  }
-                ]
-              }
-            }
-          },
-          {
-            "ident": "fat_arrow_token",
-            "ty": {
-              "token": {
-                "repr": "=>",
-                "ty": "FatArrow"
-              }
-            }
-          },
-          {
-            "ident": "body",
-            "ty": {
-              "box": {
-                "item": "Expr"
-              }
-            }
-          },
-          {
-            "ident": "comma",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": ",",
-                  "ty": "Comma"
-                }
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "enum": {
-        "ident": "AttrStyle",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "variants": [
-          {
-            "ident": "Outer",
-            "fields": []
-          },
-          {
-            "ident": "Inner",
-            "fields": [
-              {
-                "token": {
-                  "repr": "!",
-                  "ty": "Bang"
-                }
-              }
-            ]
-          }
+      "node": "struct",
+      "ident": "Abi",
+      "features": {
+        "any": [
+          "full",
+          "derive"
         ]
-      }
-    },
-    {
-      "struct": {
-        "ident": "Attribute",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "pound_token",
-            "ty": {
-              "token": {
-                "repr": "#",
-                "ty": "Pound"
-              }
-            }
-          },
-          {
-            "ident": "style",
-            "ty": {
-              "item": "AttrStyle"
-            }
-          },
-          {
-            "ident": "bracket_token",
-            "ty": {
-              "token_group": "Bracket"
-            }
-          },
-          {
-            "ident": "path",
-            "ty": {
-              "item": "Path"
-            }
-          },
-          {
-            "ident": "tts",
-            "ty": {
-              "ext": "TokenStream"
+      },
+      "fields": [
+        {
+          "ident": "extern_token",
+          "type": {
+            "token": {
+              "repr": "extern",
+              "type": "Extern"
             }
           }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "BareFnArg",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
         },
-        "fields": [
-          {
-            "ident": "name",
-            "ty": {
-              "option": {
-                "tuple": [
-                  {
-                    "item": "BareFnArgName"
-                  },
-                  {
-                    "token": {
-                      "repr": ":",
-                      "ty": "Colon"
-                    }
-                  }
-                ]
-              }
-            }
-          },
-          {
-            "ident": "ty",
-            "ty": {
-              "item": "Type"
+        {
+          "ident": "name",
+          "type": {
+            "option": {
+              "item": "LitStr"
             }
           }
-        ],
-        "all_fields_pub": true
-      }
+        }
+      ],
+      "all_fields_pub": true
     },
     {
-      "enum": {
-        "ident": "BareFnArgName",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "variants": [
-          {
-            "ident": "Named",
-            "fields": [
-              {
-                "item": "Ident"
-              }
-            ]
-          },
-          {
-            "ident": "Wild",
-            "fields": [
-              {
-                "token": {
-                  "repr": "_",
-                  "ty": "Underscore"
-                }
-              }
-            ]
-          }
+      "node": "struct",
+      "ident": "AngleBracketedGenericArguments",
+      "features": {
+        "any": [
+          "full",
+          "derive"
         ]
-      }
+      },
+      "fields": [
+        {
+          "ident": "colon2_token",
+          "type": {
+            "option": {
+              "token": {
+                "repr": "::",
+                "type": "Colon2"
+              }
+            }
+          }
+        },
+        {
+          "ident": "lt_token",
+          "type": {
+            "token": {
+              "repr": "<",
+              "type": "Lt"
+            }
+          }
+        },
+        {
+          "ident": "args",
+          "type": {
+            "punctuated": {
+              "element": {
+                "item": "GenericArgument"
+              },
+              "punct": {
+                "repr": ",",
+                "type": "Comma"
+              }
+            }
+          }
+        },
+        {
+          "ident": "gt_token",
+          "type": {
+            "token": {
+              "repr": ">",
+              "type": "Gt"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
     },
     {
-      "enum": {
-        "ident": "BinOp",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "variants": [
-          {
-            "ident": "Add",
-            "fields": [
-              {
-                "token": {
-                  "repr": "+",
-                  "ty": "Add"
-                }
-              }
-            ]
-          },
-          {
-            "ident": "Sub",
-            "fields": [
-              {
-                "token": {
-                  "repr": "-",
-                  "ty": "Sub"
-                }
-              }
-            ]
-          },
-          {
-            "ident": "Mul",
-            "fields": [
-              {
-                "token": {
-                  "repr": "*",
-                  "ty": "Star"
-                }
-              }
-            ]
-          },
-          {
-            "ident": "Div",
-            "fields": [
-              {
-                "token": {
-                  "repr": "/",
-                  "ty": "Div"
-                }
-              }
-            ]
-          },
-          {
-            "ident": "Rem",
-            "fields": [
-              {
-                "token": {
-                  "repr": "%",
-                  "ty": "Rem"
-                }
-              }
-            ]
-          },
-          {
-            "ident": "And",
-            "fields": [
-              {
-                "token": {
-                  "repr": "&&",
-                  "ty": "AndAnd"
-                }
-              }
-            ]
-          },
-          {
-            "ident": "Or",
-            "fields": [
-              {
-                "token": {
-                  "repr": "||",
-                  "ty": "OrOr"
-                }
-              }
-            ]
-          },
-          {
-            "ident": "BitXor",
-            "fields": [
-              {
-                "token": {
-                  "repr": "^",
-                  "ty": "Caret"
-                }
-              }
-            ]
-          },
-          {
-            "ident": "BitAnd",
-            "fields": [
-              {
-                "token": {
-                  "repr": "&",
-                  "ty": "And"
-                }
-              }
-            ]
-          },
-          {
-            "ident": "BitOr",
-            "fields": [
-              {
-                "token": {
-                  "repr": "|",
-                  "ty": "Or"
-                }
-              }
-            ]
-          },
-          {
-            "ident": "Shl",
-            "fields": [
-              {
-                "token": {
-                  "repr": "<<",
-                  "ty": "Shl"
-                }
-              }
-            ]
-          },
-          {
-            "ident": "Shr",
-            "fields": [
-              {
-                "token": {
-                  "repr": ">>",
-                  "ty": "Shr"
-                }
-              }
-            ]
-          },
-          {
-            "ident": "Eq",
-            "fields": [
-              {
-                "token": {
-                  "repr": "==",
-                  "ty": "EqEq"
-                }
-              }
-            ]
-          },
-          {
-            "ident": "Lt",
-            "fields": [
-              {
-                "token": {
-                  "repr": "<",
-                  "ty": "Lt"
-                }
-              }
-            ]
-          },
-          {
-            "ident": "Le",
-            "fields": [
-              {
-                "token": {
-                  "repr": "<=",
-                  "ty": "Le"
-                }
-              }
-            ]
-          },
-          {
-            "ident": "Ne",
-            "fields": [
-              {
-                "token": {
-                  "repr": "!=",
-                  "ty": "Ne"
-                }
-              }
-            ]
-          },
-          {
-            "ident": "Ge",
-            "fields": [
-              {
-                "token": {
-                  "repr": ">=",
-                  "ty": "Ge"
-                }
-              }
-            ]
-          },
-          {
-            "ident": "Gt",
-            "fields": [
-              {
-                "token": {
-                  "repr": ">",
-                  "ty": "Gt"
-                }
-              }
-            ]
-          },
-          {
-            "ident": "AddEq",
-            "fields": [
-              {
-                "token": {
-                  "repr": "+=",
-                  "ty": "AddEq"
-                }
-              }
-            ]
-          },
-          {
-            "ident": "SubEq",
-            "fields": [
-              {
-                "token": {
-                  "repr": "-=",
-                  "ty": "SubEq"
-                }
-              }
-            ]
-          },
-          {
-            "ident": "MulEq",
-            "fields": [
-              {
-                "token": {
-                  "repr": "*=",
-                  "ty": "MulEq"
-                }
-              }
-            ]
-          },
-          {
-            "ident": "DivEq",
-            "fields": [
-              {
-                "token": {
-                  "repr": "/=",
-                  "ty": "DivEq"
-                }
-              }
-            ]
-          },
-          {
-            "ident": "RemEq",
-            "fields": [
-              {
-                "token": {
-                  "repr": "%=",
-                  "ty": "RemEq"
-                }
-              }
-            ]
-          },
-          {
-            "ident": "BitXorEq",
-            "fields": [
-              {
-                "token": {
-                  "repr": "^=",
-                  "ty": "CaretEq"
-                }
-              }
-            ]
-          },
-          {
-            "ident": "BitAndEq",
-            "fields": [
-              {
-                "token": {
-                  "repr": "&=",
-                  "ty": "AndEq"
-                }
-              }
-            ]
-          },
-          {
-            "ident": "BitOrEq",
-            "fields": [
-              {
-                "token": {
-                  "repr": "|=",
-                  "ty": "OrEq"
-                }
-              }
-            ]
-          },
-          {
-            "ident": "ShlEq",
-            "fields": [
-              {
-                "token": {
-                  "repr": "<<=",
-                  "ty": "ShlEq"
-                }
-              }
-            ]
-          },
-          {
-            "ident": "ShrEq",
-            "fields": [
-              {
-                "token": {
-                  "repr": ">>=",
-                  "ty": "ShrEq"
-                }
-              }
-            ]
-          }
+      "node": "struct",
+      "ident": "ArgCaptured",
+      "features": {
+        "any": [
+          "full"
         ]
-      }
-    },
-    {
-      "struct": {
-        "ident": "Binding",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
+      },
+      "fields": [
+        {
+          "ident": "pat",
+          "type": {
+            "item": "Pat"
+          }
         },
-        "fields": [
-          {
-            "ident": "ident",
-            "ty": {
-              "item": "Ident"
-            }
-          },
-          {
-            "ident": "eq_token",
-            "ty": {
-              "token": {
-                "repr": "=",
-                "ty": "Eq"
-              }
-            }
-          },
-          {
-            "ident": "ty",
-            "ty": {
-              "item": "Type"
+        {
+          "ident": "colon_token",
+          "type": {
+            "token": {
+              "repr": ":",
+              "type": "Colon"
             }
           }
-        ],
-        "all_fields_pub": true
-      }
+        },
+        {
+          "ident": "ty",
+          "type": {
+            "item": "Type"
+          }
+        }
+      ],
+      "all_fields_pub": true
     },
     {
-      "struct": {
-        "ident": "Block",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "brace_token",
-            "ty": {
-              "token_group": "Brace"
-            }
-          },
-          {
-            "ident": "stmts",
-            "ty": {
-              "vec": {
-                "item": "Stmt"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "BoundLifetimes",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "for_token",
-            "ty": {
-              "token": {
-                "repr": "for",
-                "ty": "For"
-              }
-            }
-          },
-          {
-            "ident": "lt_token",
-            "ty": {
-              "token": {
-                "repr": "<",
-                "ty": "Lt"
-              }
-            }
-          },
-          {
-            "ident": "lifetimes",
-            "ty": {
-              "punctuated": [
-                {
-                  "item": "LifetimeDef"
-                },
-                {
-                  "repr": ",",
-                  "ty": "Comma"
-                }
-              ]
-            }
-          },
-          {
-            "ident": "gt_token",
-            "ty": {
-              "token": {
-                "repr": ">",
-                "ty": "Gt"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ConstParam",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "const_token",
-            "ty": {
-              "token": {
-                "repr": "const",
-                "ty": "Const"
-              }
-            }
-          },
-          {
-            "ident": "ident",
-            "ty": {
-              "item": "Ident"
-            }
-          },
-          {
-            "ident": "colon_token",
-            "ty": {
-              "token": {
-                "repr": ":",
-                "ty": "Colon"
-              }
-            }
-          },
-          {
-            "ident": "ty",
-            "ty": {
-              "item": "Type"
-            }
-          },
-          {
-            "ident": "eq_token",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": "=",
-                  "ty": "Eq"
-                }
-              }
-            }
-          },
-          {
-            "ident": "default",
-            "ty": {
-              "option": {
-                "item": "Expr"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "Constraint",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "ident",
-            "ty": {
-              "item": "Ident"
-            }
-          },
-          {
-            "ident": "colon_token",
-            "ty": {
-              "token": {
-                "repr": ":",
-                "ty": "Colon"
-              }
-            }
-          },
-          {
-            "ident": "bounds",
-            "ty": {
-              "punctuated": [
-                {
-                  "item": "TypeParamBound"
-                },
-                {
-                  "repr": "+",
-                  "ty": "Add"
-                }
-              ]
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "enum": {
-        "ident": "Data",
-        "features": {
-          "any": [
-            "derive"
-          ]
-        },
-        "variants": [
-          {
-            "ident": "Struct",
-            "fields": [
-              {
-                "item": "DataStruct"
-              }
-            ]
-          },
-          {
-            "ident": "Enum",
-            "fields": [
-              {
-                "item": "DataEnum"
-              }
-            ]
-          },
-          {
-            "ident": "Union",
-            "fields": [
-              {
-                "item": "DataUnion"
-              }
-            ]
-          }
+      "node": "struct",
+      "ident": "ArgSelf",
+      "features": {
+        "any": [
+          "full"
         ]
-      }
-    },
-    {
-      "struct": {
-        "ident": "DataEnum",
-        "features": {
-          "any": [
-            "derive"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "enum_token",
-            "ty": {
+      },
+      "fields": [
+        {
+          "ident": "mutability",
+          "type": {
+            "option": {
               "token": {
-                "repr": "enum",
-                "ty": "Enum"
+                "repr": "mut",
+                "type": "Mut"
               }
             }
-          },
-          {
-            "ident": "brace_token",
-            "ty": {
-              "token_group": "Brace"
-            }
-          },
-          {
-            "ident": "variants",
-            "ty": {
-              "punctuated": [
-                {
-                  "item": "Variant"
-                },
-                {
-                  "repr": ",",
-                  "ty": "Comma"
-                }
-              ]
+          }
+        },
+        {
+          "ident": "self_token",
+          "type": {
+            "token": {
+              "repr": "self",
+              "type": "SelfValue"
             }
           }
-        ],
-        "all_fields_pub": true
-      }
+        }
+      ],
+      "all_fields_pub": true
     },
     {
-      "struct": {
-        "ident": "DataStruct",
-        "features": {
-          "any": [
-            "derive"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "struct_token",
-            "ty": {
-              "token": {
-                "repr": "struct",
-                "ty": "Struct"
-              }
-            }
-          },
-          {
-            "ident": "fields",
-            "ty": {
-              "item": "Fields"
-            }
-          },
-          {
-            "ident": "semi_token",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": ";",
-                  "ty": "Semi"
-                }
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "DataUnion",
-        "features": {
-          "any": [
-            "derive"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "union_token",
-            "ty": {
-              "token": {
-                "repr": "union",
-                "ty": "Union"
-              }
-            }
-          },
-          {
-            "ident": "fields",
-            "ty": {
-              "item": "FieldsNamed"
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "DeriveInput",
-        "features": {
-          "any": [
-            "derive"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "vis",
-            "ty": {
-              "item": "Visibility"
-            }
-          },
-          {
-            "ident": "ident",
-            "ty": {
-              "item": "Ident"
-            }
-          },
-          {
-            "ident": "generics",
-            "ty": {
-              "item": "Generics"
-            }
-          },
-          {
-            "ident": "data",
-            "ty": {
-              "item": "Data"
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "enum": {
-        "ident": "Expr",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "variants": [
-          {
-            "ident": "Box",
-            "fields": [
-              {
-                "item": "ExprBox"
-              }
-            ]
-          },
-          {
-            "ident": "InPlace",
-            "fields": [
-              {
-                "item": "ExprInPlace"
-              }
-            ]
-          },
-          {
-            "ident": "Array",
-            "fields": [
-              {
-                "item": "ExprArray"
-              }
-            ]
-          },
-          {
-            "ident": "Call",
-            "fields": [
-              {
-                "item": "ExprCall"
-              }
-            ]
-          },
-          {
-            "ident": "MethodCall",
-            "fields": [
-              {
-                "item": "ExprMethodCall"
-              }
-            ]
-          },
-          {
-            "ident": "Tuple",
-            "fields": [
-              {
-                "item": "ExprTuple"
-              }
-            ]
-          },
-          {
-            "ident": "Binary",
-            "fields": [
-              {
-                "item": "ExprBinary"
-              }
-            ]
-          },
-          {
-            "ident": "Unary",
-            "fields": [
-              {
-                "item": "ExprUnary"
-              }
-            ]
-          },
-          {
-            "ident": "Lit",
-            "fields": [
-              {
-                "item": "ExprLit"
-              }
-            ]
-          },
-          {
-            "ident": "Cast",
-            "fields": [
-              {
-                "item": "ExprCast"
-              }
-            ]
-          },
-          {
-            "ident": "Type",
-            "fields": [
-              {
-                "item": "ExprType"
-              }
-            ]
-          },
-          {
-            "ident": "Let",
-            "fields": [
-              {
-                "item": "ExprLet"
-              }
-            ]
-          },
-          {
-            "ident": "If",
-            "fields": [
-              {
-                "item": "ExprIf"
-              }
-            ]
-          },
-          {
-            "ident": "While",
-            "fields": [
-              {
-                "item": "ExprWhile"
-              }
-            ]
-          },
-          {
-            "ident": "ForLoop",
-            "fields": [
-              {
-                "item": "ExprForLoop"
-              }
-            ]
-          },
-          {
-            "ident": "Loop",
-            "fields": [
-              {
-                "item": "ExprLoop"
-              }
-            ]
-          },
-          {
-            "ident": "Match",
-            "fields": [
-              {
-                "item": "ExprMatch"
-              }
-            ]
-          },
-          {
-            "ident": "Closure",
-            "fields": [
-              {
-                "item": "ExprClosure"
-              }
-            ]
-          },
-          {
-            "ident": "Unsafe",
-            "fields": [
-              {
-                "item": "ExprUnsafe"
-              }
-            ]
-          },
-          {
-            "ident": "Block",
-            "fields": [
-              {
-                "item": "ExprBlock"
-              }
-            ]
-          },
-          {
-            "ident": "Assign",
-            "fields": [
-              {
-                "item": "ExprAssign"
-              }
-            ]
-          },
-          {
-            "ident": "AssignOp",
-            "fields": [
-              {
-                "item": "ExprAssignOp"
-              }
-            ]
-          },
-          {
-            "ident": "Field",
-            "fields": [
-              {
-                "item": "ExprField"
-              }
-            ]
-          },
-          {
-            "ident": "Index",
-            "fields": [
-              {
-                "item": "ExprIndex"
-              }
-            ]
-          },
-          {
-            "ident": "Range",
-            "fields": [
-              {
-                "item": "ExprRange"
-              }
-            ]
-          },
-          {
-            "ident": "Path",
-            "fields": [
-              {
-                "item": "ExprPath"
-              }
-            ]
-          },
-          {
-            "ident": "Reference",
-            "fields": [
-              {
-                "item": "ExprReference"
-              }
-            ]
-          },
-          {
-            "ident": "Break",
-            "fields": [
-              {
-                "item": "ExprBreak"
-              }
-            ]
-          },
-          {
-            "ident": "Continue",
-            "fields": [
-              {
-                "item": "ExprContinue"
-              }
-            ]
-          },
-          {
-            "ident": "Return",
-            "fields": [
-              {
-                "item": "ExprReturn"
-              }
-            ]
-          },
-          {
-            "ident": "Macro",
-            "fields": [
-              {
-                "item": "ExprMacro"
-              }
-            ]
-          },
-          {
-            "ident": "Struct",
-            "fields": [
-              {
-                "item": "ExprStruct"
-              }
-            ]
-          },
-          {
-            "ident": "Repeat",
-            "fields": [
-              {
-                "item": "ExprRepeat"
-              }
-            ]
-          },
-          {
-            "ident": "Paren",
-            "fields": [
-              {
-                "item": "ExprParen"
-              }
-            ]
-          },
-          {
-            "ident": "Group",
-            "fields": [
-              {
-                "item": "ExprGroup"
-              }
-            ]
-          },
-          {
-            "ident": "Try",
-            "fields": [
-              {
-                "item": "ExprTry"
-              }
-            ]
-          },
-          {
-            "ident": "Async",
-            "fields": [
-              {
-                "item": "ExprAsync"
-              }
-            ]
-          },
-          {
-            "ident": "TryBlock",
-            "fields": [
-              {
-                "item": "ExprTryBlock"
-              }
-            ]
-          },
-          {
-            "ident": "Yield",
-            "fields": [
-              {
-                "item": "ExprYield"
-              }
-            ]
-          },
-          {
-            "ident": "Verbatim",
-            "fields": [
-              {
-                "item": "ExprVerbatim"
-              }
-            ]
-          }
+      "node": "struct",
+      "ident": "ArgSelfRef",
+      "features": {
+        "any": [
+          "full"
         ]
-      }
-    },
-    {
-      "struct": {
-        "ident": "ExprArray",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "bracket_token",
-            "ty": {
-              "token_group": "Bracket"
-            }
-          },
-          {
-            "ident": "elems",
-            "ty": {
-              "punctuated": [
-                {
-                  "item": "Expr"
-                },
-                {
-                  "repr": ",",
-                  "ty": "Comma"
-                }
-              ]
+      },
+      "fields": [
+        {
+          "ident": "and_token",
+          "type": {
+            "token": {
+              "repr": "&",
+              "type": "And"
             }
           }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ExprAssign",
-        "features": {
-          "any": [
-            "full"
-          ]
         },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
+        {
+          "ident": "lifetime",
+          "type": {
+            "option": {
+              "item": "Lifetime"
             }
-          },
-          {
-            "ident": "left",
-            "ty": {
-              "box": {
-                "item": "Expr"
-              }
-            }
-          },
-          {
-            "ident": "eq_token",
-            "ty": {
+          }
+        },
+        {
+          "ident": "mutability",
+          "type": {
+            "option": {
               "token": {
-                "repr": "=",
-                "ty": "Eq"
-              }
-            }
-          },
-          {
-            "ident": "right",
-            "ty": {
-              "box": {
-                "item": "Expr"
+                "repr": "mut",
+                "type": "Mut"
               }
             }
           }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ExprAssignOp",
-        "features": {
-          "any": [
-            "full"
-          ]
         },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "left",
-            "ty": {
-              "box": {
-                "item": "Expr"
-              }
-            }
-          },
-          {
-            "ident": "op",
-            "ty": {
-              "item": "BinOp"
-            }
-          },
-          {
-            "ident": "right",
-            "ty": {
-              "box": {
-                "item": "Expr"
-              }
+        {
+          "ident": "self_token",
+          "type": {
+            "token": {
+              "repr": "self",
+              "type": "SelfValue"
             }
           }
-        ],
-        "all_fields_pub": true
-      }
+        }
+      ],
+      "all_fields_pub": true
     },
     {
-      "struct": {
-        "ident": "ExprAsync",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "async_token",
-            "ty": {
-              "token": {
-                "repr": "async",
-                "ty": "Async"
-              }
-            }
-          },
-          {
-            "ident": "capture",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": "move",
-                  "ty": "Move"
-                }
-              }
-            }
-          },
-          {
-            "ident": "block",
-            "ty": {
-              "item": "Block"
+      "node": "struct",
+      "ident": "Arm",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
             }
           }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ExprBinary",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
         },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "left",
-            "ty": {
-              "box": {
-                "item": "Expr"
-              }
-            }
-          },
-          {
-            "ident": "op",
-            "ty": {
-              "item": "BinOp"
-            }
-          },
-          {
-            "ident": "right",
-            "ty": {
-              "box": {
-                "item": "Expr"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ExprBlock",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "label",
-            "ty": {
-              "option": {
-                "item": "Label"
-              }
-            }
-          },
-          {
-            "ident": "block",
-            "ty": {
-              "item": "Block"
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ExprBox",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "box_token",
-            "ty": {
-              "token": {
-                "repr": "box",
-                "ty": "Box"
-              }
-            }
-          },
-          {
-            "ident": "expr",
-            "ty": {
-              "box": {
-                "item": "Expr"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ExprBreak",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "break_token",
-            "ty": {
-              "token": {
-                "repr": "break",
-                "ty": "Break"
-              }
-            }
-          },
-          {
-            "ident": "label",
-            "ty": {
-              "option": {
-                "item": "Lifetime"
-              }
-            }
-          },
-          {
-            "ident": "expr",
-            "ty": {
-              "option": {
-                "box": {
-                  "item": "Expr"
-                }
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ExprCall",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "func",
-            "ty": {
-              "box": {
-                "item": "Expr"
-              }
-            }
-          },
-          {
-            "ident": "paren_token",
-            "ty": {
-              "token_group": "Paren"
-            }
-          },
-          {
-            "ident": "args",
-            "ty": {
-              "punctuated": [
-                {
-                  "item": "Expr"
-                },
-                {
-                  "repr": ",",
-                  "ty": "Comma"
-                }
-              ]
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ExprCast",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "expr",
-            "ty": {
-              "box": {
-                "item": "Expr"
-              }
-            }
-          },
-          {
-            "ident": "as_token",
-            "ty": {
-              "token": {
-                "repr": "as",
-                "ty": "As"
-              }
-            }
-          },
-          {
-            "ident": "ty",
-            "ty": {
-              "box": {
-                "item": "Type"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ExprClosure",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "asyncness",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": "async",
-                  "ty": "Async"
-                }
-              }
-            }
-          },
-          {
-            "ident": "movability",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": "static",
-                  "ty": "Static"
-                }
-              }
-            }
-          },
-          {
-            "ident": "capture",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": "move",
-                  "ty": "Move"
-                }
-              }
-            }
-          },
-          {
-            "ident": "or1_token",
-            "ty": {
+        {
+          "ident": "leading_vert",
+          "type": {
+            "option": {
               "token": {
                 "repr": "|",
-                "ty": "Or"
+                "type": "Or"
               }
             }
-          },
-          {
-            "ident": "inputs",
-            "ty": {
-              "punctuated": [
-                {
-                  "item": "FnArg"
-                },
-                {
-                  "repr": ",",
-                  "ty": "Comma"
-                }
-              ]
-            }
-          },
-          {
-            "ident": "or2_token",
-            "ty": {
-              "token": {
+          }
+        },
+        {
+          "ident": "pats",
+          "type": {
+            "punctuated": {
+              "element": {
+                "item": "Pat"
+              },
+              "punct": {
                 "repr": "|",
-                "ty": "Or"
-              }
-            }
-          },
-          {
-            "ident": "output",
-            "ty": {
-              "item": "ReturnType"
-            }
-          },
-          {
-            "ident": "body",
-            "ty": {
-              "box": {
-                "item": "Expr"
+                "type": "Or"
               }
             }
           }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ExprContinue",
-        "features": {
-          "any": [
-            "full"
-          ]
         },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "continue_token",
-            "ty": {
-              "token": {
-                "repr": "continue",
-                "ty": "Continue"
-              }
-            }
-          },
-          {
-            "ident": "label",
-            "ty": {
-              "option": {
-                "item": "Lifetime"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ExprField",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "base",
-            "ty": {
-              "box": {
-                "item": "Expr"
-              }
-            }
-          },
-          {
-            "ident": "dot_token",
-            "ty": {
-              "token": {
-                "repr": ".",
-                "ty": "Dot"
-              }
-            }
-          },
-          {
-            "ident": "member",
-            "ty": {
-              "item": "Member"
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ExprForLoop",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "label",
-            "ty": {
-              "option": {
-                "item": "Label"
-              }
-            }
-          },
-          {
-            "ident": "for_token",
-            "ty": {
-              "token": {
-                "repr": "for",
-                "ty": "For"
-              }
-            }
-          },
-          {
-            "ident": "pat",
-            "ty": {
-              "box": {
-                "item": "Pat"
-              }
-            }
-          },
-          {
-            "ident": "in_token",
-            "ty": {
-              "token": {
-                "repr": "in",
-                "ty": "In"
-              }
-            }
-          },
-          {
-            "ident": "expr",
-            "ty": {
-              "box": {
-                "item": "Expr"
-              }
-            }
-          },
-          {
-            "ident": "body",
-            "ty": {
-              "item": "Block"
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ExprGroup",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "group_token",
-            "ty": {
-              "token_group": "Group"
-            }
-          },
-          {
-            "ident": "expr",
-            "ty": {
-              "box": {
-                "item": "Expr"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ExprIf",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "if_token",
-            "ty": {
-              "token": {
-                "repr": "if",
-                "ty": "If"
-              }
-            }
-          },
-          {
-            "ident": "cond",
-            "ty": {
-              "box": {
-                "item": "Expr"
-              }
-            }
-          },
-          {
-            "ident": "then_branch",
-            "ty": {
-              "item": "Block"
-            }
-          },
-          {
-            "ident": "else_branch",
-            "ty": {
-              "option": {
-                "tuple": [
-                  {
-                    "token": {
-                      "repr": "else",
-                      "ty": "Else"
-                    }
-                  },
-                  {
-                    "box": {
-                      "item": "Expr"
-                    }
+        {
+          "ident": "guard",
+          "type": {
+            "option": {
+              "tuple": [
+                {
+                  "token": {
+                    "repr": "if",
+                    "type": "If"
                   }
-                ]
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ExprInPlace",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "place",
-            "ty": {
-              "box": {
-                "item": "Expr"
-              }
-            }
-          },
-          {
-            "ident": "arrow_token",
-            "ty": {
-              "token": {
-                "repr": "<-",
-                "ty": "LArrow"
-              }
-            }
-          },
-          {
-            "ident": "value",
-            "ty": {
-              "box": {
-                "item": "Expr"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ExprIndex",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "expr",
-            "ty": {
-              "box": {
-                "item": "Expr"
-              }
-            }
-          },
-          {
-            "ident": "bracket_token",
-            "ty": {
-              "token_group": "Bracket"
-            }
-          },
-          {
-            "ident": "index",
-            "ty": {
-              "box": {
-                "item": "Expr"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ExprLet",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "let_token",
-            "ty": {
-              "token": {
-                "repr": "let",
-                "ty": "Let"
-              }
-            }
-          },
-          {
-            "ident": "pats",
-            "ty": {
-              "punctuated": [
-                {
-                  "item": "Pat"
                 },
                 {
-                  "repr": "|",
-                  "ty": "Or"
-                }
-              ]
-            }
-          },
-          {
-            "ident": "eq_token",
-            "ty": {
-              "token": {
-                "repr": "=",
-                "ty": "Eq"
-              }
-            }
-          },
-          {
-            "ident": "expr",
-            "ty": {
-              "box": {
-                "item": "Expr"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ExprLit",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "lit",
-            "ty": {
-              "item": "Lit"
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ExprLoop",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "label",
-            "ty": {
-              "option": {
-                "item": "Label"
-              }
-            }
-          },
-          {
-            "ident": "loop_token",
-            "ty": {
-              "token": {
-                "repr": "loop",
-                "ty": "Loop"
-              }
-            }
-          },
-          {
-            "ident": "body",
-            "ty": {
-              "item": "Block"
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ExprMacro",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "mac",
-            "ty": {
-              "item": "Macro"
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ExprMatch",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "match_token",
-            "ty": {
-              "token": {
-                "repr": "match",
-                "ty": "Match"
-              }
-            }
-          },
-          {
-            "ident": "expr",
-            "ty": {
-              "box": {
-                "item": "Expr"
-              }
-            }
-          },
-          {
-            "ident": "brace_token",
-            "ty": {
-              "token_group": "Brace"
-            }
-          },
-          {
-            "ident": "arms",
-            "ty": {
-              "vec": {
-                "item": "Arm"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ExprMethodCall",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "receiver",
-            "ty": {
-              "box": {
-                "item": "Expr"
-              }
-            }
-          },
-          {
-            "ident": "dot_token",
-            "ty": {
-              "token": {
-                "repr": ".",
-                "ty": "Dot"
-              }
-            }
-          },
-          {
-            "ident": "method",
-            "ty": {
-              "item": "Ident"
-            }
-          },
-          {
-            "ident": "turbofish",
-            "ty": {
-              "option": {
-                "item": "MethodTurbofish"
-              }
-            }
-          },
-          {
-            "ident": "paren_token",
-            "ty": {
-              "token_group": "Paren"
-            }
-          },
-          {
-            "ident": "args",
-            "ty": {
-              "punctuated": [
-                {
-                  "item": "Expr"
-                },
-                {
-                  "repr": ",",
-                  "ty": "Comma"
+                  "box": {
+                    "item": "Expr"
+                  }
                 }
               ]
             }
           }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ExprParen",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
         },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "paren_token",
-            "ty": {
-              "token_group": "Paren"
-            }
-          },
-          {
-            "ident": "expr",
-            "ty": {
-              "box": {
-                "item": "Expr"
-              }
+        {
+          "ident": "fat_arrow_token",
+          "type": {
+            "token": {
+              "repr": "=>",
+              "type": "FatArrow"
             }
           }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ExprPath",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
         },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "qself",
-            "ty": {
-              "option": {
-                "item": "QSelf"
-              }
-            }
-          },
-          {
-            "ident": "path",
-            "ty": {
-              "item": "Path"
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ExprRange",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "from",
-            "ty": {
-              "option": {
-                "box": {
-                  "item": "Expr"
-                }
-              }
-            }
-          },
-          {
-            "ident": "limits",
-            "ty": {
-              "item": "RangeLimits"
-            }
-          },
-          {
-            "ident": "to",
-            "ty": {
-              "option": {
-                "box": {
-                  "item": "Expr"
-                }
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ExprReference",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "and_token",
-            "ty": {
-              "token": {
-                "repr": "&",
-                "ty": "And"
-              }
-            }
-          },
-          {
-            "ident": "mutability",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": "mut",
-                  "ty": "Mut"
-                }
-              }
-            }
-          },
-          {
-            "ident": "expr",
-            "ty": {
-              "box": {
-                "item": "Expr"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ExprRepeat",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "bracket_token",
-            "ty": {
-              "token_group": "Bracket"
-            }
-          },
-          {
-            "ident": "expr",
-            "ty": {
-              "box": {
-                "item": "Expr"
-              }
-            }
-          },
-          {
-            "ident": "semi_token",
-            "ty": {
-              "token": {
-                "repr": ";",
-                "ty": "Semi"
-              }
-            }
-          },
-          {
-            "ident": "len",
-            "ty": {
-              "box": {
-                "item": "Expr"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ExprReturn",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "return_token",
-            "ty": {
-              "token": {
-                "repr": "return",
-                "ty": "Return"
-              }
-            }
-          },
-          {
-            "ident": "expr",
-            "ty": {
-              "option": {
-                "box": {
-                  "item": "Expr"
-                }
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ExprStruct",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "path",
-            "ty": {
-              "item": "Path"
-            }
-          },
-          {
-            "ident": "brace_token",
-            "ty": {
-              "token_group": "Brace"
-            }
-          },
-          {
-            "ident": "fields",
-            "ty": {
-              "punctuated": [
-                {
-                  "item": "FieldValue"
-                },
-                {
-                  "repr": ",",
-                  "ty": "Comma"
-                }
-              ]
-            }
-          },
-          {
-            "ident": "dot2_token",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": "..",
-                  "ty": "Dot2"
-                }
-              }
-            }
-          },
-          {
-            "ident": "rest",
-            "ty": {
-              "option": {
-                "box": {
-                  "item": "Expr"
-                }
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ExprTry",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "expr",
-            "ty": {
-              "box": {
-                "item": "Expr"
-              }
-            }
-          },
-          {
-            "ident": "question_token",
-            "ty": {
-              "token": {
-                "repr": "?",
-                "ty": "Question"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ExprTryBlock",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "try_token",
-            "ty": {
-              "token": {
-                "repr": "try",
-                "ty": "Try"
-              }
-            }
-          },
-          {
-            "ident": "block",
-            "ty": {
-              "item": "Block"
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ExprTuple",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "paren_token",
-            "ty": {
-              "token_group": "Paren"
-            }
-          },
-          {
-            "ident": "elems",
-            "ty": {
-              "punctuated": [
-                {
-                  "item": "Expr"
-                },
-                {
-                  "repr": ",",
-                  "ty": "Comma"
-                }
-              ]
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ExprType",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "expr",
-            "ty": {
-              "box": {
-                "item": "Expr"
-              }
-            }
-          },
-          {
-            "ident": "colon_token",
-            "ty": {
-              "token": {
-                "repr": ":",
-                "ty": "Colon"
-              }
-            }
-          },
-          {
-            "ident": "ty",
-            "ty": {
-              "box": {
-                "item": "Type"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ExprUnary",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "op",
-            "ty": {
-              "item": "UnOp"
-            }
-          },
-          {
-            "ident": "expr",
-            "ty": {
-              "box": {
-                "item": "Expr"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ExprUnsafe",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "unsafe_token",
-            "ty": {
-              "token": {
-                "repr": "unsafe",
-                "ty": "Unsafe"
-              }
-            }
-          },
-          {
-            "ident": "block",
-            "ty": {
-              "item": "Block"
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ExprVerbatim",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "tts",
-            "ty": {
-              "ext": "TokenStream"
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ExprWhile",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "label",
-            "ty": {
-              "option": {
-                "item": "Label"
-              }
-            }
-          },
-          {
-            "ident": "while_token",
-            "ty": {
-              "token": {
-                "repr": "while",
-                "ty": "While"
-              }
-            }
-          },
-          {
-            "ident": "cond",
-            "ty": {
-              "box": {
-                "item": "Expr"
-              }
-            }
-          },
-          {
-            "ident": "body",
-            "ty": {
-              "item": "Block"
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ExprYield",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "yield_token",
-            "ty": {
-              "token": {
-                "repr": "yield",
-                "ty": "Yield"
-              }
-            }
-          },
-          {
-            "ident": "expr",
-            "ty": {
-              "option": {
-                "box": {
-                  "item": "Expr"
-                }
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "Field",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "vis",
-            "ty": {
-              "item": "Visibility"
-            }
-          },
-          {
-            "ident": "ident",
-            "ty": {
-              "option": {
-                "item": "Ident"
-              }
-            }
-          },
-          {
-            "ident": "colon_token",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": ":",
-                  "ty": "Colon"
-                }
-              }
-            }
-          },
-          {
-            "ident": "ty",
-            "ty": {
-              "item": "Type"
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "FieldPat",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "member",
-            "ty": {
-              "item": "Member"
-            }
-          },
-          {
-            "ident": "colon_token",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": ":",
-                  "ty": "Colon"
-                }
-              }
-            }
-          },
-          {
-            "ident": "pat",
-            "ty": {
-              "box": {
-                "item": "Pat"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "FieldValue",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "member",
-            "ty": {
-              "item": "Member"
-            }
-          },
-          {
-            "ident": "colon_token",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": ":",
-                  "ty": "Colon"
-                }
-              }
-            }
-          },
-          {
-            "ident": "expr",
-            "ty": {
+        {
+          "ident": "body",
+          "type": {
+            "box": {
               "item": "Expr"
             }
           }
-        ],
-        "all_fields_pub": true
-      }
+        },
+        {
+          "ident": "comma",
+          "type": {
+            "option": {
+              "token": {
+                "repr": ",",
+                "type": "Comma"
+              }
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
     },
     {
-      "enum": {
-        "ident": "Fields",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "variants": [
-          {
-            "ident": "Named",
-            "fields": [
-              {
-                "item": "FieldsNamed"
-              }
-            ]
-          },
-          {
-            "ident": "Unnamed",
-            "fields": [
-              {
-                "item": "FieldsUnnamed"
-              }
-            ]
-          },
-          {
-            "ident": "Unit",
-            "fields": []
-          }
+      "node": "enum",
+      "ident": "AttrStyle",
+      "features": {
+        "any": [
+          "full",
+          "derive"
         ]
-      }
-    },
-    {
-      "struct": {
-        "ident": "FieldsNamed",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
+      },
+      "variants": [
+        {
+          "ident": "Outer",
+          "fields": []
         },
-        "fields": [
-          {
-            "ident": "brace_token",
-            "ty": {
-              "token_group": "Brace"
-            }
-          },
-          {
-            "ident": "named",
-            "ty": {
-              "punctuated": [
-                {
-                  "item": "Field"
-                },
-                {
-                  "repr": ",",
-                  "ty": "Comma"
-                }
-              ]
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "FieldsUnnamed",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "paren_token",
-            "ty": {
-              "token_group": "Paren"
-            }
-          },
-          {
-            "ident": "unnamed",
-            "ty": {
-              "punctuated": [
-                {
-                  "item": "Field"
-                },
-                {
-                  "repr": ",",
-                  "ty": "Comma"
-                }
-              ]
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "File",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "shebang",
-            "ty": {
-              "option": {
-                "std": "String"
-              }
-            }
-          },
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "items",
-            "ty": {
-              "vec": {
-                "item": "Item"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "enum": {
-        "ident": "FnArg",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "variants": [
-          {
-            "ident": "SelfRef",
-            "fields": [
-              {
-                "item": "ArgSelfRef"
-              }
-            ]
-          },
-          {
-            "ident": "SelfValue",
-            "fields": [
-              {
-                "item": "ArgSelf"
-              }
-            ]
-          },
-          {
-            "ident": "Captured",
-            "fields": [
-              {
-                "item": "ArgCaptured"
-              }
-            ]
-          },
-          {
-            "ident": "Inferred",
-            "fields": [
-              {
-                "item": "Pat"
-              }
-            ]
-          },
-          {
-            "ident": "Ignored",
-            "fields": [
-              {
-                "item": "Type"
-              }
-            ]
-          }
-        ]
-      }
-    },
-    {
-      "struct": {
-        "ident": "FnDecl",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "fn_token",
-            "ty": {
-              "token": {
-                "repr": "fn",
-                "ty": "Fn"
-              }
-            }
-          },
-          {
-            "ident": "generics",
-            "ty": {
-              "item": "Generics"
-            }
-          },
-          {
-            "ident": "paren_token",
-            "ty": {
-              "token_group": "Paren"
-            }
-          },
-          {
-            "ident": "inputs",
-            "ty": {
-              "punctuated": [
-                {
-                  "item": "FnArg"
-                },
-                {
-                  "repr": ",",
-                  "ty": "Comma"
-                }
-              ]
-            }
-          },
-          {
-            "ident": "variadic",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": "...",
-                  "ty": "Dot3"
-                }
-              }
-            }
-          },
-          {
-            "ident": "output",
-            "ty": {
-              "item": "ReturnType"
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "enum": {
-        "ident": "ForeignItem",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "variants": [
-          {
-            "ident": "Fn",
-            "fields": [
-              {
-                "item": "ForeignItemFn"
-              }
-            ]
-          },
-          {
-            "ident": "Static",
-            "fields": [
-              {
-                "item": "ForeignItemStatic"
-              }
-            ]
-          },
-          {
-            "ident": "Type",
-            "fields": [
-              {
-                "item": "ForeignItemType"
-              }
-            ]
-          },
-          {
-            "ident": "Macro",
-            "fields": [
-              {
-                "item": "ForeignItemMacro"
-              }
-            ]
-          },
-          {
-            "ident": "Verbatim",
-            "fields": [
-              {
-                "item": "ForeignItemVerbatim"
-              }
-            ]
-          }
-        ]
-      }
-    },
-    {
-      "struct": {
-        "ident": "ForeignItemFn",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "vis",
-            "ty": {
-              "item": "Visibility"
-            }
-          },
-          {
-            "ident": "ident",
-            "ty": {
-              "item": "Ident"
-            }
-          },
-          {
-            "ident": "decl",
-            "ty": {
-              "box": {
-                "item": "FnDecl"
-              }
-            }
-          },
-          {
-            "ident": "semi_token",
-            "ty": {
-              "token": {
-                "repr": ";",
-                "ty": "Semi"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ForeignItemMacro",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "mac",
-            "ty": {
-              "item": "Macro"
-            }
-          },
-          {
-            "ident": "semi_token",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": ";",
-                  "ty": "Semi"
-                }
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ForeignItemStatic",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "vis",
-            "ty": {
-              "item": "Visibility"
-            }
-          },
-          {
-            "ident": "static_token",
-            "ty": {
-              "token": {
-                "repr": "static",
-                "ty": "Static"
-              }
-            }
-          },
-          {
-            "ident": "mutability",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": "mut",
-                  "ty": "Mut"
-                }
-              }
-            }
-          },
-          {
-            "ident": "ident",
-            "ty": {
-              "item": "Ident"
-            }
-          },
-          {
-            "ident": "colon_token",
-            "ty": {
-              "token": {
-                "repr": ":",
-                "ty": "Colon"
-              }
-            }
-          },
-          {
-            "ident": "ty",
-            "ty": {
-              "box": {
-                "item": "Type"
-              }
-            }
-          },
-          {
-            "ident": "semi_token",
-            "ty": {
-              "token": {
-                "repr": ";",
-                "ty": "Semi"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ForeignItemType",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "vis",
-            "ty": {
-              "item": "Visibility"
-            }
-          },
-          {
-            "ident": "type_token",
-            "ty": {
-              "token": {
-                "repr": "type",
-                "ty": "Type"
-              }
-            }
-          },
-          {
-            "ident": "ident",
-            "ty": {
-              "item": "Ident"
-            }
-          },
-          {
-            "ident": "semi_token",
-            "ty": {
-              "token": {
-                "repr": ";",
-                "ty": "Semi"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ForeignItemVerbatim",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "tts",
-            "ty": {
-              "ext": "TokenStream"
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "enum": {
-        "ident": "GenericArgument",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "variants": [
-          {
-            "ident": "Lifetime",
-            "fields": [
-              {
-                "item": "Lifetime"
-              }
-            ]
-          },
-          {
-            "ident": "Type",
-            "fields": [
-              {
-                "item": "Type"
-              }
-            ]
-          },
-          {
-            "ident": "Binding",
-            "fields": [
-              {
-                "item": "Binding"
-              }
-            ]
-          },
-          {
-            "ident": "Constraint",
-            "fields": [
-              {
-                "item": "Constraint"
-              }
-            ]
-          },
-          {
-            "ident": "Const",
-            "fields": [
-              {
-                "item": "Expr"
-              }
-            ]
-          }
-        ]
-      }
-    },
-    {
-      "enum": {
-        "ident": "GenericMethodArgument",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "variants": [
-          {
-            "ident": "Type",
-            "fields": [
-              {
-                "item": "Type"
-              }
-            ]
-          },
-          {
-            "ident": "Const",
-            "fields": [
-              {
-                "item": "Expr"
-              }
-            ]
-          }
-        ]
-      }
-    },
-    {
-      "enum": {
-        "ident": "GenericParam",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "variants": [
-          {
-            "ident": "Type",
-            "fields": [
-              {
-                "item": "TypeParam"
-              }
-            ]
-          },
-          {
-            "ident": "Lifetime",
-            "fields": [
-              {
-                "item": "LifetimeDef"
-              }
-            ]
-          },
-          {
-            "ident": "Const",
-            "fields": [
-              {
-                "item": "ConstParam"
-              }
-            ]
-          }
-        ]
-      }
-    },
-    {
-      "struct": {
-        "ident": "Generics",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "lt_token",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": "<",
-                  "ty": "Lt"
-                }
-              }
-            }
-          },
-          {
-            "ident": "params",
-            "ty": {
-              "punctuated": [
-                {
-                  "item": "GenericParam"
-                },
-                {
-                  "repr": ",",
-                  "ty": "Comma"
-                }
-              ]
-            }
-          },
-          {
-            "ident": "gt_token",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": ">",
-                  "ty": "Gt"
-                }
-              }
-            }
-          },
-          {
-            "ident": "where_clause",
-            "ty": {
-              "option": {
-                "item": "WhereClause"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "Ident",
-        "features": {
-          "any": []
-        },
-        "fields": [],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "enum": {
-        "ident": "ImplItem",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "variants": [
-          {
-            "ident": "Const",
-            "fields": [
-              {
-                "item": "ImplItemConst"
-              }
-            ]
-          },
-          {
-            "ident": "Method",
-            "fields": [
-              {
-                "item": "ImplItemMethod"
-              }
-            ]
-          },
-          {
-            "ident": "Type",
-            "fields": [
-              {
-                "item": "ImplItemType"
-              }
-            ]
-          },
-          {
-            "ident": "Existential",
-            "fields": [
-              {
-                "item": "ImplItemExistential"
-              }
-            ]
-          },
-          {
-            "ident": "Macro",
-            "fields": [
-              {
-                "item": "ImplItemMacro"
-              }
-            ]
-          },
-          {
-            "ident": "Verbatim",
-            "fields": [
-              {
-                "item": "ImplItemVerbatim"
-              }
-            ]
-          }
-        ]
-      }
-    },
-    {
-      "struct": {
-        "ident": "ImplItemConst",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "vis",
-            "ty": {
-              "item": "Visibility"
-            }
-          },
-          {
-            "ident": "defaultness",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": "default",
-                  "ty": "Default"
-                }
-              }
-            }
-          },
-          {
-            "ident": "const_token",
-            "ty": {
-              "token": {
-                "repr": "const",
-                "ty": "Const"
-              }
-            }
-          },
-          {
-            "ident": "ident",
-            "ty": {
-              "item": "Ident"
-            }
-          },
-          {
-            "ident": "colon_token",
-            "ty": {
-              "token": {
-                "repr": ":",
-                "ty": "Colon"
-              }
-            }
-          },
-          {
-            "ident": "ty",
-            "ty": {
-              "item": "Type"
-            }
-          },
-          {
-            "ident": "eq_token",
-            "ty": {
-              "token": {
-                "repr": "=",
-                "ty": "Eq"
-              }
-            }
-          },
-          {
-            "ident": "expr",
-            "ty": {
-              "item": "Expr"
-            }
-          },
-          {
-            "ident": "semi_token",
-            "ty": {
-              "token": {
-                "repr": ";",
-                "ty": "Semi"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ImplItemExistential",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "existential_token",
-            "ty": {
-              "token": {
-                "repr": "existential",
-                "ty": "Existential"
-              }
-            }
-          },
-          {
-            "ident": "type_token",
-            "ty": {
-              "token": {
-                "repr": "type",
-                "ty": "Type"
-              }
-            }
-          },
-          {
-            "ident": "ident",
-            "ty": {
-              "item": "Ident"
-            }
-          },
-          {
-            "ident": "generics",
-            "ty": {
-              "item": "Generics"
-            }
-          },
-          {
-            "ident": "colon_token",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": ":",
-                  "ty": "Colon"
-                }
-              }
-            }
-          },
-          {
-            "ident": "bounds",
-            "ty": {
-              "punctuated": [
-                {
-                  "item": "TypeParamBound"
-                },
-                {
-                  "repr": "+",
-                  "ty": "Add"
-                }
-              ]
-            }
-          },
-          {
-            "ident": "semi_token",
-            "ty": {
-              "token": {
-                "repr": ";",
-                "ty": "Semi"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ImplItemMacro",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "mac",
-            "ty": {
-              "item": "Macro"
-            }
-          },
-          {
-            "ident": "semi_token",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": ";",
-                  "ty": "Semi"
-                }
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ImplItemMethod",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "vis",
-            "ty": {
-              "item": "Visibility"
-            }
-          },
-          {
-            "ident": "defaultness",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": "default",
-                  "ty": "Default"
-                }
-              }
-            }
-          },
-          {
-            "ident": "sig",
-            "ty": {
-              "item": "MethodSig"
-            }
-          },
-          {
-            "ident": "block",
-            "ty": {
-              "item": "Block"
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ImplItemType",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "vis",
-            "ty": {
-              "item": "Visibility"
-            }
-          },
-          {
-            "ident": "defaultness",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": "default",
-                  "ty": "Default"
-                }
-              }
-            }
-          },
-          {
-            "ident": "type_token",
-            "ty": {
-              "token": {
-                "repr": "type",
-                "ty": "Type"
-              }
-            }
-          },
-          {
-            "ident": "ident",
-            "ty": {
-              "item": "Ident"
-            }
-          },
-          {
-            "ident": "generics",
-            "ty": {
-              "item": "Generics"
-            }
-          },
-          {
-            "ident": "eq_token",
-            "ty": {
-              "token": {
-                "repr": "=",
-                "ty": "Eq"
-              }
-            }
-          },
-          {
-            "ident": "ty",
-            "ty": {
-              "item": "Type"
-            }
-          },
-          {
-            "ident": "semi_token",
-            "ty": {
-              "token": {
-                "repr": ";",
-                "ty": "Semi"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ImplItemVerbatim",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "tts",
-            "ty": {
-              "ext": "TokenStream"
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "Index",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "index",
-            "ty": {
-              "std": "u32"
-            }
-          },
-          {
-            "ident": "span",
-            "ty": {
-              "item": "Span"
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "enum": {
-        "ident": "Item",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "variants": [
-          {
-            "ident": "ExternCrate",
-            "fields": [
-              {
-                "item": "ItemExternCrate"
-              }
-            ]
-          },
-          {
-            "ident": "Use",
-            "fields": [
-              {
-                "item": "ItemUse"
-              }
-            ]
-          },
-          {
-            "ident": "Static",
-            "fields": [
-              {
-                "item": "ItemStatic"
-              }
-            ]
-          },
-          {
-            "ident": "Const",
-            "fields": [
-              {
-                "item": "ItemConst"
-              }
-            ]
-          },
-          {
-            "ident": "Fn",
-            "fields": [
-              {
-                "item": "ItemFn"
-              }
-            ]
-          },
-          {
-            "ident": "Mod",
-            "fields": [
-              {
-                "item": "ItemMod"
-              }
-            ]
-          },
-          {
-            "ident": "ForeignMod",
-            "fields": [
-              {
-                "item": "ItemForeignMod"
-              }
-            ]
-          },
-          {
-            "ident": "Type",
-            "fields": [
-              {
-                "item": "ItemType"
-              }
-            ]
-          },
-          {
-            "ident": "Existential",
-            "fields": [
-              {
-                "item": "ItemExistential"
-              }
-            ]
-          },
-          {
-            "ident": "Struct",
-            "fields": [
-              {
-                "item": "ItemStruct"
-              }
-            ]
-          },
-          {
-            "ident": "Enum",
-            "fields": [
-              {
-                "item": "ItemEnum"
-              }
-            ]
-          },
-          {
-            "ident": "Union",
-            "fields": [
-              {
-                "item": "ItemUnion"
-              }
-            ]
-          },
-          {
-            "ident": "Trait",
-            "fields": [
-              {
-                "item": "ItemTrait"
-              }
-            ]
-          },
-          {
-            "ident": "TraitAlias",
-            "fields": [
-              {
-                "item": "ItemTraitAlias"
-              }
-            ]
-          },
-          {
-            "ident": "Impl",
-            "fields": [
-              {
-                "item": "ItemImpl"
-              }
-            ]
-          },
-          {
-            "ident": "Macro",
-            "fields": [
-              {
-                "item": "ItemMacro"
-              }
-            ]
-          },
-          {
-            "ident": "Macro2",
-            "fields": [
-              {
-                "item": "ItemMacro2"
-              }
-            ]
-          },
-          {
-            "ident": "Verbatim",
-            "fields": [
-              {
-                "item": "ItemVerbatim"
-              }
-            ]
-          }
-        ]
-      }
-    },
-    {
-      "struct": {
-        "ident": "ItemConst",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "vis",
-            "ty": {
-              "item": "Visibility"
-            }
-          },
-          {
-            "ident": "const_token",
-            "ty": {
-              "token": {
-                "repr": "const",
-                "ty": "Const"
-              }
-            }
-          },
-          {
-            "ident": "ident",
-            "ty": {
-              "item": "Ident"
-            }
-          },
-          {
-            "ident": "colon_token",
-            "ty": {
-              "token": {
-                "repr": ":",
-                "ty": "Colon"
-              }
-            }
-          },
-          {
-            "ident": "ty",
-            "ty": {
-              "box": {
-                "item": "Type"
-              }
-            }
-          },
-          {
-            "ident": "eq_token",
-            "ty": {
-              "token": {
-                "repr": "=",
-                "ty": "Eq"
-              }
-            }
-          },
-          {
-            "ident": "expr",
-            "ty": {
-              "box": {
-                "item": "Expr"
-              }
-            }
-          },
-          {
-            "ident": "semi_token",
-            "ty": {
-              "token": {
-                "repr": ";",
-                "ty": "Semi"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ItemEnum",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "vis",
-            "ty": {
-              "item": "Visibility"
-            }
-          },
-          {
-            "ident": "enum_token",
-            "ty": {
-              "token": {
-                "repr": "enum",
-                "ty": "Enum"
-              }
-            }
-          },
-          {
-            "ident": "ident",
-            "ty": {
-              "item": "Ident"
-            }
-          },
-          {
-            "ident": "generics",
-            "ty": {
-              "item": "Generics"
-            }
-          },
-          {
-            "ident": "brace_token",
-            "ty": {
-              "token_group": "Brace"
-            }
-          },
-          {
-            "ident": "variants",
-            "ty": {
-              "punctuated": [
-                {
-                  "item": "Variant"
-                },
-                {
-                  "repr": ",",
-                  "ty": "Comma"
-                }
-              ]
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ItemExistential",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "vis",
-            "ty": {
-              "item": "Visibility"
-            }
-          },
-          {
-            "ident": "existential_token",
-            "ty": {
-              "token": {
-                "repr": "existential",
-                "ty": "Existential"
-              }
-            }
-          },
-          {
-            "ident": "type_token",
-            "ty": {
-              "token": {
-                "repr": "type",
-                "ty": "Type"
-              }
-            }
-          },
-          {
-            "ident": "ident",
-            "ty": {
-              "item": "Ident"
-            }
-          },
-          {
-            "ident": "generics",
-            "ty": {
-              "item": "Generics"
-            }
-          },
-          {
-            "ident": "colon_token",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": ":",
-                  "ty": "Colon"
-                }
-              }
-            }
-          },
-          {
-            "ident": "bounds",
-            "ty": {
-              "punctuated": [
-                {
-                  "item": "TypeParamBound"
-                },
-                {
-                  "repr": "+",
-                  "ty": "Add"
-                }
-              ]
-            }
-          },
-          {
-            "ident": "semi_token",
-            "ty": {
-              "token": {
-                "repr": ";",
-                "ty": "Semi"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ItemExternCrate",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "vis",
-            "ty": {
-              "item": "Visibility"
-            }
-          },
-          {
-            "ident": "extern_token",
-            "ty": {
-              "token": {
-                "repr": "extern",
-                "ty": "Extern"
-              }
-            }
-          },
-          {
-            "ident": "crate_token",
-            "ty": {
-              "token": {
-                "repr": "crate",
-                "ty": "Crate"
-              }
-            }
-          },
-          {
-            "ident": "ident",
-            "ty": {
-              "item": "Ident"
-            }
-          },
-          {
-            "ident": "rename",
-            "ty": {
-              "option": {
-                "tuple": [
-                  {
-                    "token": {
-                      "repr": "as",
-                      "ty": "As"
-                    }
-                  },
-                  {
-                    "item": "Ident"
-                  }
-                ]
-              }
-            }
-          },
-          {
-            "ident": "semi_token",
-            "ty": {
-              "token": {
-                "repr": ";",
-                "ty": "Semi"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ItemFn",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "vis",
-            "ty": {
-              "item": "Visibility"
-            }
-          },
-          {
-            "ident": "constness",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": "const",
-                  "ty": "Const"
-                }
-              }
-            }
-          },
-          {
-            "ident": "unsafety",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": "unsafe",
-                  "ty": "Unsafe"
-                }
-              }
-            }
-          },
-          {
-            "ident": "asyncness",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": "async",
-                  "ty": "Async"
-                }
-              }
-            }
-          },
-          {
-            "ident": "abi",
-            "ty": {
-              "option": {
-                "item": "Abi"
-              }
-            }
-          },
-          {
-            "ident": "ident",
-            "ty": {
-              "item": "Ident"
-            }
-          },
-          {
-            "ident": "decl",
-            "ty": {
-              "box": {
-                "item": "FnDecl"
-              }
-            }
-          },
-          {
-            "ident": "block",
-            "ty": {
-              "box": {
-                "item": "Block"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ItemForeignMod",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "abi",
-            "ty": {
-              "item": "Abi"
-            }
-          },
-          {
-            "ident": "brace_token",
-            "ty": {
-              "token_group": "Brace"
-            }
-          },
-          {
-            "ident": "items",
-            "ty": {
-              "vec": {
-                "item": "ForeignItem"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ItemImpl",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "defaultness",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": "default",
-                  "ty": "Default"
-                }
-              }
-            }
-          },
-          {
-            "ident": "unsafety",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": "unsafe",
-                  "ty": "Unsafe"
-                }
-              }
-            }
-          },
-          {
-            "ident": "impl_token",
-            "ty": {
-              "token": {
-                "repr": "impl",
-                "ty": "Impl"
-              }
-            }
-          },
-          {
-            "ident": "generics",
-            "ty": {
-              "item": "Generics"
-            }
-          },
-          {
-            "ident": "trait_",
-            "ty": {
-              "option": {
-                "tuple": [
-                  {
-                    "option": {
-                      "token": {
-                        "repr": "!",
-                        "ty": "Bang"
-                      }
-                    }
-                  },
-                  {
-                    "item": "Path"
-                  },
-                  {
-                    "token": {
-                      "repr": "for",
-                      "ty": "For"
-                    }
-                  }
-                ]
-              }
-            }
-          },
-          {
-            "ident": "self_ty",
-            "ty": {
-              "box": {
-                "item": "Type"
-              }
-            }
-          },
-          {
-            "ident": "brace_token",
-            "ty": {
-              "token_group": "Brace"
-            }
-          },
-          {
-            "ident": "items",
-            "ty": {
-              "vec": {
-                "item": "ImplItem"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ItemMacro",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "ident",
-            "ty": {
-              "option": {
-                "item": "Ident"
-              }
-            }
-          },
-          {
-            "ident": "mac",
-            "ty": {
-              "item": "Macro"
-            }
-          },
-          {
-            "ident": "semi_token",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": ";",
-                  "ty": "Semi"
-                }
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ItemMacro2",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "vis",
-            "ty": {
-              "item": "Visibility"
-            }
-          },
-          {
-            "ident": "macro_token",
-            "ty": {
-              "token": {
-                "repr": "macro",
-                "ty": "Macro"
-              }
-            }
-          },
-          {
-            "ident": "ident",
-            "ty": {
-              "item": "Ident"
-            }
-          },
-          {
-            "ident": "paren_token",
-            "ty": {
-              "token_group": "Paren"
-            }
-          },
-          {
-            "ident": "args",
-            "ty": {
-              "ext": "TokenStream"
-            }
-          },
-          {
-            "ident": "brace_token",
-            "ty": {
-              "token_group": "Brace"
-            }
-          },
-          {
-            "ident": "body",
-            "ty": {
-              "ext": "TokenStream"
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ItemMod",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "vis",
-            "ty": {
-              "item": "Visibility"
-            }
-          },
-          {
-            "ident": "mod_token",
-            "ty": {
-              "token": {
-                "repr": "mod",
-                "ty": "Mod"
-              }
-            }
-          },
-          {
-            "ident": "ident",
-            "ty": {
-              "item": "Ident"
-            }
-          },
-          {
-            "ident": "content",
-            "ty": {
-              "option": {
-                "tuple": [
-                  {
-                    "token_group": "Brace"
-                  },
-                  {
-                    "vec": {
-                      "item": "Item"
-                    }
-                  }
-                ]
-              }
-            }
-          },
-          {
-            "ident": "semi",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": ";",
-                  "ty": "Semi"
-                }
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ItemStatic",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "vis",
-            "ty": {
-              "item": "Visibility"
-            }
-          },
-          {
-            "ident": "static_token",
-            "ty": {
-              "token": {
-                "repr": "static",
-                "ty": "Static"
-              }
-            }
-          },
-          {
-            "ident": "mutability",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": "mut",
-                  "ty": "Mut"
-                }
-              }
-            }
-          },
-          {
-            "ident": "ident",
-            "ty": {
-              "item": "Ident"
-            }
-          },
-          {
-            "ident": "colon_token",
-            "ty": {
-              "token": {
-                "repr": ":",
-                "ty": "Colon"
-              }
-            }
-          },
-          {
-            "ident": "ty",
-            "ty": {
-              "box": {
-                "item": "Type"
-              }
-            }
-          },
-          {
-            "ident": "eq_token",
-            "ty": {
-              "token": {
-                "repr": "=",
-                "ty": "Eq"
-              }
-            }
-          },
-          {
-            "ident": "expr",
-            "ty": {
-              "box": {
-                "item": "Expr"
-              }
-            }
-          },
-          {
-            "ident": "semi_token",
-            "ty": {
-              "token": {
-                "repr": ";",
-                "ty": "Semi"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ItemStruct",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "vis",
-            "ty": {
-              "item": "Visibility"
-            }
-          },
-          {
-            "ident": "struct_token",
-            "ty": {
-              "token": {
-                "repr": "struct",
-                "ty": "Struct"
-              }
-            }
-          },
-          {
-            "ident": "ident",
-            "ty": {
-              "item": "Ident"
-            }
-          },
-          {
-            "ident": "generics",
-            "ty": {
-              "item": "Generics"
-            }
-          },
-          {
-            "ident": "fields",
-            "ty": {
-              "item": "Fields"
-            }
-          },
-          {
-            "ident": "semi_token",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": ";",
-                  "ty": "Semi"
-                }
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ItemTrait",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "vis",
-            "ty": {
-              "item": "Visibility"
-            }
-          },
-          {
-            "ident": "unsafety",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": "unsafe",
-                  "ty": "Unsafe"
-                }
-              }
-            }
-          },
-          {
-            "ident": "auto_token",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": "auto",
-                  "ty": "Auto"
-                }
-              }
-            }
-          },
-          {
-            "ident": "trait_token",
-            "ty": {
-              "token": {
-                "repr": "trait",
-                "ty": "Trait"
-              }
-            }
-          },
-          {
-            "ident": "ident",
-            "ty": {
-              "item": "Ident"
-            }
-          },
-          {
-            "ident": "generics",
-            "ty": {
-              "item": "Generics"
-            }
-          },
-          {
-            "ident": "colon_token",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": ":",
-                  "ty": "Colon"
-                }
-              }
-            }
-          },
-          {
-            "ident": "supertraits",
-            "ty": {
-              "punctuated": [
-                {
-                  "item": "TypeParamBound"
-                },
-                {
-                  "repr": "+",
-                  "ty": "Add"
-                }
-              ]
-            }
-          },
-          {
-            "ident": "brace_token",
-            "ty": {
-              "token_group": "Brace"
-            }
-          },
-          {
-            "ident": "items",
-            "ty": {
-              "vec": {
-                "item": "TraitItem"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ItemTraitAlias",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "vis",
-            "ty": {
-              "item": "Visibility"
-            }
-          },
-          {
-            "ident": "trait_token",
-            "ty": {
-              "token": {
-                "repr": "trait",
-                "ty": "Trait"
-              }
-            }
-          },
-          {
-            "ident": "ident",
-            "ty": {
-              "item": "Ident"
-            }
-          },
-          {
-            "ident": "generics",
-            "ty": {
-              "item": "Generics"
-            }
-          },
-          {
-            "ident": "eq_token",
-            "ty": {
-              "token": {
-                "repr": "=",
-                "ty": "Eq"
-              }
-            }
-          },
-          {
-            "ident": "bounds",
-            "ty": {
-              "punctuated": [
-                {
-                  "item": "TypeParamBound"
-                },
-                {
-                  "repr": "+",
-                  "ty": "Add"
-                }
-              ]
-            }
-          },
-          {
-            "ident": "semi_token",
-            "ty": {
-              "token": {
-                "repr": ";",
-                "ty": "Semi"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ItemType",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "vis",
-            "ty": {
-              "item": "Visibility"
-            }
-          },
-          {
-            "ident": "type_token",
-            "ty": {
-              "token": {
-                "repr": "type",
-                "ty": "Type"
-              }
-            }
-          },
-          {
-            "ident": "ident",
-            "ty": {
-              "item": "Ident"
-            }
-          },
-          {
-            "ident": "generics",
-            "ty": {
-              "item": "Generics"
-            }
-          },
-          {
-            "ident": "eq_token",
-            "ty": {
-              "token": {
-                "repr": "=",
-                "ty": "Eq"
-              }
-            }
-          },
-          {
-            "ident": "ty",
-            "ty": {
-              "box": {
-                "item": "Type"
-              }
-            }
-          },
-          {
-            "ident": "semi_token",
-            "ty": {
-              "token": {
-                "repr": ";",
-                "ty": "Semi"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ItemUnion",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "vis",
-            "ty": {
-              "item": "Visibility"
-            }
-          },
-          {
-            "ident": "union_token",
-            "ty": {
-              "token": {
-                "repr": "union",
-                "ty": "Union"
-              }
-            }
-          },
-          {
-            "ident": "ident",
-            "ty": {
-              "item": "Ident"
-            }
-          },
-          {
-            "ident": "generics",
-            "ty": {
-              "item": "Generics"
-            }
-          },
-          {
-            "ident": "fields",
-            "ty": {
-              "item": "FieldsNamed"
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ItemUse",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "vis",
-            "ty": {
-              "item": "Visibility"
-            }
-          },
-          {
-            "ident": "use_token",
-            "ty": {
-              "token": {
-                "repr": "use",
-                "ty": "Use"
-              }
-            }
-          },
-          {
-            "ident": "leading_colon",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": "::",
-                  "ty": "Colon2"
-                }
-              }
-            }
-          },
-          {
-            "ident": "tree",
-            "ty": {
-              "item": "UseTree"
-            }
-          },
-          {
-            "ident": "semi_token",
-            "ty": {
-              "token": {
-                "repr": ";",
-                "ty": "Semi"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "ItemVerbatim",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "tts",
-            "ty": {
-              "ext": "TokenStream"
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "Label",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "name",
-            "ty": {
-              "item": "Lifetime"
-            }
-          },
-          {
-            "ident": "colon_token",
-            "ty": {
-              "token": {
-                "repr": ":",
-                "ty": "Colon"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "Lifetime",
-        "features": {
-          "any": []
-        },
-        "fields": [
-          {
-            "ident": "apostrophe",
-            "ty": {
-              "item": "Span"
-            }
-          },
-          {
-            "ident": "ident",
-            "ty": {
-              "item": "Ident"
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "LifetimeDef",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "lifetime",
-            "ty": {
-              "item": "Lifetime"
-            }
-          },
-          {
-            "ident": "colon_token",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": ":",
-                  "ty": "Colon"
-                }
-              }
-            }
-          },
-          {
-            "ident": "bounds",
-            "ty": {
-              "punctuated": [
-                {
-                  "item": "Lifetime"
-                },
-                {
-                  "repr": "+",
-                  "ty": "Add"
-                }
-              ]
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "enum": {
-        "ident": "Lit",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "variants": [
-          {
-            "ident": "Str",
-            "fields": [
-              {
-                "item": "LitStr"
-              }
-            ]
-          },
-          {
-            "ident": "ByteStr",
-            "fields": [
-              {
-                "item": "LitByteStr"
-              }
-            ]
-          },
-          {
-            "ident": "Byte",
-            "fields": [
-              {
-                "item": "LitByte"
-              }
-            ]
-          },
-          {
-            "ident": "Char",
-            "fields": [
-              {
-                "item": "LitChar"
-              }
-            ]
-          },
-          {
-            "ident": "Int",
-            "fields": [
-              {
-                "item": "LitInt"
-              }
-            ]
-          },
-          {
-            "ident": "Float",
-            "fields": [
-              {
-                "item": "LitFloat"
-              }
-            ]
-          },
-          {
-            "ident": "Bool",
-            "fields": [
-              {
-                "item": "LitBool"
-              }
-            ]
-          },
-          {
-            "ident": "Verbatim",
-            "fields": [
-              {
-                "item": "LitVerbatim"
-              }
-            ]
-          }
-        ]
-      }
-    },
-    {
-      "struct": {
-        "ident": "LitBool",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "value",
-            "ty": {
-              "std": "bool"
-            }
-          },
-          {
-            "ident": "span",
-            "ty": {
-              "item": "Span"
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "LitByte",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "token",
-            "ty": {
-              "ext": "Literal"
-            }
-          }
-        ],
-        "all_fields_pub": false
-      }
-    },
-    {
-      "struct": {
-        "ident": "LitByteStr",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "token",
-            "ty": {
-              "ext": "Literal"
-            }
-          }
-        ],
-        "all_fields_pub": false
-      }
-    },
-    {
-      "struct": {
-        "ident": "LitChar",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "token",
-            "ty": {
-              "ext": "Literal"
-            }
-          }
-        ],
-        "all_fields_pub": false
-      }
-    },
-    {
-      "struct": {
-        "ident": "LitFloat",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "token",
-            "ty": {
-              "ext": "Literal"
-            }
-          }
-        ],
-        "all_fields_pub": false
-      }
-    },
-    {
-      "struct": {
-        "ident": "LitInt",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "token",
-            "ty": {
-              "ext": "Literal"
-            }
-          }
-        ],
-        "all_fields_pub": false
-      }
-    },
-    {
-      "struct": {
-        "ident": "LitStr",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "token",
-            "ty": {
-              "ext": "Literal"
-            }
-          }
-        ],
-        "all_fields_pub": false
-      }
-    },
-    {
-      "struct": {
-        "ident": "LitVerbatim",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "token",
-            "ty": {
-              "ext": "Literal"
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "Local",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "let_token",
-            "ty": {
-              "token": {
-                "repr": "let",
-                "ty": "Let"
-              }
-            }
-          },
-          {
-            "ident": "pats",
-            "ty": {
-              "punctuated": [
-                {
-                  "item": "Pat"
-                },
-                {
-                  "repr": "|",
-                  "ty": "Or"
-                }
-              ]
-            }
-          },
-          {
-            "ident": "ty",
-            "ty": {
-              "option": {
-                "tuple": [
-                  {
-                    "token": {
-                      "repr": ":",
-                      "ty": "Colon"
-                    }
-                  },
-                  {
-                    "box": {
-                      "item": "Type"
-                    }
-                  }
-                ]
-              }
-            }
-          },
-          {
-            "ident": "init",
-            "ty": {
-              "option": {
-                "tuple": [
-                  {
-                    "token": {
-                      "repr": "=",
-                      "ty": "Eq"
-                    }
-                  },
-                  {
-                    "box": {
-                      "item": "Expr"
-                    }
-                  }
-                ]
-              }
-            }
-          },
-          {
-            "ident": "semi_token",
-            "ty": {
-              "token": {
-                "repr": ";",
-                "ty": "Semi"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "Macro",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "path",
-            "ty": {
-              "item": "Path"
-            }
-          },
-          {
-            "ident": "bang_token",
-            "ty": {
+        {
+          "ident": "Inner",
+          "fields": [
+            {
               "token": {
                 "repr": "!",
-                "ty": "Bang"
+                "type": "Bang"
               }
             }
-          },
-          {
-            "ident": "delimiter",
-            "ty": {
-              "item": "MacroDelimiter"
-            }
-          },
-          {
-            "ident": "tts",
-            "ty": {
-              "ext": "TokenStream"
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
+          ]
+        }
+      ]
     },
     {
-      "enum": {
-        "ident": "MacroDelimiter",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "variants": [
-          {
-            "ident": "Paren",
-            "fields": [
-              {
-                "token_group": "Paren"
-              }
-            ]
-          },
-          {
-            "ident": "Brace",
-            "fields": [
-              {
-                "token_group": "Brace"
-              }
-            ]
-          },
-          {
-            "ident": "Bracket",
-            "fields": [
-              {
-                "token_group": "Bracket"
-              }
-            ]
-          }
+      "node": "struct",
+      "ident": "Attribute",
+      "features": {
+        "any": [
+          "full",
+          "derive"
         ]
-      }
-    },
-    {
-      "enum": {
-        "ident": "Member",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "variants": [
-          {
-            "ident": "Named",
-            "fields": [
-              {
-                "item": "Ident"
-              }
-            ]
-          },
-          {
-            "ident": "Unnamed",
-            "fields": [
-              {
-                "item": "Index"
-              }
-            ]
-          }
-        ]
-      }
-    },
-    {
-      "enum": {
-        "ident": "Meta",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "variants": [
-          {
-            "ident": "Word",
-            "fields": [
-              {
-                "item": "Ident"
-              }
-            ]
-          },
-          {
-            "ident": "List",
-            "fields": [
-              {
-                "item": "MetaList"
-              }
-            ]
-          },
-          {
-            "ident": "NameValue",
-            "fields": [
-              {
-                "item": "MetaNameValue"
-              }
-            ]
-          }
-        ]
-      }
-    },
-    {
-      "struct": {
-        "ident": "MetaList",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "ident",
-            "ty": {
-              "item": "Ident"
+      },
+      "fields": [
+        {
+          "ident": "pound_token",
+          "type": {
+            "token": {
+              "repr": "#",
+              "type": "Pound"
             }
-          },
-          {
-            "ident": "paren_token",
-            "ty": {
-              "token_group": "Paren"
-            }
-          },
-          {
-            "ident": "nested",
-            "ty": {
-              "punctuated": [
+          }
+        },
+        {
+          "ident": "style",
+          "type": {
+            "item": "AttrStyle"
+          }
+        },
+        {
+          "ident": "bracket_token",
+          "type": {
+            "group": "Bracket"
+          }
+        },
+        {
+          "ident": "path",
+          "type": {
+            "item": "Path"
+          }
+        },
+        {
+          "ident": "tts",
+          "type": {
+            "ext": "TokenStream"
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "BareFnArg",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "name",
+          "type": {
+            "option": {
+              "tuple": [
                 {
-                  "item": "NestedMeta"
+                  "item": "BareFnArgName"
                 },
                 {
-                  "repr": ",",
-                  "ty": "Comma"
+                  "token": {
+                    "repr": ":",
+                    "type": "Colon"
+                  }
                 }
               ]
             }
           }
-        ],
-        "all_fields_pub": true
-      }
+        },
+        {
+          "ident": "ty",
+          "type": {
+            "item": "Type"
+          }
+        }
+      ],
+      "all_fields_pub": true
     },
     {
-      "struct": {
-        "ident": "MetaNameValue",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "ident",
-            "ty": {
+      "node": "enum",
+      "ident": "BareFnArgName",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "variants": [
+        {
+          "ident": "Named",
+          "fields": [
+            {
               "item": "Ident"
             }
-          },
-          {
-            "ident": "eq_token",
-            "ty": {
+          ]
+        },
+        {
+          "ident": "Wild",
+          "fields": [
+            {
               "token": {
-                "repr": "=",
-                "ty": "Eq"
+                "repr": "_",
+                "type": "Underscore"
               }
             }
-          },
-          {
-            "ident": "lit",
-            "ty": {
-              "item": "Lit"
+          ]
+        }
+      ]
+    },
+    {
+      "node": "enum",
+      "ident": "BinOp",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "variants": [
+        {
+          "ident": "Add",
+          "fields": [
+            {
+              "token": {
+                "repr": "+",
+                "type": "Add"
+              }
+            }
+          ]
+        },
+        {
+          "ident": "Sub",
+          "fields": [
+            {
+              "token": {
+                "repr": "-",
+                "type": "Sub"
+              }
+            }
+          ]
+        },
+        {
+          "ident": "Mul",
+          "fields": [
+            {
+              "token": {
+                "repr": "*",
+                "type": "Star"
+              }
+            }
+          ]
+        },
+        {
+          "ident": "Div",
+          "fields": [
+            {
+              "token": {
+                "repr": "/",
+                "type": "Div"
+              }
+            }
+          ]
+        },
+        {
+          "ident": "Rem",
+          "fields": [
+            {
+              "token": {
+                "repr": "%",
+                "type": "Rem"
+              }
+            }
+          ]
+        },
+        {
+          "ident": "And",
+          "fields": [
+            {
+              "token": {
+                "repr": "&&",
+                "type": "AndAnd"
+              }
+            }
+          ]
+        },
+        {
+          "ident": "Or",
+          "fields": [
+            {
+              "token": {
+                "repr": "||",
+                "type": "OrOr"
+              }
+            }
+          ]
+        },
+        {
+          "ident": "BitXor",
+          "fields": [
+            {
+              "token": {
+                "repr": "^",
+                "type": "Caret"
+              }
+            }
+          ]
+        },
+        {
+          "ident": "BitAnd",
+          "fields": [
+            {
+              "token": {
+                "repr": "&",
+                "type": "And"
+              }
+            }
+          ]
+        },
+        {
+          "ident": "BitOr",
+          "fields": [
+            {
+              "token": {
+                "repr": "|",
+                "type": "Or"
+              }
+            }
+          ]
+        },
+        {
+          "ident": "Shl",
+          "fields": [
+            {
+              "token": {
+                "repr": "<<",
+                "type": "Shl"
+              }
+            }
+          ]
+        },
+        {
+          "ident": "Shr",
+          "fields": [
+            {
+              "token": {
+                "repr": ">>",
+                "type": "Shr"
+              }
+            }
+          ]
+        },
+        {
+          "ident": "Eq",
+          "fields": [
+            {
+              "token": {
+                "repr": "==",
+                "type": "EqEq"
+              }
+            }
+          ]
+        },
+        {
+          "ident": "Lt",
+          "fields": [
+            {
+              "token": {
+                "repr": "<",
+                "type": "Lt"
+              }
+            }
+          ]
+        },
+        {
+          "ident": "Le",
+          "fields": [
+            {
+              "token": {
+                "repr": "<=",
+                "type": "Le"
+              }
+            }
+          ]
+        },
+        {
+          "ident": "Ne",
+          "fields": [
+            {
+              "token": {
+                "repr": "!=",
+                "type": "Ne"
+              }
+            }
+          ]
+        },
+        {
+          "ident": "Ge",
+          "fields": [
+            {
+              "token": {
+                "repr": ">=",
+                "type": "Ge"
+              }
+            }
+          ]
+        },
+        {
+          "ident": "Gt",
+          "fields": [
+            {
+              "token": {
+                "repr": ">",
+                "type": "Gt"
+              }
+            }
+          ]
+        },
+        {
+          "ident": "AddEq",
+          "fields": [
+            {
+              "token": {
+                "repr": "+=",
+                "type": "AddEq"
+              }
+            }
+          ]
+        },
+        {
+          "ident": "SubEq",
+          "fields": [
+            {
+              "token": {
+                "repr": "-=",
+                "type": "SubEq"
+              }
+            }
+          ]
+        },
+        {
+          "ident": "MulEq",
+          "fields": [
+            {
+              "token": {
+                "repr": "*=",
+                "type": "MulEq"
+              }
+            }
+          ]
+        },
+        {
+          "ident": "DivEq",
+          "fields": [
+            {
+              "token": {
+                "repr": "/=",
+                "type": "DivEq"
+              }
+            }
+          ]
+        },
+        {
+          "ident": "RemEq",
+          "fields": [
+            {
+              "token": {
+                "repr": "%=",
+                "type": "RemEq"
+              }
+            }
+          ]
+        },
+        {
+          "ident": "BitXorEq",
+          "fields": [
+            {
+              "token": {
+                "repr": "^=",
+                "type": "CaretEq"
+              }
+            }
+          ]
+        },
+        {
+          "ident": "BitAndEq",
+          "fields": [
+            {
+              "token": {
+                "repr": "&=",
+                "type": "AndEq"
+              }
+            }
+          ]
+        },
+        {
+          "ident": "BitOrEq",
+          "fields": [
+            {
+              "token": {
+                "repr": "|=",
+                "type": "OrEq"
+              }
+            }
+          ]
+        },
+        {
+          "ident": "ShlEq",
+          "fields": [
+            {
+              "token": {
+                "repr": "<<=",
+                "type": "ShlEq"
+              }
+            }
+          ]
+        },
+        {
+          "ident": "ShrEq",
+          "fields": [
+            {
+              "token": {
+                "repr": ">>=",
+                "type": "ShrEq"
+              }
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "node": "struct",
+      "ident": "Binding",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "ident",
+          "type": {
+            "item": "Ident"
+          }
+        },
+        {
+          "ident": "eq_token",
+          "type": {
+            "token": {
+              "repr": "=",
+              "type": "Eq"
             }
           }
-        ],
-        "all_fields_pub": true
-      }
+        },
+        {
+          "ident": "ty",
+          "type": {
+            "item": "Type"
+          }
+        }
+      ],
+      "all_fields_pub": true
     },
     {
-      "struct": {
-        "ident": "MethodSig",
-        "features": {
-          "any": [
-            "full"
+      "node": "struct",
+      "ident": "Block",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "brace_token",
+          "type": {
+            "group": "Brace"
+          }
+        },
+        {
+          "ident": "stmts",
+          "type": {
+            "vec": {
+              "item": "Stmt"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "BoundLifetimes",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "for_token",
+          "type": {
+            "token": {
+              "repr": "for",
+              "type": "For"
+            }
+          }
+        },
+        {
+          "ident": "lt_token",
+          "type": {
+            "token": {
+              "repr": "<",
+              "type": "Lt"
+            }
+          }
+        },
+        {
+          "ident": "lifetimes",
+          "type": {
+            "punctuated": {
+              "element": {
+                "item": "LifetimeDef"
+              },
+              "punct": {
+                "repr": ",",
+                "type": "Comma"
+              }
+            }
+          }
+        },
+        {
+          "ident": "gt_token",
+          "type": {
+            "token": {
+              "repr": ">",
+              "type": "Gt"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ConstParam",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "const_token",
+          "type": {
+            "token": {
+              "repr": "const",
+              "type": "Const"
+            }
+          }
+        },
+        {
+          "ident": "ident",
+          "type": {
+            "item": "Ident"
+          }
+        },
+        {
+          "ident": "colon_token",
+          "type": {
+            "token": {
+              "repr": ":",
+              "type": "Colon"
+            }
+          }
+        },
+        {
+          "ident": "ty",
+          "type": {
+            "item": "Type"
+          }
+        },
+        {
+          "ident": "eq_token",
+          "type": {
+            "option": {
+              "token": {
+                "repr": "=",
+                "type": "Eq"
+              }
+            }
+          }
+        },
+        {
+          "ident": "default",
+          "type": {
+            "option": {
+              "item": "Expr"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "Constraint",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "ident",
+          "type": {
+            "item": "Ident"
+          }
+        },
+        {
+          "ident": "colon_token",
+          "type": {
+            "token": {
+              "repr": ":",
+              "type": "Colon"
+            }
+          }
+        },
+        {
+          "ident": "bounds",
+          "type": {
+            "punctuated": {
+              "element": {
+                "item": "TypeParamBound"
+              },
+              "punct": {
+                "repr": "+",
+                "type": "Add"
+              }
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "enum",
+      "ident": "Data",
+      "features": {
+        "any": [
+          "derive"
+        ]
+      },
+      "variants": [
+        {
+          "ident": "Struct",
+          "fields": [
+            {
+              "item": "DataStruct"
+            }
           ]
         },
-        "fields": [
-          {
-            "ident": "constness",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": "const",
-                  "ty": "Const"
+        {
+          "ident": "Enum",
+          "fields": [
+            {
+              "item": "DataEnum"
+            }
+          ]
+        },
+        {
+          "ident": "Union",
+          "fields": [
+            {
+              "item": "DataUnion"
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "node": "struct",
+      "ident": "DataEnum",
+      "features": {
+        "any": [
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "enum_token",
+          "type": {
+            "token": {
+              "repr": "enum",
+              "type": "Enum"
+            }
+          }
+        },
+        {
+          "ident": "brace_token",
+          "type": {
+            "group": "Brace"
+          }
+        },
+        {
+          "ident": "variants",
+          "type": {
+            "punctuated": {
+              "element": {
+                "item": "Variant"
+              },
+              "punct": {
+                "repr": ",",
+                "type": "Comma"
+              }
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "DataStruct",
+      "features": {
+        "any": [
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "struct_token",
+          "type": {
+            "token": {
+              "repr": "struct",
+              "type": "Struct"
+            }
+          }
+        },
+        {
+          "ident": "fields",
+          "type": {
+            "item": "Fields"
+          }
+        },
+        {
+          "ident": "semi_token",
+          "type": {
+            "option": {
+              "token": {
+                "repr": ";",
+                "type": "Semi"
+              }
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "DataUnion",
+      "features": {
+        "any": [
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "union_token",
+          "type": {
+            "token": {
+              "repr": "union",
+              "type": "Union"
+            }
+          }
+        },
+        {
+          "ident": "fields",
+          "type": {
+            "item": "FieldsNamed"
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "DeriveInput",
+      "features": {
+        "any": [
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "vis",
+          "type": {
+            "item": "Visibility"
+          }
+        },
+        {
+          "ident": "ident",
+          "type": {
+            "item": "Ident"
+          }
+        },
+        {
+          "ident": "generics",
+          "type": {
+            "item": "Generics"
+          }
+        },
+        {
+          "ident": "data",
+          "type": {
+            "item": "Data"
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "enum",
+      "ident": "Expr",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "variants": [
+        {
+          "ident": "Box",
+          "fields": [
+            {
+              "item": "ExprBox"
+            }
+          ]
+        },
+        {
+          "ident": "InPlace",
+          "fields": [
+            {
+              "item": "ExprInPlace"
+            }
+          ]
+        },
+        {
+          "ident": "Array",
+          "fields": [
+            {
+              "item": "ExprArray"
+            }
+          ]
+        },
+        {
+          "ident": "Call",
+          "fields": [
+            {
+              "item": "ExprCall"
+            }
+          ]
+        },
+        {
+          "ident": "MethodCall",
+          "fields": [
+            {
+              "item": "ExprMethodCall"
+            }
+          ]
+        },
+        {
+          "ident": "Tuple",
+          "fields": [
+            {
+              "item": "ExprTuple"
+            }
+          ]
+        },
+        {
+          "ident": "Binary",
+          "fields": [
+            {
+              "item": "ExprBinary"
+            }
+          ]
+        },
+        {
+          "ident": "Unary",
+          "fields": [
+            {
+              "item": "ExprUnary"
+            }
+          ]
+        },
+        {
+          "ident": "Lit",
+          "fields": [
+            {
+              "item": "ExprLit"
+            }
+          ]
+        },
+        {
+          "ident": "Cast",
+          "fields": [
+            {
+              "item": "ExprCast"
+            }
+          ]
+        },
+        {
+          "ident": "Type",
+          "fields": [
+            {
+              "item": "ExprType"
+            }
+          ]
+        },
+        {
+          "ident": "Let",
+          "fields": [
+            {
+              "item": "ExprLet"
+            }
+          ]
+        },
+        {
+          "ident": "If",
+          "fields": [
+            {
+              "item": "ExprIf"
+            }
+          ]
+        },
+        {
+          "ident": "While",
+          "fields": [
+            {
+              "item": "ExprWhile"
+            }
+          ]
+        },
+        {
+          "ident": "ForLoop",
+          "fields": [
+            {
+              "item": "ExprForLoop"
+            }
+          ]
+        },
+        {
+          "ident": "Loop",
+          "fields": [
+            {
+              "item": "ExprLoop"
+            }
+          ]
+        },
+        {
+          "ident": "Match",
+          "fields": [
+            {
+              "item": "ExprMatch"
+            }
+          ]
+        },
+        {
+          "ident": "Closure",
+          "fields": [
+            {
+              "item": "ExprClosure"
+            }
+          ]
+        },
+        {
+          "ident": "Unsafe",
+          "fields": [
+            {
+              "item": "ExprUnsafe"
+            }
+          ]
+        },
+        {
+          "ident": "Block",
+          "fields": [
+            {
+              "item": "ExprBlock"
+            }
+          ]
+        },
+        {
+          "ident": "Assign",
+          "fields": [
+            {
+              "item": "ExprAssign"
+            }
+          ]
+        },
+        {
+          "ident": "AssignOp",
+          "fields": [
+            {
+              "item": "ExprAssignOp"
+            }
+          ]
+        },
+        {
+          "ident": "Field",
+          "fields": [
+            {
+              "item": "ExprField"
+            }
+          ]
+        },
+        {
+          "ident": "Index",
+          "fields": [
+            {
+              "item": "ExprIndex"
+            }
+          ]
+        },
+        {
+          "ident": "Range",
+          "fields": [
+            {
+              "item": "ExprRange"
+            }
+          ]
+        },
+        {
+          "ident": "Path",
+          "fields": [
+            {
+              "item": "ExprPath"
+            }
+          ]
+        },
+        {
+          "ident": "Reference",
+          "fields": [
+            {
+              "item": "ExprReference"
+            }
+          ]
+        },
+        {
+          "ident": "Break",
+          "fields": [
+            {
+              "item": "ExprBreak"
+            }
+          ]
+        },
+        {
+          "ident": "Continue",
+          "fields": [
+            {
+              "item": "ExprContinue"
+            }
+          ]
+        },
+        {
+          "ident": "Return",
+          "fields": [
+            {
+              "item": "ExprReturn"
+            }
+          ]
+        },
+        {
+          "ident": "Macro",
+          "fields": [
+            {
+              "item": "ExprMacro"
+            }
+          ]
+        },
+        {
+          "ident": "Struct",
+          "fields": [
+            {
+              "item": "ExprStruct"
+            }
+          ]
+        },
+        {
+          "ident": "Repeat",
+          "fields": [
+            {
+              "item": "ExprRepeat"
+            }
+          ]
+        },
+        {
+          "ident": "Paren",
+          "fields": [
+            {
+              "item": "ExprParen"
+            }
+          ]
+        },
+        {
+          "ident": "Group",
+          "fields": [
+            {
+              "item": "ExprGroup"
+            }
+          ]
+        },
+        {
+          "ident": "Try",
+          "fields": [
+            {
+              "item": "ExprTry"
+            }
+          ]
+        },
+        {
+          "ident": "Async",
+          "fields": [
+            {
+              "item": "ExprAsync"
+            }
+          ]
+        },
+        {
+          "ident": "TryBlock",
+          "fields": [
+            {
+              "item": "ExprTryBlock"
+            }
+          ]
+        },
+        {
+          "ident": "Yield",
+          "fields": [
+            {
+              "item": "ExprYield"
+            }
+          ]
+        },
+        {
+          "ident": "Verbatim",
+          "fields": [
+            {
+              "item": "ExprVerbatim"
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "node": "struct",
+      "ident": "ExprArray",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "bracket_token",
+          "type": {
+            "group": "Bracket"
+          }
+        },
+        {
+          "ident": "elems",
+          "type": {
+            "punctuated": {
+              "element": {
+                "item": "Expr"
+              },
+              "punct": {
+                "repr": ",",
+                "type": "Comma"
+              }
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ExprAssign",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "left",
+          "type": {
+            "box": {
+              "item": "Expr"
+            }
+          }
+        },
+        {
+          "ident": "eq_token",
+          "type": {
+            "token": {
+              "repr": "=",
+              "type": "Eq"
+            }
+          }
+        },
+        {
+          "ident": "right",
+          "type": {
+            "box": {
+              "item": "Expr"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ExprAssignOp",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "left",
+          "type": {
+            "box": {
+              "item": "Expr"
+            }
+          }
+        },
+        {
+          "ident": "op",
+          "type": {
+            "item": "BinOp"
+          }
+        },
+        {
+          "ident": "right",
+          "type": {
+            "box": {
+              "item": "Expr"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ExprAsync",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "async_token",
+          "type": {
+            "token": {
+              "repr": "async",
+              "type": "Async"
+            }
+          }
+        },
+        {
+          "ident": "capture",
+          "type": {
+            "option": {
+              "token": {
+                "repr": "move",
+                "type": "Move"
+              }
+            }
+          }
+        },
+        {
+          "ident": "block",
+          "type": {
+            "item": "Block"
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ExprBinary",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "left",
+          "type": {
+            "box": {
+              "item": "Expr"
+            }
+          }
+        },
+        {
+          "ident": "op",
+          "type": {
+            "item": "BinOp"
+          }
+        },
+        {
+          "ident": "right",
+          "type": {
+            "box": {
+              "item": "Expr"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ExprBlock",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "label",
+          "type": {
+            "option": {
+              "item": "Label"
+            }
+          }
+        },
+        {
+          "ident": "block",
+          "type": {
+            "item": "Block"
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ExprBox",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "box_token",
+          "type": {
+            "token": {
+              "repr": "box",
+              "type": "Box"
+            }
+          }
+        },
+        {
+          "ident": "expr",
+          "type": {
+            "box": {
+              "item": "Expr"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ExprBreak",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "break_token",
+          "type": {
+            "token": {
+              "repr": "break",
+              "type": "Break"
+            }
+          }
+        },
+        {
+          "ident": "label",
+          "type": {
+            "option": {
+              "item": "Lifetime"
+            }
+          }
+        },
+        {
+          "ident": "expr",
+          "type": {
+            "option": {
+              "box": {
+                "item": "Expr"
+              }
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ExprCall",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "func",
+          "type": {
+            "box": {
+              "item": "Expr"
+            }
+          }
+        },
+        {
+          "ident": "paren_token",
+          "type": {
+            "group": "Paren"
+          }
+        },
+        {
+          "ident": "args",
+          "type": {
+            "punctuated": {
+              "element": {
+                "item": "Expr"
+              },
+              "punct": {
+                "repr": ",",
+                "type": "Comma"
+              }
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ExprCast",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "expr",
+          "type": {
+            "box": {
+              "item": "Expr"
+            }
+          }
+        },
+        {
+          "ident": "as_token",
+          "type": {
+            "token": {
+              "repr": "as",
+              "type": "As"
+            }
+          }
+        },
+        {
+          "ident": "ty",
+          "type": {
+            "box": {
+              "item": "Type"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ExprClosure",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "asyncness",
+          "type": {
+            "option": {
+              "token": {
+                "repr": "async",
+                "type": "Async"
+              }
+            }
+          }
+        },
+        {
+          "ident": "movability",
+          "type": {
+            "option": {
+              "token": {
+                "repr": "static",
+                "type": "Static"
+              }
+            }
+          }
+        },
+        {
+          "ident": "capture",
+          "type": {
+            "option": {
+              "token": {
+                "repr": "move",
+                "type": "Move"
+              }
+            }
+          }
+        },
+        {
+          "ident": "or1_token",
+          "type": {
+            "token": {
+              "repr": "|",
+              "type": "Or"
+            }
+          }
+        },
+        {
+          "ident": "inputs",
+          "type": {
+            "punctuated": {
+              "element": {
+                "item": "FnArg"
+              },
+              "punct": {
+                "repr": ",",
+                "type": "Comma"
+              }
+            }
+          }
+        },
+        {
+          "ident": "or2_token",
+          "type": {
+            "token": {
+              "repr": "|",
+              "type": "Or"
+            }
+          }
+        },
+        {
+          "ident": "output",
+          "type": {
+            "item": "ReturnType"
+          }
+        },
+        {
+          "ident": "body",
+          "type": {
+            "box": {
+              "item": "Expr"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ExprContinue",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "continue_token",
+          "type": {
+            "token": {
+              "repr": "continue",
+              "type": "Continue"
+            }
+          }
+        },
+        {
+          "ident": "label",
+          "type": {
+            "option": {
+              "item": "Lifetime"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ExprField",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "base",
+          "type": {
+            "box": {
+              "item": "Expr"
+            }
+          }
+        },
+        {
+          "ident": "dot_token",
+          "type": {
+            "token": {
+              "repr": ".",
+              "type": "Dot"
+            }
+          }
+        },
+        {
+          "ident": "member",
+          "type": {
+            "item": "Member"
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ExprForLoop",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "label",
+          "type": {
+            "option": {
+              "item": "Label"
+            }
+          }
+        },
+        {
+          "ident": "for_token",
+          "type": {
+            "token": {
+              "repr": "for",
+              "type": "For"
+            }
+          }
+        },
+        {
+          "ident": "pat",
+          "type": {
+            "box": {
+              "item": "Pat"
+            }
+          }
+        },
+        {
+          "ident": "in_token",
+          "type": {
+            "token": {
+              "repr": "in",
+              "type": "In"
+            }
+          }
+        },
+        {
+          "ident": "expr",
+          "type": {
+            "box": {
+              "item": "Expr"
+            }
+          }
+        },
+        {
+          "ident": "body",
+          "type": {
+            "item": "Block"
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ExprGroup",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "group_token",
+          "type": {
+            "group": "Group"
+          }
+        },
+        {
+          "ident": "expr",
+          "type": {
+            "box": {
+              "item": "Expr"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ExprIf",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "if_token",
+          "type": {
+            "token": {
+              "repr": "if",
+              "type": "If"
+            }
+          }
+        },
+        {
+          "ident": "cond",
+          "type": {
+            "box": {
+              "item": "Expr"
+            }
+          }
+        },
+        {
+          "ident": "then_branch",
+          "type": {
+            "item": "Block"
+          }
+        },
+        {
+          "ident": "else_branch",
+          "type": {
+            "option": {
+              "tuple": [
+                {
+                  "token": {
+                    "repr": "else",
+                    "type": "Else"
+                  }
+                },
+                {
+                  "box": {
+                    "item": "Expr"
+                  }
                 }
+              ]
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ExprInPlace",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "place",
+          "type": {
+            "box": {
+              "item": "Expr"
+            }
+          }
+        },
+        {
+          "ident": "arrow_token",
+          "type": {
+            "token": {
+              "repr": "<-",
+              "type": "LArrow"
+            }
+          }
+        },
+        {
+          "ident": "value",
+          "type": {
+            "box": {
+              "item": "Expr"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ExprIndex",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "expr",
+          "type": {
+            "box": {
+              "item": "Expr"
+            }
+          }
+        },
+        {
+          "ident": "bracket_token",
+          "type": {
+            "group": "Bracket"
+          }
+        },
+        {
+          "ident": "index",
+          "type": {
+            "box": {
+              "item": "Expr"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ExprLet",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "let_token",
+          "type": {
+            "token": {
+              "repr": "let",
+              "type": "Let"
+            }
+          }
+        },
+        {
+          "ident": "pats",
+          "type": {
+            "punctuated": {
+              "element": {
+                "item": "Pat"
+              },
+              "punct": {
+                "repr": "|",
+                "type": "Or"
               }
             }
-          },
-          {
-            "ident": "unsafety",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": "unsafe",
-                  "ty": "Unsafe"
-                }
+          }
+        },
+        {
+          "ident": "eq_token",
+          "type": {
+            "token": {
+              "repr": "=",
+              "type": "Eq"
+            }
+          }
+        },
+        {
+          "ident": "expr",
+          "type": {
+            "box": {
+              "item": "Expr"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ExprLit",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "lit",
+          "type": {
+            "item": "Lit"
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ExprLoop",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "label",
+          "type": {
+            "option": {
+              "item": "Label"
+            }
+          }
+        },
+        {
+          "ident": "loop_token",
+          "type": {
+            "token": {
+              "repr": "loop",
+              "type": "Loop"
+            }
+          }
+        },
+        {
+          "ident": "body",
+          "type": {
+            "item": "Block"
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ExprMacro",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "mac",
+          "type": {
+            "item": "Macro"
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ExprMatch",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "match_token",
+          "type": {
+            "token": {
+              "repr": "match",
+              "type": "Match"
+            }
+          }
+        },
+        {
+          "ident": "expr",
+          "type": {
+            "box": {
+              "item": "Expr"
+            }
+          }
+        },
+        {
+          "ident": "brace_token",
+          "type": {
+            "group": "Brace"
+          }
+        },
+        {
+          "ident": "arms",
+          "type": {
+            "vec": {
+              "item": "Arm"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ExprMethodCall",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "receiver",
+          "type": {
+            "box": {
+              "item": "Expr"
+            }
+          }
+        },
+        {
+          "ident": "dot_token",
+          "type": {
+            "token": {
+              "repr": ".",
+              "type": "Dot"
+            }
+          }
+        },
+        {
+          "ident": "method",
+          "type": {
+            "item": "Ident"
+          }
+        },
+        {
+          "ident": "turbofish",
+          "type": {
+            "option": {
+              "item": "MethodTurbofish"
+            }
+          }
+        },
+        {
+          "ident": "paren_token",
+          "type": {
+            "group": "Paren"
+          }
+        },
+        {
+          "ident": "args",
+          "type": {
+            "punctuated": {
+              "element": {
+                "item": "Expr"
+              },
+              "punct": {
+                "repr": ",",
+                "type": "Comma"
               }
             }
-          },
-          {
-            "ident": "asyncness",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": "async",
-                  "ty": "Async"
-                }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ExprParen",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "paren_token",
+          "type": {
+            "group": "Paren"
+          }
+        },
+        {
+          "ident": "expr",
+          "type": {
+            "box": {
+              "item": "Expr"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ExprPath",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "qself",
+          "type": {
+            "option": {
+              "item": "QSelf"
+            }
+          }
+        },
+        {
+          "ident": "path",
+          "type": {
+            "item": "Path"
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ExprRange",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "from",
+          "type": {
+            "option": {
+              "box": {
+                "item": "Expr"
               }
             }
-          },
-          {
-            "ident": "abi",
-            "ty": {
-              "option": {
-                "item": "Abi"
+          }
+        },
+        {
+          "ident": "limits",
+          "type": {
+            "item": "RangeLimits"
+          }
+        },
+        {
+          "ident": "to",
+          "type": {
+            "option": {
+              "box": {
+                "item": "Expr"
               }
             }
-          },
-          {
-            "ident": "ident",
-            "ty": {
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ExprReference",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "and_token",
+          "type": {
+            "token": {
+              "repr": "&",
+              "type": "And"
+            }
+          }
+        },
+        {
+          "ident": "mutability",
+          "type": {
+            "option": {
+              "token": {
+                "repr": "mut",
+                "type": "Mut"
+              }
+            }
+          }
+        },
+        {
+          "ident": "expr",
+          "type": {
+            "box": {
+              "item": "Expr"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ExprRepeat",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "bracket_token",
+          "type": {
+            "group": "Bracket"
+          }
+        },
+        {
+          "ident": "expr",
+          "type": {
+            "box": {
+              "item": "Expr"
+            }
+          }
+        },
+        {
+          "ident": "semi_token",
+          "type": {
+            "token": {
+              "repr": ";",
+              "type": "Semi"
+            }
+          }
+        },
+        {
+          "ident": "len",
+          "type": {
+            "box": {
+              "item": "Expr"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ExprReturn",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "return_token",
+          "type": {
+            "token": {
+              "repr": "return",
+              "type": "Return"
+            }
+          }
+        },
+        {
+          "ident": "expr",
+          "type": {
+            "option": {
+              "box": {
+                "item": "Expr"
+              }
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ExprStruct",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "path",
+          "type": {
+            "item": "Path"
+          }
+        },
+        {
+          "ident": "brace_token",
+          "type": {
+            "group": "Brace"
+          }
+        },
+        {
+          "ident": "fields",
+          "type": {
+            "punctuated": {
+              "element": {
+                "item": "FieldValue"
+              },
+              "punct": {
+                "repr": ",",
+                "type": "Comma"
+              }
+            }
+          }
+        },
+        {
+          "ident": "dot2_token",
+          "type": {
+            "option": {
+              "token": {
+                "repr": "..",
+                "type": "Dot2"
+              }
+            }
+          }
+        },
+        {
+          "ident": "rest",
+          "type": {
+            "option": {
+              "box": {
+                "item": "Expr"
+              }
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ExprTry",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "expr",
+          "type": {
+            "box": {
+              "item": "Expr"
+            }
+          }
+        },
+        {
+          "ident": "question_token",
+          "type": {
+            "token": {
+              "repr": "?",
+              "type": "Question"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ExprTryBlock",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "try_token",
+          "type": {
+            "token": {
+              "repr": "try",
+              "type": "Try"
+            }
+          }
+        },
+        {
+          "ident": "block",
+          "type": {
+            "item": "Block"
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ExprTuple",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "paren_token",
+          "type": {
+            "group": "Paren"
+          }
+        },
+        {
+          "ident": "elems",
+          "type": {
+            "punctuated": {
+              "element": {
+                "item": "Expr"
+              },
+              "punct": {
+                "repr": ",",
+                "type": "Comma"
+              }
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ExprType",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "expr",
+          "type": {
+            "box": {
+              "item": "Expr"
+            }
+          }
+        },
+        {
+          "ident": "colon_token",
+          "type": {
+            "token": {
+              "repr": ":",
+              "type": "Colon"
+            }
+          }
+        },
+        {
+          "ident": "ty",
+          "type": {
+            "box": {
+              "item": "Type"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ExprUnary",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "op",
+          "type": {
+            "item": "UnOp"
+          }
+        },
+        {
+          "ident": "expr",
+          "type": {
+            "box": {
+              "item": "Expr"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ExprUnsafe",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "unsafe_token",
+          "type": {
+            "token": {
+              "repr": "unsafe",
+              "type": "Unsafe"
+            }
+          }
+        },
+        {
+          "ident": "block",
+          "type": {
+            "item": "Block"
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ExprVerbatim",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "tts",
+          "type": {
+            "ext": "TokenStream"
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ExprWhile",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "label",
+          "type": {
+            "option": {
+              "item": "Label"
+            }
+          }
+        },
+        {
+          "ident": "while_token",
+          "type": {
+            "token": {
+              "repr": "while",
+              "type": "While"
+            }
+          }
+        },
+        {
+          "ident": "cond",
+          "type": {
+            "box": {
+              "item": "Expr"
+            }
+          }
+        },
+        {
+          "ident": "body",
+          "type": {
+            "item": "Block"
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ExprYield",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "yield_token",
+          "type": {
+            "token": {
+              "repr": "yield",
+              "type": "Yield"
+            }
+          }
+        },
+        {
+          "ident": "expr",
+          "type": {
+            "option": {
+              "box": {
+                "item": "Expr"
+              }
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "Field",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "vis",
+          "type": {
+            "item": "Visibility"
+          }
+        },
+        {
+          "ident": "ident",
+          "type": {
+            "option": {
               "item": "Ident"
             }
-          },
-          {
-            "ident": "decl",
-            "ty": {
+          }
+        },
+        {
+          "ident": "colon_token",
+          "type": {
+            "option": {
+              "token": {
+                "repr": ":",
+                "type": "Colon"
+              }
+            }
+          }
+        },
+        {
+          "ident": "ty",
+          "type": {
+            "item": "Type"
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "FieldPat",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "member",
+          "type": {
+            "item": "Member"
+          }
+        },
+        {
+          "ident": "colon_token",
+          "type": {
+            "option": {
+              "token": {
+                "repr": ":",
+                "type": "Colon"
+              }
+            }
+          }
+        },
+        {
+          "ident": "pat",
+          "type": {
+            "box": {
+              "item": "Pat"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "FieldValue",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "member",
+          "type": {
+            "item": "Member"
+          }
+        },
+        {
+          "ident": "colon_token",
+          "type": {
+            "option": {
+              "token": {
+                "repr": ":",
+                "type": "Colon"
+              }
+            }
+          }
+        },
+        {
+          "ident": "expr",
+          "type": {
+            "item": "Expr"
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "enum",
+      "ident": "Fields",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "variants": [
+        {
+          "ident": "Named",
+          "fields": [
+            {
+              "item": "FieldsNamed"
+            }
+          ]
+        },
+        {
+          "ident": "Unnamed",
+          "fields": [
+            {
+              "item": "FieldsUnnamed"
+            }
+          ]
+        },
+        {
+          "ident": "Unit",
+          "fields": []
+        }
+      ]
+    },
+    {
+      "node": "struct",
+      "ident": "FieldsNamed",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "brace_token",
+          "type": {
+            "group": "Brace"
+          }
+        },
+        {
+          "ident": "named",
+          "type": {
+            "punctuated": {
+              "element": {
+                "item": "Field"
+              },
+              "punct": {
+                "repr": ",",
+                "type": "Comma"
+              }
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "FieldsUnnamed",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "paren_token",
+          "type": {
+            "group": "Paren"
+          }
+        },
+        {
+          "ident": "unnamed",
+          "type": {
+            "punctuated": {
+              "element": {
+                "item": "Field"
+              },
+              "punct": {
+                "repr": ",",
+                "type": "Comma"
+              }
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "File",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "shebang",
+          "type": {
+            "option": {
+              "std": "String"
+            }
+          }
+        },
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "items",
+          "type": {
+            "vec": {
+              "item": "Item"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "enum",
+      "ident": "FnArg",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "variants": [
+        {
+          "ident": "SelfRef",
+          "fields": [
+            {
+              "item": "ArgSelfRef"
+            }
+          ]
+        },
+        {
+          "ident": "SelfValue",
+          "fields": [
+            {
+              "item": "ArgSelf"
+            }
+          ]
+        },
+        {
+          "ident": "Captured",
+          "fields": [
+            {
+              "item": "ArgCaptured"
+            }
+          ]
+        },
+        {
+          "ident": "Inferred",
+          "fields": [
+            {
+              "item": "Pat"
+            }
+          ]
+        },
+        {
+          "ident": "Ignored",
+          "fields": [
+            {
+              "item": "Type"
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "node": "struct",
+      "ident": "FnDecl",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "fn_token",
+          "type": {
+            "token": {
+              "repr": "fn",
+              "type": "Fn"
+            }
+          }
+        },
+        {
+          "ident": "generics",
+          "type": {
+            "item": "Generics"
+          }
+        },
+        {
+          "ident": "paren_token",
+          "type": {
+            "group": "Paren"
+          }
+        },
+        {
+          "ident": "inputs",
+          "type": {
+            "punctuated": {
+              "element": {
+                "item": "FnArg"
+              },
+              "punct": {
+                "repr": ",",
+                "type": "Comma"
+              }
+            }
+          }
+        },
+        {
+          "ident": "variadic",
+          "type": {
+            "option": {
+              "token": {
+                "repr": "...",
+                "type": "Dot3"
+              }
+            }
+          }
+        },
+        {
+          "ident": "output",
+          "type": {
+            "item": "ReturnType"
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "enum",
+      "ident": "ForeignItem",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "variants": [
+        {
+          "ident": "Fn",
+          "fields": [
+            {
+              "item": "ForeignItemFn"
+            }
+          ]
+        },
+        {
+          "ident": "Static",
+          "fields": [
+            {
+              "item": "ForeignItemStatic"
+            }
+          ]
+        },
+        {
+          "ident": "Type",
+          "fields": [
+            {
+              "item": "ForeignItemType"
+            }
+          ]
+        },
+        {
+          "ident": "Macro",
+          "fields": [
+            {
+              "item": "ForeignItemMacro"
+            }
+          ]
+        },
+        {
+          "ident": "Verbatim",
+          "fields": [
+            {
+              "item": "ForeignItemVerbatim"
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "node": "struct",
+      "ident": "ForeignItemFn",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "vis",
+          "type": {
+            "item": "Visibility"
+          }
+        },
+        {
+          "ident": "ident",
+          "type": {
+            "item": "Ident"
+          }
+        },
+        {
+          "ident": "decl",
+          "type": {
+            "box": {
               "item": "FnDecl"
             }
           }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "MethodTurbofish",
-        "features": {
-          "any": [
-            "full"
-          ]
         },
-        "fields": [
-          {
-            "ident": "colon2_token",
-            "ty": {
-              "token": {
-                "repr": "::",
-                "ty": "Colon2"
-              }
-            }
-          },
-          {
-            "ident": "lt_token",
-            "ty": {
-              "token": {
-                "repr": "<",
-                "ty": "Lt"
-              }
-            }
-          },
-          {
-            "ident": "args",
-            "ty": {
-              "punctuated": [
-                {
-                  "item": "GenericMethodArgument"
-                },
-                {
-                  "repr": ",",
-                  "ty": "Comma"
-                }
-              ]
-            }
-          },
-          {
-            "ident": "gt_token",
-            "ty": {
-              "token": {
-                "repr": ">",
-                "ty": "Gt"
-              }
+        {
+          "ident": "semi_token",
+          "type": {
+            "token": {
+              "repr": ";",
+              "type": "Semi"
             }
           }
-        ],
-        "all_fields_pub": true
-      }
+        }
+      ],
+      "all_fields_pub": true
     },
     {
-      "enum": {
-        "ident": "NestedMeta",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "variants": [
-          {
-            "ident": "Meta",
-            "fields": [
-              {
-                "item": "Meta"
-              }
-            ]
-          },
-          {
-            "ident": "Literal",
-            "fields": [
-              {
-                "item": "Lit"
-              }
-            ]
-          }
+      "node": "struct",
+      "ident": "ForeignItemMacro",
+      "features": {
+        "any": [
+          "full"
         ]
-      }
-    },
-    {
-      "struct": {
-        "ident": "ParenthesizedGenericArguments",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "paren_token",
-            "ty": {
-              "token_group": "Paren"
-            }
-          },
-          {
-            "ident": "inputs",
-            "ty": {
-              "punctuated": [
-                {
-                  "item": "Type"
-                },
-                {
-                  "repr": ",",
-                  "ty": "Comma"
-                }
-              ]
-            }
-          },
-          {
-            "ident": "output",
-            "ty": {
-              "item": "ReturnType"
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
             }
           }
-        ],
-        "all_fields_pub": true
-      }
+        },
+        {
+          "ident": "mac",
+          "type": {
+            "item": "Macro"
+          }
+        },
+        {
+          "ident": "semi_token",
+          "type": {
+            "option": {
+              "token": {
+                "repr": ";",
+                "type": "Semi"
+              }
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
     },
     {
-      "enum": {
-        "ident": "Pat",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "variants": [
-          {
-            "ident": "Wild",
-            "fields": [
-              {
-                "item": "PatWild"
-              }
-            ]
-          },
-          {
-            "ident": "Ident",
-            "fields": [
-              {
-                "item": "PatIdent"
-              }
-            ]
-          },
-          {
-            "ident": "Struct",
-            "fields": [
-              {
-                "item": "PatStruct"
-              }
-            ]
-          },
-          {
-            "ident": "TupleStruct",
-            "fields": [
-              {
-                "item": "PatTupleStruct"
-              }
-            ]
-          },
-          {
-            "ident": "Path",
-            "fields": [
-              {
-                "item": "PatPath"
-              }
-            ]
-          },
-          {
-            "ident": "Tuple",
-            "fields": [
-              {
-                "item": "PatTuple"
-              }
-            ]
-          },
-          {
-            "ident": "Box",
-            "fields": [
-              {
-                "item": "PatBox"
-              }
-            ]
-          },
-          {
-            "ident": "Ref",
-            "fields": [
-              {
-                "item": "PatRef"
-              }
-            ]
-          },
-          {
-            "ident": "Lit",
-            "fields": [
-              {
-                "item": "PatLit"
-              }
-            ]
-          },
-          {
-            "ident": "Range",
-            "fields": [
-              {
-                "item": "PatRange"
-              }
-            ]
-          },
-          {
-            "ident": "Slice",
-            "fields": [
-              {
-                "item": "PatSlice"
-              }
-            ]
-          },
-          {
-            "ident": "Macro",
-            "fields": [
-              {
-                "item": "PatMacro"
-              }
-            ]
-          },
-          {
-            "ident": "Verbatim",
-            "fields": [
-              {
-                "item": "PatVerbatim"
-              }
-            ]
-          }
+      "node": "struct",
+      "ident": "ForeignItemStatic",
+      "features": {
+        "any": [
+          "full"
         ]
-      }
-    },
-    {
-      "struct": {
-        "ident": "PatBox",
-        "features": {
-          "any": [
-            "full"
-          ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
         },
-        "fields": [
-          {
-            "ident": "box_token",
-            "ty": {
+        {
+          "ident": "vis",
+          "type": {
+            "item": "Visibility"
+          }
+        },
+        {
+          "ident": "static_token",
+          "type": {
+            "token": {
+              "repr": "static",
+              "type": "Static"
+            }
+          }
+        },
+        {
+          "ident": "mutability",
+          "type": {
+            "option": {
               "token": {
-                "repr": "box",
-                "ty": "Box"
-              }
-            }
-          },
-          {
-            "ident": "pat",
-            "ty": {
-              "box": {
-                "item": "Pat"
+                "repr": "mut",
+                "type": "Mut"
               }
             }
           }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "PatIdent",
-        "features": {
-          "any": [
-            "full"
-          ]
         },
-        "fields": [
-          {
-            "ident": "by_ref",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": "ref",
-                  "ty": "Ref"
-                }
-              }
-            }
-          },
-          {
-            "ident": "mutability",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": "mut",
-                  "ty": "Mut"
-                }
-              }
-            }
-          },
-          {
-            "ident": "ident",
-            "ty": {
-              "item": "Ident"
-            }
-          },
-          {
-            "ident": "subpat",
-            "ty": {
-              "option": {
-                "tuple": [
-                  {
-                    "token": {
-                      "repr": "@",
-                      "ty": "At"
-                    }
-                  },
-                  {
-                    "box": {
-                      "item": "Pat"
-                    }
-                  }
-                ]
-              }
+        {
+          "ident": "ident",
+          "type": {
+            "item": "Ident"
+          }
+        },
+        {
+          "ident": "colon_token",
+          "type": {
+            "token": {
+              "repr": ":",
+              "type": "Colon"
             }
           }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "PatLit",
-        "features": {
-          "any": [
-            "full"
-          ]
         },
-        "fields": [
-          {
-            "ident": "expr",
-            "ty": {
-              "box": {
-                "item": "Expr"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "PatMacro",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "mac",
-            "ty": {
-              "item": "Macro"
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "PatPath",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "qself",
-            "ty": {
-              "option": {
-                "item": "QSelf"
-              }
-            }
-          },
-          {
-            "ident": "path",
-            "ty": {
-              "item": "Path"
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "PatRange",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "lo",
-            "ty": {
-              "box": {
-                "item": "Expr"
-              }
-            }
-          },
-          {
-            "ident": "limits",
-            "ty": {
-              "item": "RangeLimits"
-            }
-          },
-          {
-            "ident": "hi",
-            "ty": {
-              "box": {
-                "item": "Expr"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "PatRef",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "and_token",
-            "ty": {
-              "token": {
-                "repr": "&",
-                "ty": "And"
-              }
-            }
-          },
-          {
-            "ident": "mutability",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": "mut",
-                  "ty": "Mut"
-                }
-              }
-            }
-          },
-          {
-            "ident": "pat",
-            "ty": {
-              "box": {
-                "item": "Pat"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "PatSlice",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "bracket_token",
-            "ty": {
-              "token_group": "Bracket"
-            }
-          },
-          {
-            "ident": "front",
-            "ty": {
-              "punctuated": [
-                {
-                  "item": "Pat"
-                },
-                {
-                  "repr": ",",
-                  "ty": "Comma"
-                }
-              ]
-            }
-          },
-          {
-            "ident": "middle",
-            "ty": {
-              "option": {
-                "box": {
-                  "item": "Pat"
-                }
-              }
-            }
-          },
-          {
-            "ident": "dot2_token",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": "..",
-                  "ty": "Dot2"
-                }
-              }
-            }
-          },
-          {
-            "ident": "comma_token",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": ",",
-                  "ty": "Comma"
-                }
-              }
-            }
-          },
-          {
-            "ident": "back",
-            "ty": {
-              "punctuated": [
-                {
-                  "item": "Pat"
-                },
-                {
-                  "repr": ",",
-                  "ty": "Comma"
-                }
-              ]
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "PatStruct",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "path",
-            "ty": {
-              "item": "Path"
-            }
-          },
-          {
-            "ident": "brace_token",
-            "ty": {
-              "token_group": "Brace"
-            }
-          },
-          {
-            "ident": "fields",
-            "ty": {
-              "punctuated": [
-                {
-                  "item": "FieldPat"
-                },
-                {
-                  "repr": ",",
-                  "ty": "Comma"
-                }
-              ]
-            }
-          },
-          {
-            "ident": "dot2_token",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": "..",
-                  "ty": "Dot2"
-                }
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "PatTuple",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "paren_token",
-            "ty": {
-              "token_group": "Paren"
-            }
-          },
-          {
-            "ident": "front",
-            "ty": {
-              "punctuated": [
-                {
-                  "item": "Pat"
-                },
-                {
-                  "repr": ",",
-                  "ty": "Comma"
-                }
-              ]
-            }
-          },
-          {
-            "ident": "dot2_token",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": "..",
-                  "ty": "Dot2"
-                }
-              }
-            }
-          },
-          {
-            "ident": "comma_token",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": ",",
-                  "ty": "Comma"
-                }
-              }
-            }
-          },
-          {
-            "ident": "back",
-            "ty": {
-              "punctuated": [
-                {
-                  "item": "Pat"
-                },
-                {
-                  "repr": ",",
-                  "ty": "Comma"
-                }
-              ]
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "PatTupleStruct",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "path",
-            "ty": {
-              "item": "Path"
-            }
-          },
-          {
-            "ident": "pat",
-            "ty": {
-              "item": "PatTuple"
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "PatVerbatim",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "tts",
-            "ty": {
-              "ext": "TokenStream"
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "PatWild",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "underscore_token",
-            "ty": {
-              "token": {
-                "repr": "_",
-                "ty": "Underscore"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "Path",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "leading_colon",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": "::",
-                  "ty": "Colon2"
-                }
-              }
-            }
-          },
-          {
-            "ident": "segments",
-            "ty": {
-              "punctuated": [
-                {
-                  "item": "PathSegment"
-                },
-                {
-                  "repr": "::",
-                  "ty": "Colon2"
-                }
-              ]
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "enum": {
-        "ident": "PathArguments",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "variants": [
-          {
-            "ident": "None",
-            "fields": []
-          },
-          {
-            "ident": "AngleBracketed",
-            "fields": [
-              {
-                "item": "AngleBracketedGenericArguments"
-              }
-            ]
-          },
-          {
-            "ident": "Parenthesized",
-            "fields": [
-              {
-                "item": "ParenthesizedGenericArguments"
-              }
-            ]
-          }
-        ]
-      }
-    },
-    {
-      "struct": {
-        "ident": "PathSegment",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "ident",
-            "ty": {
-              "item": "Ident"
-            }
-          },
-          {
-            "ident": "arguments",
-            "ty": {
-              "item": "PathArguments"
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "PredicateEq",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "lhs_ty",
-            "ty": {
-              "item": "Type"
-            }
-          },
-          {
-            "ident": "eq_token",
-            "ty": {
-              "token": {
-                "repr": "=",
-                "ty": "Eq"
-              }
-            }
-          },
-          {
-            "ident": "rhs_ty",
-            "ty": {
+        {
+          "ident": "ty",
+          "type": {
+            "box": {
               "item": "Type"
             }
           }
-        ],
-        "all_fields_pub": true
-      }
+        },
+        {
+          "ident": "semi_token",
+          "type": {
+            "token": {
+              "repr": ";",
+              "type": "Semi"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
     },
     {
-      "struct": {
-        "ident": "PredicateLifetime",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
+      "node": "struct",
+      "ident": "ForeignItemType",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
         },
-        "fields": [
-          {
-            "ident": "lifetime",
-            "ty": {
+        {
+          "ident": "vis",
+          "type": {
+            "item": "Visibility"
+          }
+        },
+        {
+          "ident": "type_token",
+          "type": {
+            "token": {
+              "repr": "type",
+              "type": "Type"
+            }
+          }
+        },
+        {
+          "ident": "ident",
+          "type": {
+            "item": "Ident"
+          }
+        },
+        {
+          "ident": "semi_token",
+          "type": {
+            "token": {
+              "repr": ";",
+              "type": "Semi"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ForeignItemVerbatim",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "tts",
+          "type": {
+            "ext": "TokenStream"
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "enum",
+      "ident": "GenericArgument",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "variants": [
+        {
+          "ident": "Lifetime",
+          "fields": [
+            {
               "item": "Lifetime"
             }
-          },
-          {
-            "ident": "colon_token",
-            "ty": {
-              "token": {
-                "repr": ":",
-                "ty": "Colon"
-              }
-            }
-          },
-          {
-            "ident": "bounds",
-            "ty": {
-              "punctuated": [
-                {
-                  "item": "Lifetime"
-                },
-                {
-                  "repr": "+",
-                  "ty": "Add"
-                }
-              ]
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "PredicateType",
-        "features": {
-          "any": [
-            "full",
-            "derive"
           ]
         },
-        "fields": [
-          {
-            "ident": "lifetimes",
-            "ty": {
-              "option": {
-                "item": "BoundLifetimes"
-              }
-            }
-          },
-          {
-            "ident": "bounded_ty",
-            "ty": {
+        {
+          "ident": "Type",
+          "fields": [
+            {
               "item": "Type"
             }
-          },
-          {
-            "ident": "colon_token",
-            "ty": {
-              "token": {
-                "repr": ":",
-                "ty": "Colon"
-              }
-            }
-          },
-          {
-            "ident": "bounds",
-            "ty": {
-              "punctuated": [
-                {
-                  "item": "TypeParamBound"
-                },
-                {
-                  "repr": "+",
-                  "ty": "Add"
-                }
-              ]
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "QSelf",
-        "features": {
-          "any": [
-            "full",
-            "derive"
           ]
         },
-        "fields": [
-          {
-            "ident": "lt_token",
-            "ty": {
+        {
+          "ident": "Binding",
+          "fields": [
+            {
+              "item": "Binding"
+            }
+          ]
+        },
+        {
+          "ident": "Constraint",
+          "fields": [
+            {
+              "item": "Constraint"
+            }
+          ]
+        },
+        {
+          "ident": "Const",
+          "fields": [
+            {
+              "item": "Expr"
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "node": "enum",
+      "ident": "GenericMethodArgument",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "variants": [
+        {
+          "ident": "Type",
+          "fields": [
+            {
+              "item": "Type"
+            }
+          ]
+        },
+        {
+          "ident": "Const",
+          "fields": [
+            {
+              "item": "Expr"
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "node": "enum",
+      "ident": "GenericParam",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "variants": [
+        {
+          "ident": "Type",
+          "fields": [
+            {
+              "item": "TypeParam"
+            }
+          ]
+        },
+        {
+          "ident": "Lifetime",
+          "fields": [
+            {
+              "item": "LifetimeDef"
+            }
+          ]
+        },
+        {
+          "ident": "Const",
+          "fields": [
+            {
+              "item": "ConstParam"
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "node": "struct",
+      "ident": "Generics",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "lt_token",
+          "type": {
+            "option": {
               "token": {
                 "repr": "<",
-                "ty": "Lt"
+                "type": "Lt"
               }
             }
-          },
-          {
-            "ident": "ty",
-            "ty": {
-              "box": {
-                "item": "Type"
+          }
+        },
+        {
+          "ident": "params",
+          "type": {
+            "punctuated": {
+              "element": {
+                "item": "GenericParam"
+              },
+              "punct": {
+                "repr": ",",
+                "type": "Comma"
               }
             }
-          },
-          {
-            "ident": "position",
-            "ty": {
-              "std": "usize"
-            }
-          },
-          {
-            "ident": "as_token",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": "as",
-                  "ty": "As"
-                }
-              }
-            }
-          },
-          {
-            "ident": "gt_token",
-            "ty": {
+          }
+        },
+        {
+          "ident": "gt_token",
+          "type": {
+            "option": {
               "token": {
                 "repr": ">",
-                "ty": "Gt"
+                "type": "Gt"
               }
             }
           }
-        ],
-        "all_fields_pub": true
-      }
+        },
+        {
+          "ident": "where_clause",
+          "type": {
+            "option": {
+              "item": "WhereClause"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
     },
     {
-      "enum": {
-        "ident": "RangeLimits",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "variants": [
-          {
-            "ident": "HalfOpen",
-            "fields": [
-              {
-                "token": {
-                  "repr": "..",
-                  "ty": "Dot2"
-                }
-              }
-            ]
-          },
-          {
-            "ident": "Closed",
-            "fields": [
-              {
-                "token": {
-                  "repr": "..=",
-                  "ty": "DotDotEq"
-                }
-              }
-            ]
-          }
+      "node": "struct",
+      "ident": "Ident",
+      "features": {
+        "any": []
+      },
+      "fields": [],
+      "all_fields_pub": true
+    },
+    {
+      "node": "enum",
+      "ident": "ImplItem",
+      "features": {
+        "any": [
+          "full"
         ]
-      }
-    },
-    {
-      "enum": {
-        "ident": "ReturnType",
-        "features": {
-          "any": [
-            "full",
-            "derive"
+      },
+      "variants": [
+        {
+          "ident": "Const",
+          "fields": [
+            {
+              "item": "ImplItemConst"
+            }
           ]
         },
-        "variants": [
-          {
-            "ident": "Default",
-            "fields": []
-          },
-          {
-            "ident": "Type",
-            "fields": [
-              {
-                "token": {
-                  "repr": "->",
-                  "ty": "RArrow"
-                }
-              },
-              {
-                "box": {
-                  "item": "Type"
-                }
-              }
-            ]
-          }
+        {
+          "ident": "Method",
+          "fields": [
+            {
+              "item": "ImplItemMethod"
+            }
+          ]
+        },
+        {
+          "ident": "Type",
+          "fields": [
+            {
+              "item": "ImplItemType"
+            }
+          ]
+        },
+        {
+          "ident": "Existential",
+          "fields": [
+            {
+              "item": "ImplItemExistential"
+            }
+          ]
+        },
+        {
+          "ident": "Macro",
+          "fields": [
+            {
+              "item": "ImplItemMacro"
+            }
+          ]
+        },
+        {
+          "ident": "Verbatim",
+          "fields": [
+            {
+              "item": "ImplItemVerbatim"
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "node": "struct",
+      "ident": "ImplItemConst",
+      "features": {
+        "any": [
+          "full"
         ]
-      }
-    },
-    {
-      "struct": {
-        "ident": "Span",
-        "features": {
-          "any": []
-        },
-        "fields": [],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "enum": {
-        "ident": "Stmt",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "variants": [
-          {
-            "ident": "Local",
-            "fields": [
-              {
-                "item": "Local"
-              }
-            ]
-          },
-          {
-            "ident": "Item",
-            "fields": [
-              {
-                "item": "Item"
-              }
-            ]
-          },
-          {
-            "ident": "Expr",
-            "fields": [
-              {
-                "item": "Expr"
-              }
-            ]
-          },
-          {
-            "ident": "Semi",
-            "fields": [
-              {
-                "item": "Expr"
-              },
-              {
-                "token": {
-                  "repr": ";",
-                  "ty": "Semi"
-                }
-              }
-            ]
-          }
-        ]
-      }
-    },
-    {
-      "struct": {
-        "ident": "TraitBound",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "paren_token",
-            "ty": {
-              "option": {
-                "token_group": "Paren"
-              }
-            }
-          },
-          {
-            "ident": "modifier",
-            "ty": {
-              "item": "TraitBoundModifier"
-            }
-          },
-          {
-            "ident": "lifetimes",
-            "ty": {
-              "option": {
-                "item": "BoundLifetimes"
-              }
-            }
-          },
-          {
-            "ident": "path",
-            "ty": {
-              "item": "Path"
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
             }
           }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "enum": {
-        "ident": "TraitBoundModifier",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
         },
-        "variants": [
-          {
-            "ident": "None",
-            "fields": []
-          },
-          {
-            "ident": "Maybe",
-            "fields": [
-              {
-                "token": {
-                  "repr": "?",
-                  "ty": "Question"
-                }
-              }
-            ]
+        {
+          "ident": "vis",
+          "type": {
+            "item": "Visibility"
           }
-        ]
-      }
-    },
-    {
-      "enum": {
-        "ident": "TraitItem",
-        "features": {
-          "any": [
-            "full"
-          ]
         },
-        "variants": [
-          {
-            "ident": "Const",
-            "fields": [
-              {
-                "item": "TraitItemConst"
-              }
-            ]
-          },
-          {
-            "ident": "Method",
-            "fields": [
-              {
-                "item": "TraitItemMethod"
-              }
-            ]
-          },
-          {
-            "ident": "Type",
-            "fields": [
-              {
-                "item": "TraitItemType"
-              }
-            ]
-          },
-          {
-            "ident": "Macro",
-            "fields": [
-              {
-                "item": "TraitItemMacro"
-              }
-            ]
-          },
-          {
-            "ident": "Verbatim",
-            "fields": [
-              {
-                "item": "TraitItemVerbatim"
-              }
-            ]
-          }
-        ]
-      }
-    },
-    {
-      "struct": {
-        "ident": "TraitItemConst",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "const_token",
-            "ty": {
+        {
+          "ident": "defaultness",
+          "type": {
+            "option": {
               "token": {
-                "repr": "const",
-                "ty": "Const"
+                "repr": "default",
+                "type": "Default"
               }
             }
-          },
-          {
-            "ident": "ident",
-            "ty": {
-              "item": "Ident"
+          }
+        },
+        {
+          "ident": "const_token",
+          "type": {
+            "token": {
+              "repr": "const",
+              "type": "Const"
             }
-          },
-          {
-            "ident": "colon_token",
-            "ty": {
+          }
+        },
+        {
+          "ident": "ident",
+          "type": {
+            "item": "Ident"
+          }
+        },
+        {
+          "ident": "colon_token",
+          "type": {
+            "token": {
+              "repr": ":",
+              "type": "Colon"
+            }
+          }
+        },
+        {
+          "ident": "ty",
+          "type": {
+            "item": "Type"
+          }
+        },
+        {
+          "ident": "eq_token",
+          "type": {
+            "token": {
+              "repr": "=",
+              "type": "Eq"
+            }
+          }
+        },
+        {
+          "ident": "expr",
+          "type": {
+            "item": "Expr"
+          }
+        },
+        {
+          "ident": "semi_token",
+          "type": {
+            "token": {
+              "repr": ";",
+              "type": "Semi"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ImplItemExistential",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "existential_token",
+          "type": {
+            "token": {
+              "repr": "existential",
+              "type": "Existential"
+            }
+          }
+        },
+        {
+          "ident": "type_token",
+          "type": {
+            "token": {
+              "repr": "type",
+              "type": "Type"
+            }
+          }
+        },
+        {
+          "ident": "ident",
+          "type": {
+            "item": "Ident"
+          }
+        },
+        {
+          "ident": "generics",
+          "type": {
+            "item": "Generics"
+          }
+        },
+        {
+          "ident": "colon_token",
+          "type": {
+            "option": {
               "token": {
                 "repr": ":",
-                "ty": "Colon"
+                "type": "Colon"
               }
             }
-          },
-          {
-            "ident": "ty",
-            "ty": {
+          }
+        },
+        {
+          "ident": "bounds",
+          "type": {
+            "punctuated": {
+              "element": {
+                "item": "TypeParamBound"
+              },
+              "punct": {
+                "repr": "+",
+                "type": "Add"
+              }
+            }
+          }
+        },
+        {
+          "ident": "semi_token",
+          "type": {
+            "token": {
+              "repr": ";",
+              "type": "Semi"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ImplItemMacro",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "mac",
+          "type": {
+            "item": "Macro"
+          }
+        },
+        {
+          "ident": "semi_token",
+          "type": {
+            "option": {
+              "token": {
+                "repr": ";",
+                "type": "Semi"
+              }
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ImplItemMethod",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "vis",
+          "type": {
+            "item": "Visibility"
+          }
+        },
+        {
+          "ident": "defaultness",
+          "type": {
+            "option": {
+              "token": {
+                "repr": "default",
+                "type": "Default"
+              }
+            }
+          }
+        },
+        {
+          "ident": "sig",
+          "type": {
+            "item": "MethodSig"
+          }
+        },
+        {
+          "ident": "block",
+          "type": {
+            "item": "Block"
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ImplItemType",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "vis",
+          "type": {
+            "item": "Visibility"
+          }
+        },
+        {
+          "ident": "defaultness",
+          "type": {
+            "option": {
+              "token": {
+                "repr": "default",
+                "type": "Default"
+              }
+            }
+          }
+        },
+        {
+          "ident": "type_token",
+          "type": {
+            "token": {
+              "repr": "type",
+              "type": "Type"
+            }
+          }
+        },
+        {
+          "ident": "ident",
+          "type": {
+            "item": "Ident"
+          }
+        },
+        {
+          "ident": "generics",
+          "type": {
+            "item": "Generics"
+          }
+        },
+        {
+          "ident": "eq_token",
+          "type": {
+            "token": {
+              "repr": "=",
+              "type": "Eq"
+            }
+          }
+        },
+        {
+          "ident": "ty",
+          "type": {
+            "item": "Type"
+          }
+        },
+        {
+          "ident": "semi_token",
+          "type": {
+            "token": {
+              "repr": ";",
+              "type": "Semi"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ImplItemVerbatim",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "tts",
+          "type": {
+            "ext": "TokenStream"
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "Index",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "index",
+          "type": {
+            "std": "u32"
+          }
+        },
+        {
+          "ident": "span",
+          "type": {
+            "item": "Span"
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "enum",
+      "ident": "Item",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "variants": [
+        {
+          "ident": "ExternCrate",
+          "fields": [
+            {
+              "item": "ItemExternCrate"
+            }
+          ]
+        },
+        {
+          "ident": "Use",
+          "fields": [
+            {
+              "item": "ItemUse"
+            }
+          ]
+        },
+        {
+          "ident": "Static",
+          "fields": [
+            {
+              "item": "ItemStatic"
+            }
+          ]
+        },
+        {
+          "ident": "Const",
+          "fields": [
+            {
+              "item": "ItemConst"
+            }
+          ]
+        },
+        {
+          "ident": "Fn",
+          "fields": [
+            {
+              "item": "ItemFn"
+            }
+          ]
+        },
+        {
+          "ident": "Mod",
+          "fields": [
+            {
+              "item": "ItemMod"
+            }
+          ]
+        },
+        {
+          "ident": "ForeignMod",
+          "fields": [
+            {
+              "item": "ItemForeignMod"
+            }
+          ]
+        },
+        {
+          "ident": "Type",
+          "fields": [
+            {
+              "item": "ItemType"
+            }
+          ]
+        },
+        {
+          "ident": "Existential",
+          "fields": [
+            {
+              "item": "ItemExistential"
+            }
+          ]
+        },
+        {
+          "ident": "Struct",
+          "fields": [
+            {
+              "item": "ItemStruct"
+            }
+          ]
+        },
+        {
+          "ident": "Enum",
+          "fields": [
+            {
+              "item": "ItemEnum"
+            }
+          ]
+        },
+        {
+          "ident": "Union",
+          "fields": [
+            {
+              "item": "ItemUnion"
+            }
+          ]
+        },
+        {
+          "ident": "Trait",
+          "fields": [
+            {
+              "item": "ItemTrait"
+            }
+          ]
+        },
+        {
+          "ident": "TraitAlias",
+          "fields": [
+            {
+              "item": "ItemTraitAlias"
+            }
+          ]
+        },
+        {
+          "ident": "Impl",
+          "fields": [
+            {
+              "item": "ItemImpl"
+            }
+          ]
+        },
+        {
+          "ident": "Macro",
+          "fields": [
+            {
+              "item": "ItemMacro"
+            }
+          ]
+        },
+        {
+          "ident": "Macro2",
+          "fields": [
+            {
+              "item": "ItemMacro2"
+            }
+          ]
+        },
+        {
+          "ident": "Verbatim",
+          "fields": [
+            {
+              "item": "ItemVerbatim"
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "node": "struct",
+      "ident": "ItemConst",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "vis",
+          "type": {
+            "item": "Visibility"
+          }
+        },
+        {
+          "ident": "const_token",
+          "type": {
+            "token": {
+              "repr": "const",
+              "type": "Const"
+            }
+          }
+        },
+        {
+          "ident": "ident",
+          "type": {
+            "item": "Ident"
+          }
+        },
+        {
+          "ident": "colon_token",
+          "type": {
+            "token": {
+              "repr": ":",
+              "type": "Colon"
+            }
+          }
+        },
+        {
+          "ident": "ty",
+          "type": {
+            "box": {
               "item": "Type"
             }
-          },
-          {
-            "ident": "default",
-            "ty": {
-              "option": {
-                "tuple": [
-                  {
-                    "token": {
-                      "repr": "=",
-                      "ty": "Eq"
-                    }
-                  },
-                  {
-                    "item": "Expr"
-                  }
-                ]
-              }
-            }
-          },
-          {
-            "ident": "semi_token",
-            "ty": {
-              "token": {
-                "repr": ";",
-                "ty": "Semi"
-              }
+          }
+        },
+        {
+          "ident": "eq_token",
+          "type": {
+            "token": {
+              "repr": "=",
+              "type": "Eq"
             }
           }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "TraitItemMacro",
-        "features": {
-          "any": [
-            "full"
-          ]
         },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "mac",
-            "ty": {
-              "item": "Macro"
-            }
-          },
-          {
-            "ident": "semi_token",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": ";",
-                  "ty": "Semi"
-                }
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "TraitItemMethod",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "sig",
-            "ty": {
-              "item": "MethodSig"
-            }
-          },
-          {
-            "ident": "default",
-            "ty": {
-              "option": {
-                "item": "Block"
-              }
-            }
-          },
-          {
-            "ident": "semi_token",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": ";",
-                  "ty": "Semi"
-                }
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "TraitItemType",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "type_token",
-            "ty": {
-              "token": {
-                "repr": "type",
-                "ty": "Type"
-              }
-            }
-          },
-          {
-            "ident": "ident",
-            "ty": {
-              "item": "Ident"
-            }
-          },
-          {
-            "ident": "generics",
-            "ty": {
-              "item": "Generics"
-            }
-          },
-          {
-            "ident": "colon_token",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": ":",
-                  "ty": "Colon"
-                }
-              }
-            }
-          },
-          {
-            "ident": "bounds",
-            "ty": {
-              "punctuated": [
-                {
-                  "item": "TypeParamBound"
-                },
-                {
-                  "repr": "+",
-                  "ty": "Add"
-                }
-              ]
-            }
-          },
-          {
-            "ident": "default",
-            "ty": {
-              "option": {
-                "tuple": [
-                  {
-                    "token": {
-                      "repr": "=",
-                      "ty": "Eq"
-                    }
-                  },
-                  {
-                    "item": "Type"
-                  }
-                ]
-              }
-            }
-          },
-          {
-            "ident": "semi_token",
-            "ty": {
-              "token": {
-                "repr": ";",
-                "ty": "Semi"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "TraitItemVerbatim",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "tts",
-            "ty": {
-              "ext": "TokenStream"
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "enum": {
-        "ident": "Type",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "variants": [
-          {
-            "ident": "Slice",
-            "fields": [
-              {
-                "item": "TypeSlice"
-              }
-            ]
-          },
-          {
-            "ident": "Array",
-            "fields": [
-              {
-                "item": "TypeArray"
-              }
-            ]
-          },
-          {
-            "ident": "Ptr",
-            "fields": [
-              {
-                "item": "TypePtr"
-              }
-            ]
-          },
-          {
-            "ident": "Reference",
-            "fields": [
-              {
-                "item": "TypeReference"
-              }
-            ]
-          },
-          {
-            "ident": "BareFn",
-            "fields": [
-              {
-                "item": "TypeBareFn"
-              }
-            ]
-          },
-          {
-            "ident": "Never",
-            "fields": [
-              {
-                "item": "TypeNever"
-              }
-            ]
-          },
-          {
-            "ident": "Tuple",
-            "fields": [
-              {
-                "item": "TypeTuple"
-              }
-            ]
-          },
-          {
-            "ident": "Path",
-            "fields": [
-              {
-                "item": "TypePath"
-              }
-            ]
-          },
-          {
-            "ident": "TraitObject",
-            "fields": [
-              {
-                "item": "TypeTraitObject"
-              }
-            ]
-          },
-          {
-            "ident": "ImplTrait",
-            "fields": [
-              {
-                "item": "TypeImplTrait"
-              }
-            ]
-          },
-          {
-            "ident": "Paren",
-            "fields": [
-              {
-                "item": "TypeParen"
-              }
-            ]
-          },
-          {
-            "ident": "Group",
-            "fields": [
-              {
-                "item": "TypeGroup"
-              }
-            ]
-          },
-          {
-            "ident": "Infer",
-            "fields": [
-              {
-                "item": "TypeInfer"
-              }
-            ]
-          },
-          {
-            "ident": "Macro",
-            "fields": [
-              {
-                "item": "TypeMacro"
-              }
-            ]
-          },
-          {
-            "ident": "Verbatim",
-            "fields": [
-              {
-                "item": "TypeVerbatim"
-              }
-            ]
-          }
-        ]
-      }
-    },
-    {
-      "struct": {
-        "ident": "TypeArray",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "bracket_token",
-            "ty": {
-              "token_group": "Bracket"
-            }
-          },
-          {
-            "ident": "elem",
-            "ty": {
-              "box": {
-                "item": "Type"
-              }
-            }
-          },
-          {
-            "ident": "semi_token",
-            "ty": {
-              "token": {
-                "repr": ";",
-                "ty": "Semi"
-              }
-            }
-          },
-          {
-            "ident": "len",
-            "ty": {
+        {
+          "ident": "expr",
+          "type": {
+            "box": {
               "item": "Expr"
             }
           }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "TypeBareFn",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
         },
-        "fields": [
-          {
-            "ident": "lifetimes",
-            "ty": {
-              "option": {
-                "item": "BoundLifetimes"
-              }
-            }
-          },
-          {
-            "ident": "unsafety",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": "unsafe",
-                  "ty": "Unsafe"
-                }
-              }
-            }
-          },
-          {
-            "ident": "abi",
-            "ty": {
-              "option": {
-                "item": "Abi"
-              }
-            }
-          },
-          {
-            "ident": "fn_token",
-            "ty": {
-              "token": {
-                "repr": "fn",
-                "ty": "Fn"
-              }
-            }
-          },
-          {
-            "ident": "paren_token",
-            "ty": {
-              "token_group": "Paren"
-            }
-          },
-          {
-            "ident": "inputs",
-            "ty": {
-              "punctuated": [
-                {
-                  "item": "BareFnArg"
-                },
-                {
-                  "repr": ",",
-                  "ty": "Comma"
-                }
-              ]
-            }
-          },
-          {
-            "ident": "variadic",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": "...",
-                  "ty": "Dot3"
-                }
-              }
-            }
-          },
-          {
-            "ident": "output",
-            "ty": {
-              "item": "ReturnType"
+        {
+          "ident": "semi_token",
+          "type": {
+            "token": {
+              "repr": ";",
+              "type": "Semi"
             }
           }
-        ],
-        "all_fields_pub": true
-      }
+        }
+      ],
+      "all_fields_pub": true
     },
     {
-      "struct": {
-        "ident": "TypeGroup",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "group_token",
-            "ty": {
-              "token_group": "Group"
+      "node": "struct",
+      "ident": "ItemEnum",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
             }
-          },
-          {
-            "ident": "elem",
-            "ty": {
-              "box": {
-                "item": "Type"
+          }
+        },
+        {
+          "ident": "vis",
+          "type": {
+            "item": "Visibility"
+          }
+        },
+        {
+          "ident": "enum_token",
+          "type": {
+            "token": {
+              "repr": "enum",
+              "type": "Enum"
+            }
+          }
+        },
+        {
+          "ident": "ident",
+          "type": {
+            "item": "Ident"
+          }
+        },
+        {
+          "ident": "generics",
+          "type": {
+            "item": "Generics"
+          }
+        },
+        {
+          "ident": "brace_token",
+          "type": {
+            "group": "Brace"
+          }
+        },
+        {
+          "ident": "variants",
+          "type": {
+            "punctuated": {
+              "element": {
+                "item": "Variant"
+              },
+              "punct": {
+                "repr": ",",
+                "type": "Comma"
               }
             }
           }
-        ],
-        "all_fields_pub": true
-      }
+        }
+      ],
+      "all_fields_pub": true
     },
     {
-      "struct": {
-        "ident": "TypeImplTrait",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
+      "node": "struct",
+      "ident": "ItemExistential",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
         },
-        "fields": [
-          {
-            "ident": "impl_token",
-            "ty": {
+        {
+          "ident": "vis",
+          "type": {
+            "item": "Visibility"
+          }
+        },
+        {
+          "ident": "existential_token",
+          "type": {
+            "token": {
+              "repr": "existential",
+              "type": "Existential"
+            }
+          }
+        },
+        {
+          "ident": "type_token",
+          "type": {
+            "token": {
+              "repr": "type",
+              "type": "Type"
+            }
+          }
+        },
+        {
+          "ident": "ident",
+          "type": {
+            "item": "Ident"
+          }
+        },
+        {
+          "ident": "generics",
+          "type": {
+            "item": "Generics"
+          }
+        },
+        {
+          "ident": "colon_token",
+          "type": {
+            "option": {
               "token": {
-                "repr": "impl",
-                "ty": "Impl"
+                "repr": ":",
+                "type": "Colon"
               }
             }
-          },
-          {
-            "ident": "bounds",
-            "ty": {
-              "punctuated": [
+          }
+        },
+        {
+          "ident": "bounds",
+          "type": {
+            "punctuated": {
+              "element": {
+                "item": "TypeParamBound"
+              },
+              "punct": {
+                "repr": "+",
+                "type": "Add"
+              }
+            }
+          }
+        },
+        {
+          "ident": "semi_token",
+          "type": {
+            "token": {
+              "repr": ";",
+              "type": "Semi"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ItemExternCrate",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "vis",
+          "type": {
+            "item": "Visibility"
+          }
+        },
+        {
+          "ident": "extern_token",
+          "type": {
+            "token": {
+              "repr": "extern",
+              "type": "Extern"
+            }
+          }
+        },
+        {
+          "ident": "crate_token",
+          "type": {
+            "token": {
+              "repr": "crate",
+              "type": "Crate"
+            }
+          }
+        },
+        {
+          "ident": "ident",
+          "type": {
+            "item": "Ident"
+          }
+        },
+        {
+          "ident": "rename",
+          "type": {
+            "option": {
+              "tuple": [
                 {
-                  "item": "TypeParamBound"
+                  "token": {
+                    "repr": "as",
+                    "type": "As"
+                  }
                 },
                 {
-                  "repr": "+",
-                  "ty": "Add"
+                  "item": "Ident"
                 }
               ]
             }
           }
-        ],
-        "all_fields_pub": true
-      }
+        },
+        {
+          "ident": "semi_token",
+          "type": {
+            "token": {
+              "repr": ";",
+              "type": "Semi"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
     },
     {
-      "struct": {
-        "ident": "TypeInfer",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
+      "node": "struct",
+      "ident": "ItemFn",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
         },
-        "fields": [
-          {
-            "ident": "underscore_token",
-            "ty": {
+        {
+          "ident": "vis",
+          "type": {
+            "item": "Visibility"
+          }
+        },
+        {
+          "ident": "constness",
+          "type": {
+            "option": {
               "token": {
-                "repr": "_",
-                "ty": "Underscore"
+                "repr": "const",
+                "type": "Const"
               }
             }
           }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "TypeMacro",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
         },
-        "fields": [
-          {
-            "ident": "mac",
-            "ty": {
-              "item": "Macro"
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "TypeNever",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "bang_token",
-            "ty": {
+        {
+          "ident": "unsafety",
+          "type": {
+            "option": {
               "token": {
-                "repr": "!",
-                "ty": "Bang"
+                "repr": "unsafe",
+                "type": "Unsafe"
               }
             }
           }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "TypeParam",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
         },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
+        {
+          "ident": "asyncness",
+          "type": {
+            "option": {
+              "token": {
+                "repr": "async",
+                "type": "Async"
               }
             }
-          },
-          {
-            "ident": "ident",
-            "ty": {
+          }
+        },
+        {
+          "ident": "abi",
+          "type": {
+            "option": {
+              "item": "Abi"
+            }
+          }
+        },
+        {
+          "ident": "ident",
+          "type": {
+            "item": "Ident"
+          }
+        },
+        {
+          "ident": "decl",
+          "type": {
+            "box": {
+              "item": "FnDecl"
+            }
+          }
+        },
+        {
+          "ident": "block",
+          "type": {
+            "box": {
+              "item": "Block"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ItemForeignMod",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "abi",
+          "type": {
+            "item": "Abi"
+          }
+        },
+        {
+          "ident": "brace_token",
+          "type": {
+            "group": "Brace"
+          }
+        },
+        {
+          "ident": "items",
+          "type": {
+            "vec": {
+              "item": "ForeignItem"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ItemImpl",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "defaultness",
+          "type": {
+            "option": {
+              "token": {
+                "repr": "default",
+                "type": "Default"
+              }
+            }
+          }
+        },
+        {
+          "ident": "unsafety",
+          "type": {
+            "option": {
+              "token": {
+                "repr": "unsafe",
+                "type": "Unsafe"
+              }
+            }
+          }
+        },
+        {
+          "ident": "impl_token",
+          "type": {
+            "token": {
+              "repr": "impl",
+              "type": "Impl"
+            }
+          }
+        },
+        {
+          "ident": "generics",
+          "type": {
+            "item": "Generics"
+          }
+        },
+        {
+          "ident": "trait_",
+          "type": {
+            "option": {
+              "tuple": [
+                {
+                  "option": {
+                    "token": {
+                      "repr": "!",
+                      "type": "Bang"
+                    }
+                  }
+                },
+                {
+                  "item": "Path"
+                },
+                {
+                  "token": {
+                    "repr": "for",
+                    "type": "For"
+                  }
+                }
+              ]
+            }
+          }
+        },
+        {
+          "ident": "self_ty",
+          "type": {
+            "box": {
+              "item": "Type"
+            }
+          }
+        },
+        {
+          "ident": "brace_token",
+          "type": {
+            "group": "Brace"
+          }
+        },
+        {
+          "ident": "items",
+          "type": {
+            "vec": {
+              "item": "ImplItem"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ItemMacro",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "ident",
+          "type": {
+            "option": {
               "item": "Ident"
             }
-          },
-          {
-            "ident": "colon_token",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": ":",
-                  "ty": "Colon"
-                }
+          }
+        },
+        {
+          "ident": "mac",
+          "type": {
+            "item": "Macro"
+          }
+        },
+        {
+          "ident": "semi_token",
+          "type": {
+            "option": {
+              "token": {
+                "repr": ";",
+                "type": "Semi"
               }
             }
-          },
-          {
-            "ident": "bounds",
-            "ty": {
-              "punctuated": [
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ItemMacro2",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "vis",
+          "type": {
+            "item": "Visibility"
+          }
+        },
+        {
+          "ident": "macro_token",
+          "type": {
+            "token": {
+              "repr": "macro",
+              "type": "Macro"
+            }
+          }
+        },
+        {
+          "ident": "ident",
+          "type": {
+            "item": "Ident"
+          }
+        },
+        {
+          "ident": "paren_token",
+          "type": {
+            "group": "Paren"
+          }
+        },
+        {
+          "ident": "args",
+          "type": {
+            "ext": "TokenStream"
+          }
+        },
+        {
+          "ident": "brace_token",
+          "type": {
+            "group": "Brace"
+          }
+        },
+        {
+          "ident": "body",
+          "type": {
+            "ext": "TokenStream"
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ItemMod",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "vis",
+          "type": {
+            "item": "Visibility"
+          }
+        },
+        {
+          "ident": "mod_token",
+          "type": {
+            "token": {
+              "repr": "mod",
+              "type": "Mod"
+            }
+          }
+        },
+        {
+          "ident": "ident",
+          "type": {
+            "item": "Ident"
+          }
+        },
+        {
+          "ident": "content",
+          "type": {
+            "option": {
+              "tuple": [
                 {
-                  "item": "TypeParamBound"
+                  "group": "Brace"
                 },
                 {
-                  "repr": "+",
-                  "ty": "Add"
+                  "vec": {
+                    "item": "Item"
+                  }
                 }
               ]
             }
-          },
-          {
-            "ident": "eq_token",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": "=",
-                  "ty": "Eq"
-                }
-              }
-            }
-          },
-          {
-            "ident": "default",
-            "ty": {
-              "option": {
-                "item": "Type"
+          }
+        },
+        {
+          "ident": "semi",
+          "type": {
+            "option": {
+              "token": {
+                "repr": ";",
+                "type": "Semi"
               }
             }
           }
-        ],
-        "all_fields_pub": true
-      }
+        }
+      ],
+      "all_fields_pub": true
     },
     {
-      "enum": {
-        "ident": "TypeParamBound",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "variants": [
-          {
-            "ident": "Trait",
-            "fields": [
-              {
-                "item": "TraitBound"
-              }
-            ]
-          },
-          {
-            "ident": "Lifetime",
-            "fields": [
-              {
-                "item": "Lifetime"
-              }
-            ]
-          }
+      "node": "struct",
+      "ident": "ItemStatic",
+      "features": {
+        "any": [
+          "full"
         ]
-      }
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "vis",
+          "type": {
+            "item": "Visibility"
+          }
+        },
+        {
+          "ident": "static_token",
+          "type": {
+            "token": {
+              "repr": "static",
+              "type": "Static"
+            }
+          }
+        },
+        {
+          "ident": "mutability",
+          "type": {
+            "option": {
+              "token": {
+                "repr": "mut",
+                "type": "Mut"
+              }
+            }
+          }
+        },
+        {
+          "ident": "ident",
+          "type": {
+            "item": "Ident"
+          }
+        },
+        {
+          "ident": "colon_token",
+          "type": {
+            "token": {
+              "repr": ":",
+              "type": "Colon"
+            }
+          }
+        },
+        {
+          "ident": "ty",
+          "type": {
+            "box": {
+              "item": "Type"
+            }
+          }
+        },
+        {
+          "ident": "eq_token",
+          "type": {
+            "token": {
+              "repr": "=",
+              "type": "Eq"
+            }
+          }
+        },
+        {
+          "ident": "expr",
+          "type": {
+            "box": {
+              "item": "Expr"
+            }
+          }
+        },
+        {
+          "ident": "semi_token",
+          "type": {
+            "token": {
+              "repr": ";",
+              "type": "Semi"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
     },
     {
-      "struct": {
-        "ident": "TypeParen",
-        "features": {
-          "any": [
-            "full",
-            "derive"
+      "node": "struct",
+      "ident": "ItemStruct",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "vis",
+          "type": {
+            "item": "Visibility"
+          }
+        },
+        {
+          "ident": "struct_token",
+          "type": {
+            "token": {
+              "repr": "struct",
+              "type": "Struct"
+            }
+          }
+        },
+        {
+          "ident": "ident",
+          "type": {
+            "item": "Ident"
+          }
+        },
+        {
+          "ident": "generics",
+          "type": {
+            "item": "Generics"
+          }
+        },
+        {
+          "ident": "fields",
+          "type": {
+            "item": "Fields"
+          }
+        },
+        {
+          "ident": "semi_token",
+          "type": {
+            "option": {
+              "token": {
+                "repr": ";",
+                "type": "Semi"
+              }
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ItemTrait",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "vis",
+          "type": {
+            "item": "Visibility"
+          }
+        },
+        {
+          "ident": "unsafety",
+          "type": {
+            "option": {
+              "token": {
+                "repr": "unsafe",
+                "type": "Unsafe"
+              }
+            }
+          }
+        },
+        {
+          "ident": "auto_token",
+          "type": {
+            "option": {
+              "token": {
+                "repr": "auto",
+                "type": "Auto"
+              }
+            }
+          }
+        },
+        {
+          "ident": "trait_token",
+          "type": {
+            "token": {
+              "repr": "trait",
+              "type": "Trait"
+            }
+          }
+        },
+        {
+          "ident": "ident",
+          "type": {
+            "item": "Ident"
+          }
+        },
+        {
+          "ident": "generics",
+          "type": {
+            "item": "Generics"
+          }
+        },
+        {
+          "ident": "colon_token",
+          "type": {
+            "option": {
+              "token": {
+                "repr": ":",
+                "type": "Colon"
+              }
+            }
+          }
+        },
+        {
+          "ident": "supertraits",
+          "type": {
+            "punctuated": {
+              "element": {
+                "item": "TypeParamBound"
+              },
+              "punct": {
+                "repr": "+",
+                "type": "Add"
+              }
+            }
+          }
+        },
+        {
+          "ident": "brace_token",
+          "type": {
+            "group": "Brace"
+          }
+        },
+        {
+          "ident": "items",
+          "type": {
+            "vec": {
+              "item": "TraitItem"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ItemTraitAlias",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "vis",
+          "type": {
+            "item": "Visibility"
+          }
+        },
+        {
+          "ident": "trait_token",
+          "type": {
+            "token": {
+              "repr": "trait",
+              "type": "Trait"
+            }
+          }
+        },
+        {
+          "ident": "ident",
+          "type": {
+            "item": "Ident"
+          }
+        },
+        {
+          "ident": "generics",
+          "type": {
+            "item": "Generics"
+          }
+        },
+        {
+          "ident": "eq_token",
+          "type": {
+            "token": {
+              "repr": "=",
+              "type": "Eq"
+            }
+          }
+        },
+        {
+          "ident": "bounds",
+          "type": {
+            "punctuated": {
+              "element": {
+                "item": "TypeParamBound"
+              },
+              "punct": {
+                "repr": "+",
+                "type": "Add"
+              }
+            }
+          }
+        },
+        {
+          "ident": "semi_token",
+          "type": {
+            "token": {
+              "repr": ";",
+              "type": "Semi"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ItemType",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "vis",
+          "type": {
+            "item": "Visibility"
+          }
+        },
+        {
+          "ident": "type_token",
+          "type": {
+            "token": {
+              "repr": "type",
+              "type": "Type"
+            }
+          }
+        },
+        {
+          "ident": "ident",
+          "type": {
+            "item": "Ident"
+          }
+        },
+        {
+          "ident": "generics",
+          "type": {
+            "item": "Generics"
+          }
+        },
+        {
+          "ident": "eq_token",
+          "type": {
+            "token": {
+              "repr": "=",
+              "type": "Eq"
+            }
+          }
+        },
+        {
+          "ident": "ty",
+          "type": {
+            "box": {
+              "item": "Type"
+            }
+          }
+        },
+        {
+          "ident": "semi_token",
+          "type": {
+            "token": {
+              "repr": ";",
+              "type": "Semi"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ItemUnion",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "vis",
+          "type": {
+            "item": "Visibility"
+          }
+        },
+        {
+          "ident": "union_token",
+          "type": {
+            "token": {
+              "repr": "union",
+              "type": "Union"
+            }
+          }
+        },
+        {
+          "ident": "ident",
+          "type": {
+            "item": "Ident"
+          }
+        },
+        {
+          "ident": "generics",
+          "type": {
+            "item": "Generics"
+          }
+        },
+        {
+          "ident": "fields",
+          "type": {
+            "item": "FieldsNamed"
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ItemUse",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "vis",
+          "type": {
+            "item": "Visibility"
+          }
+        },
+        {
+          "ident": "use_token",
+          "type": {
+            "token": {
+              "repr": "use",
+              "type": "Use"
+            }
+          }
+        },
+        {
+          "ident": "leading_colon",
+          "type": {
+            "option": {
+              "token": {
+                "repr": "::",
+                "type": "Colon2"
+              }
+            }
+          }
+        },
+        {
+          "ident": "tree",
+          "type": {
+            "item": "UseTree"
+          }
+        },
+        {
+          "ident": "semi_token",
+          "type": {
+            "token": {
+              "repr": ";",
+              "type": "Semi"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "ItemVerbatim",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "tts",
+          "type": {
+            "ext": "TokenStream"
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "Label",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "name",
+          "type": {
+            "item": "Lifetime"
+          }
+        },
+        {
+          "ident": "colon_token",
+          "type": {
+            "token": {
+              "repr": ":",
+              "type": "Colon"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "Lifetime",
+      "features": {
+        "any": []
+      },
+      "fields": [
+        {
+          "ident": "apostrophe",
+          "type": {
+            "item": "Span"
+          }
+        },
+        {
+          "ident": "ident",
+          "type": {
+            "item": "Ident"
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "LifetimeDef",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "lifetime",
+          "type": {
+            "item": "Lifetime"
+          }
+        },
+        {
+          "ident": "colon_token",
+          "type": {
+            "option": {
+              "token": {
+                "repr": ":",
+                "type": "Colon"
+              }
+            }
+          }
+        },
+        {
+          "ident": "bounds",
+          "type": {
+            "punctuated": {
+              "element": {
+                "item": "Lifetime"
+              },
+              "punct": {
+                "repr": "+",
+                "type": "Add"
+              }
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "enum",
+      "ident": "Lit",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "variants": [
+        {
+          "ident": "Str",
+          "fields": [
+            {
+              "item": "LitStr"
+            }
           ]
         },
-        "fields": [
-          {
-            "ident": "paren_token",
-            "ty": {
-              "token_group": "Paren"
+        {
+          "ident": "ByteStr",
+          "fields": [
+            {
+              "item": "LitByteStr"
             }
-          },
-          {
-            "ident": "elem",
-            "ty": {
+          ]
+        },
+        {
+          "ident": "Byte",
+          "fields": [
+            {
+              "item": "LitByte"
+            }
+          ]
+        },
+        {
+          "ident": "Char",
+          "fields": [
+            {
+              "item": "LitChar"
+            }
+          ]
+        },
+        {
+          "ident": "Int",
+          "fields": [
+            {
+              "item": "LitInt"
+            }
+          ]
+        },
+        {
+          "ident": "Float",
+          "fields": [
+            {
+              "item": "LitFloat"
+            }
+          ]
+        },
+        {
+          "ident": "Bool",
+          "fields": [
+            {
+              "item": "LitBool"
+            }
+          ]
+        },
+        {
+          "ident": "Verbatim",
+          "fields": [
+            {
+              "item": "LitVerbatim"
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "node": "struct",
+      "ident": "LitBool",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "value",
+          "type": {
+            "std": "bool"
+          }
+        },
+        {
+          "ident": "span",
+          "type": {
+            "item": "Span"
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "LitByte",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "token",
+          "type": {
+            "ext": "Literal"
+          }
+        }
+      ],
+      "all_fields_pub": false
+    },
+    {
+      "node": "struct",
+      "ident": "LitByteStr",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "token",
+          "type": {
+            "ext": "Literal"
+          }
+        }
+      ],
+      "all_fields_pub": false
+    },
+    {
+      "node": "struct",
+      "ident": "LitChar",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "token",
+          "type": {
+            "ext": "Literal"
+          }
+        }
+      ],
+      "all_fields_pub": false
+    },
+    {
+      "node": "struct",
+      "ident": "LitFloat",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "token",
+          "type": {
+            "ext": "Literal"
+          }
+        }
+      ],
+      "all_fields_pub": false
+    },
+    {
+      "node": "struct",
+      "ident": "LitInt",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "token",
+          "type": {
+            "ext": "Literal"
+          }
+        }
+      ],
+      "all_fields_pub": false
+    },
+    {
+      "node": "struct",
+      "ident": "LitStr",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "token",
+          "type": {
+            "ext": "Literal"
+          }
+        }
+      ],
+      "all_fields_pub": false
+    },
+    {
+      "node": "struct",
+      "ident": "LitVerbatim",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "token",
+          "type": {
+            "ext": "Literal"
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "Local",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "let_token",
+          "type": {
+            "token": {
+              "repr": "let",
+              "type": "Let"
+            }
+          }
+        },
+        {
+          "ident": "pats",
+          "type": {
+            "punctuated": {
+              "element": {
+                "item": "Pat"
+              },
+              "punct": {
+                "repr": "|",
+                "type": "Or"
+              }
+            }
+          }
+        },
+        {
+          "ident": "ty",
+          "type": {
+            "option": {
+              "tuple": [
+                {
+                  "token": {
+                    "repr": ":",
+                    "type": "Colon"
+                  }
+                },
+                {
+                  "box": {
+                    "item": "Type"
+                  }
+                }
+              ]
+            }
+          }
+        },
+        {
+          "ident": "init",
+          "type": {
+            "option": {
+              "tuple": [
+                {
+                  "token": {
+                    "repr": "=",
+                    "type": "Eq"
+                  }
+                },
+                {
+                  "box": {
+                    "item": "Expr"
+                  }
+                }
+              ]
+            }
+          }
+        },
+        {
+          "ident": "semi_token",
+          "type": {
+            "token": {
+              "repr": ";",
+              "type": "Semi"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "Macro",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "path",
+          "type": {
+            "item": "Path"
+          }
+        },
+        {
+          "ident": "bang_token",
+          "type": {
+            "token": {
+              "repr": "!",
+              "type": "Bang"
+            }
+          }
+        },
+        {
+          "ident": "delimiter",
+          "type": {
+            "item": "MacroDelimiter"
+          }
+        },
+        {
+          "ident": "tts",
+          "type": {
+            "ext": "TokenStream"
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "enum",
+      "ident": "MacroDelimiter",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "variants": [
+        {
+          "ident": "Paren",
+          "fields": [
+            {
+              "group": "Paren"
+            }
+          ]
+        },
+        {
+          "ident": "Brace",
+          "fields": [
+            {
+              "group": "Brace"
+            }
+          ]
+        },
+        {
+          "ident": "Bracket",
+          "fields": [
+            {
+              "group": "Bracket"
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "node": "enum",
+      "ident": "Member",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "variants": [
+        {
+          "ident": "Named",
+          "fields": [
+            {
+              "item": "Ident"
+            }
+          ]
+        },
+        {
+          "ident": "Unnamed",
+          "fields": [
+            {
+              "item": "Index"
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "node": "enum",
+      "ident": "Meta",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "variants": [
+        {
+          "ident": "Word",
+          "fields": [
+            {
+              "item": "Ident"
+            }
+          ]
+        },
+        {
+          "ident": "List",
+          "fields": [
+            {
+              "item": "MetaList"
+            }
+          ]
+        },
+        {
+          "ident": "NameValue",
+          "fields": [
+            {
+              "item": "MetaNameValue"
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "node": "struct",
+      "ident": "MetaList",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "ident",
+          "type": {
+            "item": "Ident"
+          }
+        },
+        {
+          "ident": "paren_token",
+          "type": {
+            "group": "Paren"
+          }
+        },
+        {
+          "ident": "nested",
+          "type": {
+            "punctuated": {
+              "element": {
+                "item": "NestedMeta"
+              },
+              "punct": {
+                "repr": ",",
+                "type": "Comma"
+              }
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "MetaNameValue",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "ident",
+          "type": {
+            "item": "Ident"
+          }
+        },
+        {
+          "ident": "eq_token",
+          "type": {
+            "token": {
+              "repr": "=",
+              "type": "Eq"
+            }
+          }
+        },
+        {
+          "ident": "lit",
+          "type": {
+            "item": "Lit"
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "MethodSig",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "constness",
+          "type": {
+            "option": {
+              "token": {
+                "repr": "const",
+                "type": "Const"
+              }
+            }
+          }
+        },
+        {
+          "ident": "unsafety",
+          "type": {
+            "option": {
+              "token": {
+                "repr": "unsafe",
+                "type": "Unsafe"
+              }
+            }
+          }
+        },
+        {
+          "ident": "asyncness",
+          "type": {
+            "option": {
+              "token": {
+                "repr": "async",
+                "type": "Async"
+              }
+            }
+          }
+        },
+        {
+          "ident": "abi",
+          "type": {
+            "option": {
+              "item": "Abi"
+            }
+          }
+        },
+        {
+          "ident": "ident",
+          "type": {
+            "item": "Ident"
+          }
+        },
+        {
+          "ident": "decl",
+          "type": {
+            "item": "FnDecl"
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "MethodTurbofish",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "colon2_token",
+          "type": {
+            "token": {
+              "repr": "::",
+              "type": "Colon2"
+            }
+          }
+        },
+        {
+          "ident": "lt_token",
+          "type": {
+            "token": {
+              "repr": "<",
+              "type": "Lt"
+            }
+          }
+        },
+        {
+          "ident": "args",
+          "type": {
+            "punctuated": {
+              "element": {
+                "item": "GenericMethodArgument"
+              },
+              "punct": {
+                "repr": ",",
+                "type": "Comma"
+              }
+            }
+          }
+        },
+        {
+          "ident": "gt_token",
+          "type": {
+            "token": {
+              "repr": ">",
+              "type": "Gt"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "enum",
+      "ident": "NestedMeta",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "variants": [
+        {
+          "ident": "Meta",
+          "fields": [
+            {
+              "item": "Meta"
+            }
+          ]
+        },
+        {
+          "ident": "Literal",
+          "fields": [
+            {
+              "item": "Lit"
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "node": "struct",
+      "ident": "ParenthesizedGenericArguments",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "paren_token",
+          "type": {
+            "group": "Paren"
+          }
+        },
+        {
+          "ident": "inputs",
+          "type": {
+            "punctuated": {
+              "element": {
+                "item": "Type"
+              },
+              "punct": {
+                "repr": ",",
+                "type": "Comma"
+              }
+            }
+          }
+        },
+        {
+          "ident": "output",
+          "type": {
+            "item": "ReturnType"
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "enum",
+      "ident": "Pat",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "variants": [
+        {
+          "ident": "Wild",
+          "fields": [
+            {
+              "item": "PatWild"
+            }
+          ]
+        },
+        {
+          "ident": "Ident",
+          "fields": [
+            {
+              "item": "PatIdent"
+            }
+          ]
+        },
+        {
+          "ident": "Struct",
+          "fields": [
+            {
+              "item": "PatStruct"
+            }
+          ]
+        },
+        {
+          "ident": "TupleStruct",
+          "fields": [
+            {
+              "item": "PatTupleStruct"
+            }
+          ]
+        },
+        {
+          "ident": "Path",
+          "fields": [
+            {
+              "item": "PatPath"
+            }
+          ]
+        },
+        {
+          "ident": "Tuple",
+          "fields": [
+            {
+              "item": "PatTuple"
+            }
+          ]
+        },
+        {
+          "ident": "Box",
+          "fields": [
+            {
+              "item": "PatBox"
+            }
+          ]
+        },
+        {
+          "ident": "Ref",
+          "fields": [
+            {
+              "item": "PatRef"
+            }
+          ]
+        },
+        {
+          "ident": "Lit",
+          "fields": [
+            {
+              "item": "PatLit"
+            }
+          ]
+        },
+        {
+          "ident": "Range",
+          "fields": [
+            {
+              "item": "PatRange"
+            }
+          ]
+        },
+        {
+          "ident": "Slice",
+          "fields": [
+            {
+              "item": "PatSlice"
+            }
+          ]
+        },
+        {
+          "ident": "Macro",
+          "fields": [
+            {
+              "item": "PatMacro"
+            }
+          ]
+        },
+        {
+          "ident": "Verbatim",
+          "fields": [
+            {
+              "item": "PatVerbatim"
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "node": "struct",
+      "ident": "PatBox",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "box_token",
+          "type": {
+            "token": {
+              "repr": "box",
+              "type": "Box"
+            }
+          }
+        },
+        {
+          "ident": "pat",
+          "type": {
+            "box": {
+              "item": "Pat"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "PatIdent",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "by_ref",
+          "type": {
+            "option": {
+              "token": {
+                "repr": "ref",
+                "type": "Ref"
+              }
+            }
+          }
+        },
+        {
+          "ident": "mutability",
+          "type": {
+            "option": {
+              "token": {
+                "repr": "mut",
+                "type": "Mut"
+              }
+            }
+          }
+        },
+        {
+          "ident": "ident",
+          "type": {
+            "item": "Ident"
+          }
+        },
+        {
+          "ident": "subpat",
+          "type": {
+            "option": {
+              "tuple": [
+                {
+                  "token": {
+                    "repr": "@",
+                    "type": "At"
+                  }
+                },
+                {
+                  "box": {
+                    "item": "Pat"
+                  }
+                }
+              ]
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "PatLit",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "expr",
+          "type": {
+            "box": {
+              "item": "Expr"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "PatMacro",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "mac",
+          "type": {
+            "item": "Macro"
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "PatPath",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "qself",
+          "type": {
+            "option": {
+              "item": "QSelf"
+            }
+          }
+        },
+        {
+          "ident": "path",
+          "type": {
+            "item": "Path"
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "PatRange",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "lo",
+          "type": {
+            "box": {
+              "item": "Expr"
+            }
+          }
+        },
+        {
+          "ident": "limits",
+          "type": {
+            "item": "RangeLimits"
+          }
+        },
+        {
+          "ident": "hi",
+          "type": {
+            "box": {
+              "item": "Expr"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "PatRef",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "and_token",
+          "type": {
+            "token": {
+              "repr": "&",
+              "type": "And"
+            }
+          }
+        },
+        {
+          "ident": "mutability",
+          "type": {
+            "option": {
+              "token": {
+                "repr": "mut",
+                "type": "Mut"
+              }
+            }
+          }
+        },
+        {
+          "ident": "pat",
+          "type": {
+            "box": {
+              "item": "Pat"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "PatSlice",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "bracket_token",
+          "type": {
+            "group": "Bracket"
+          }
+        },
+        {
+          "ident": "front",
+          "type": {
+            "punctuated": {
+              "element": {
+                "item": "Pat"
+              },
+              "punct": {
+                "repr": ",",
+                "type": "Comma"
+              }
+            }
+          }
+        },
+        {
+          "ident": "middle",
+          "type": {
+            "option": {
+              "box": {
+                "item": "Pat"
+              }
+            }
+          }
+        },
+        {
+          "ident": "dot2_token",
+          "type": {
+            "option": {
+              "token": {
+                "repr": "..",
+                "type": "Dot2"
+              }
+            }
+          }
+        },
+        {
+          "ident": "comma_token",
+          "type": {
+            "option": {
+              "token": {
+                "repr": ",",
+                "type": "Comma"
+              }
+            }
+          }
+        },
+        {
+          "ident": "back",
+          "type": {
+            "punctuated": {
+              "element": {
+                "item": "Pat"
+              },
+              "punct": {
+                "repr": ",",
+                "type": "Comma"
+              }
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "PatStruct",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "path",
+          "type": {
+            "item": "Path"
+          }
+        },
+        {
+          "ident": "brace_token",
+          "type": {
+            "group": "Brace"
+          }
+        },
+        {
+          "ident": "fields",
+          "type": {
+            "punctuated": {
+              "element": {
+                "item": "FieldPat"
+              },
+              "punct": {
+                "repr": ",",
+                "type": "Comma"
+              }
+            }
+          }
+        },
+        {
+          "ident": "dot2_token",
+          "type": {
+            "option": {
+              "token": {
+                "repr": "..",
+                "type": "Dot2"
+              }
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "PatTuple",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "paren_token",
+          "type": {
+            "group": "Paren"
+          }
+        },
+        {
+          "ident": "front",
+          "type": {
+            "punctuated": {
+              "element": {
+                "item": "Pat"
+              },
+              "punct": {
+                "repr": ",",
+                "type": "Comma"
+              }
+            }
+          }
+        },
+        {
+          "ident": "dot2_token",
+          "type": {
+            "option": {
+              "token": {
+                "repr": "..",
+                "type": "Dot2"
+              }
+            }
+          }
+        },
+        {
+          "ident": "comma_token",
+          "type": {
+            "option": {
+              "token": {
+                "repr": ",",
+                "type": "Comma"
+              }
+            }
+          }
+        },
+        {
+          "ident": "back",
+          "type": {
+            "punctuated": {
+              "element": {
+                "item": "Pat"
+              },
+              "punct": {
+                "repr": ",",
+                "type": "Comma"
+              }
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "PatTupleStruct",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "path",
+          "type": {
+            "item": "Path"
+          }
+        },
+        {
+          "ident": "pat",
+          "type": {
+            "item": "PatTuple"
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "PatVerbatim",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "tts",
+          "type": {
+            "ext": "TokenStream"
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "PatWild",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "underscore_token",
+          "type": {
+            "token": {
+              "repr": "_",
+              "type": "Underscore"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "Path",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "leading_colon",
+          "type": {
+            "option": {
+              "token": {
+                "repr": "::",
+                "type": "Colon2"
+              }
+            }
+          }
+        },
+        {
+          "ident": "segments",
+          "type": {
+            "punctuated": {
+              "element": {
+                "item": "PathSegment"
+              },
+              "punct": {
+                "repr": "::",
+                "type": "Colon2"
+              }
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "enum",
+      "ident": "PathArguments",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "variants": [
+        {
+          "ident": "None",
+          "fields": []
+        },
+        {
+          "ident": "AngleBracketed",
+          "fields": [
+            {
+              "item": "AngleBracketedGenericArguments"
+            }
+          ]
+        },
+        {
+          "ident": "Parenthesized",
+          "fields": [
+            {
+              "item": "ParenthesizedGenericArguments"
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "node": "struct",
+      "ident": "PathSegment",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "ident",
+          "type": {
+            "item": "Ident"
+          }
+        },
+        {
+          "ident": "arguments",
+          "type": {
+            "item": "PathArguments"
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "PredicateEq",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "lhs_ty",
+          "type": {
+            "item": "Type"
+          }
+        },
+        {
+          "ident": "eq_token",
+          "type": {
+            "token": {
+              "repr": "=",
+              "type": "Eq"
+            }
+          }
+        },
+        {
+          "ident": "rhs_ty",
+          "type": {
+            "item": "Type"
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "PredicateLifetime",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "lifetime",
+          "type": {
+            "item": "Lifetime"
+          }
+        },
+        {
+          "ident": "colon_token",
+          "type": {
+            "token": {
+              "repr": ":",
+              "type": "Colon"
+            }
+          }
+        },
+        {
+          "ident": "bounds",
+          "type": {
+            "punctuated": {
+              "element": {
+                "item": "Lifetime"
+              },
+              "punct": {
+                "repr": "+",
+                "type": "Add"
+              }
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "PredicateType",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "lifetimes",
+          "type": {
+            "option": {
+              "item": "BoundLifetimes"
+            }
+          }
+        },
+        {
+          "ident": "bounded_ty",
+          "type": {
+            "item": "Type"
+          }
+        },
+        {
+          "ident": "colon_token",
+          "type": {
+            "token": {
+              "repr": ":",
+              "type": "Colon"
+            }
+          }
+        },
+        {
+          "ident": "bounds",
+          "type": {
+            "punctuated": {
+              "element": {
+                "item": "TypeParamBound"
+              },
+              "punct": {
+                "repr": "+",
+                "type": "Add"
+              }
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "QSelf",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "lt_token",
+          "type": {
+            "token": {
+              "repr": "<",
+              "type": "Lt"
+            }
+          }
+        },
+        {
+          "ident": "ty",
+          "type": {
+            "box": {
+              "item": "Type"
+            }
+          }
+        },
+        {
+          "ident": "position",
+          "type": {
+            "std": "usize"
+          }
+        },
+        {
+          "ident": "as_token",
+          "type": {
+            "option": {
+              "token": {
+                "repr": "as",
+                "type": "As"
+              }
+            }
+          }
+        },
+        {
+          "ident": "gt_token",
+          "type": {
+            "token": {
+              "repr": ">",
+              "type": "Gt"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "enum",
+      "ident": "RangeLimits",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "variants": [
+        {
+          "ident": "HalfOpen",
+          "fields": [
+            {
+              "token": {
+                "repr": "..",
+                "type": "Dot2"
+              }
+            }
+          ]
+        },
+        {
+          "ident": "Closed",
+          "fields": [
+            {
+              "token": {
+                "repr": "..=",
+                "type": "DotDotEq"
+              }
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "node": "enum",
+      "ident": "ReturnType",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "variants": [
+        {
+          "ident": "Default",
+          "fields": []
+        },
+        {
+          "ident": "Type",
+          "fields": [
+            {
+              "token": {
+                "repr": "->",
+                "type": "RArrow"
+              }
+            },
+            {
               "box": {
                 "item": "Type"
               }
             }
-          }
-        ],
-        "all_fields_pub": true
-      }
+          ]
+        }
+      ]
     },
     {
-      "struct": {
-        "ident": "TypePath",
-        "features": {
-          "any": [
-            "full",
-            "derive"
+      "node": "struct",
+      "ident": "Span",
+      "features": {
+        "any": []
+      },
+      "fields": [],
+      "all_fields_pub": true
+    },
+    {
+      "node": "enum",
+      "ident": "Stmt",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "variants": [
+        {
+          "ident": "Local",
+          "fields": [
+            {
+              "item": "Local"
+            }
           ]
         },
-        "fields": [
-          {
-            "ident": "qself",
-            "ty": {
-              "option": {
-                "item": "QSelf"
+        {
+          "ident": "Item",
+          "fields": [
+            {
+              "item": "Item"
+            }
+          ]
+        },
+        {
+          "ident": "Expr",
+          "fields": [
+            {
+              "item": "Expr"
+            }
+          ]
+        },
+        {
+          "ident": "Semi",
+          "fields": [
+            {
+              "item": "Expr"
+            },
+            {
+              "token": {
+                "repr": ";",
+                "type": "Semi"
               }
             }
-          },
-          {
-            "ident": "path",
-            "ty": {
+          ]
+        }
+      ]
+    },
+    {
+      "node": "struct",
+      "ident": "TraitBound",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "paren_token",
+          "type": {
+            "option": {
+              "group": "Paren"
+            }
+          }
+        },
+        {
+          "ident": "modifier",
+          "type": {
+            "item": "TraitBoundModifier"
+          }
+        },
+        {
+          "ident": "lifetimes",
+          "type": {
+            "option": {
+              "item": "BoundLifetimes"
+            }
+          }
+        },
+        {
+          "ident": "path",
+          "type": {
+            "item": "Path"
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "enum",
+      "ident": "TraitBoundModifier",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "variants": [
+        {
+          "ident": "None",
+          "fields": []
+        },
+        {
+          "ident": "Maybe",
+          "fields": [
+            {
+              "token": {
+                "repr": "?",
+                "type": "Question"
+              }
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "node": "enum",
+      "ident": "TraitItem",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "variants": [
+        {
+          "ident": "Const",
+          "fields": [
+            {
+              "item": "TraitItemConst"
+            }
+          ]
+        },
+        {
+          "ident": "Method",
+          "fields": [
+            {
+              "item": "TraitItemMethod"
+            }
+          ]
+        },
+        {
+          "ident": "Type",
+          "fields": [
+            {
+              "item": "TraitItemType"
+            }
+          ]
+        },
+        {
+          "ident": "Macro",
+          "fields": [
+            {
+              "item": "TraitItemMacro"
+            }
+          ]
+        },
+        {
+          "ident": "Verbatim",
+          "fields": [
+            {
+              "item": "TraitItemVerbatim"
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "node": "struct",
+      "ident": "TraitItemConst",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "const_token",
+          "type": {
+            "token": {
+              "repr": "const",
+              "type": "Const"
+            }
+          }
+        },
+        {
+          "ident": "ident",
+          "type": {
+            "item": "Ident"
+          }
+        },
+        {
+          "ident": "colon_token",
+          "type": {
+            "token": {
+              "repr": ":",
+              "type": "Colon"
+            }
+          }
+        },
+        {
+          "ident": "ty",
+          "type": {
+            "item": "Type"
+          }
+        },
+        {
+          "ident": "default",
+          "type": {
+            "option": {
+              "tuple": [
+                {
+                  "token": {
+                    "repr": "=",
+                    "type": "Eq"
+                  }
+                },
+                {
+                  "item": "Expr"
+                }
+              ]
+            }
+          }
+        },
+        {
+          "ident": "semi_token",
+          "type": {
+            "token": {
+              "repr": ";",
+              "type": "Semi"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "TraitItemMacro",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "mac",
+          "type": {
+            "item": "Macro"
+          }
+        },
+        {
+          "ident": "semi_token",
+          "type": {
+            "option": {
+              "token": {
+                "repr": ";",
+                "type": "Semi"
+              }
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "TraitItemMethod",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "sig",
+          "type": {
+            "item": "MethodSig"
+          }
+        },
+        {
+          "ident": "default",
+          "type": {
+            "option": {
+              "item": "Block"
+            }
+          }
+        },
+        {
+          "ident": "semi_token",
+          "type": {
+            "option": {
+              "token": {
+                "repr": ";",
+                "type": "Semi"
+              }
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "TraitItemType",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "type_token",
+          "type": {
+            "token": {
+              "repr": "type",
+              "type": "Type"
+            }
+          }
+        },
+        {
+          "ident": "ident",
+          "type": {
+            "item": "Ident"
+          }
+        },
+        {
+          "ident": "generics",
+          "type": {
+            "item": "Generics"
+          }
+        },
+        {
+          "ident": "colon_token",
+          "type": {
+            "option": {
+              "token": {
+                "repr": ":",
+                "type": "Colon"
+              }
+            }
+          }
+        },
+        {
+          "ident": "bounds",
+          "type": {
+            "punctuated": {
+              "element": {
+                "item": "TypeParamBound"
+              },
+              "punct": {
+                "repr": "+",
+                "type": "Add"
+              }
+            }
+          }
+        },
+        {
+          "ident": "default",
+          "type": {
+            "option": {
+              "tuple": [
+                {
+                  "token": {
+                    "repr": "=",
+                    "type": "Eq"
+                  }
+                },
+                {
+                  "item": "Type"
+                }
+              ]
+            }
+          }
+        },
+        {
+          "ident": "semi_token",
+          "type": {
+            "token": {
+              "repr": ";",
+              "type": "Semi"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "TraitItemVerbatim",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "tts",
+          "type": {
+            "ext": "TokenStream"
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "enum",
+      "ident": "Type",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "variants": [
+        {
+          "ident": "Slice",
+          "fields": [
+            {
+              "item": "TypeSlice"
+            }
+          ]
+        },
+        {
+          "ident": "Array",
+          "fields": [
+            {
+              "item": "TypeArray"
+            }
+          ]
+        },
+        {
+          "ident": "Ptr",
+          "fields": [
+            {
+              "item": "TypePtr"
+            }
+          ]
+        },
+        {
+          "ident": "Reference",
+          "fields": [
+            {
+              "item": "TypeReference"
+            }
+          ]
+        },
+        {
+          "ident": "BareFn",
+          "fields": [
+            {
+              "item": "TypeBareFn"
+            }
+          ]
+        },
+        {
+          "ident": "Never",
+          "fields": [
+            {
+              "item": "TypeNever"
+            }
+          ]
+        },
+        {
+          "ident": "Tuple",
+          "fields": [
+            {
+              "item": "TypeTuple"
+            }
+          ]
+        },
+        {
+          "ident": "Path",
+          "fields": [
+            {
+              "item": "TypePath"
+            }
+          ]
+        },
+        {
+          "ident": "TraitObject",
+          "fields": [
+            {
+              "item": "TypeTraitObject"
+            }
+          ]
+        },
+        {
+          "ident": "ImplTrait",
+          "fields": [
+            {
+              "item": "TypeImplTrait"
+            }
+          ]
+        },
+        {
+          "ident": "Paren",
+          "fields": [
+            {
+              "item": "TypeParen"
+            }
+          ]
+        },
+        {
+          "ident": "Group",
+          "fields": [
+            {
+              "item": "TypeGroup"
+            }
+          ]
+        },
+        {
+          "ident": "Infer",
+          "fields": [
+            {
+              "item": "TypeInfer"
+            }
+          ]
+        },
+        {
+          "ident": "Macro",
+          "fields": [
+            {
+              "item": "TypeMacro"
+            }
+          ]
+        },
+        {
+          "ident": "Verbatim",
+          "fields": [
+            {
+              "item": "TypeVerbatim"
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "node": "struct",
+      "ident": "TypeArray",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "bracket_token",
+          "type": {
+            "group": "Bracket"
+          }
+        },
+        {
+          "ident": "elem",
+          "type": {
+            "box": {
+              "item": "Type"
+            }
+          }
+        },
+        {
+          "ident": "semi_token",
+          "type": {
+            "token": {
+              "repr": ";",
+              "type": "Semi"
+            }
+          }
+        },
+        {
+          "ident": "len",
+          "type": {
+            "item": "Expr"
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "TypeBareFn",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "lifetimes",
+          "type": {
+            "option": {
+              "item": "BoundLifetimes"
+            }
+          }
+        },
+        {
+          "ident": "unsafety",
+          "type": {
+            "option": {
+              "token": {
+                "repr": "unsafe",
+                "type": "Unsafe"
+              }
+            }
+          }
+        },
+        {
+          "ident": "abi",
+          "type": {
+            "option": {
+              "item": "Abi"
+            }
+          }
+        },
+        {
+          "ident": "fn_token",
+          "type": {
+            "token": {
+              "repr": "fn",
+              "type": "Fn"
+            }
+          }
+        },
+        {
+          "ident": "paren_token",
+          "type": {
+            "group": "Paren"
+          }
+        },
+        {
+          "ident": "inputs",
+          "type": {
+            "punctuated": {
+              "element": {
+                "item": "BareFnArg"
+              },
+              "punct": {
+                "repr": ",",
+                "type": "Comma"
+              }
+            }
+          }
+        },
+        {
+          "ident": "variadic",
+          "type": {
+            "option": {
+              "token": {
+                "repr": "...",
+                "type": "Dot3"
+              }
+            }
+          }
+        },
+        {
+          "ident": "output",
+          "type": {
+            "item": "ReturnType"
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "TypeGroup",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "group_token",
+          "type": {
+            "group": "Group"
+          }
+        },
+        {
+          "ident": "elem",
+          "type": {
+            "box": {
+              "item": "Type"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "TypeImplTrait",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "impl_token",
+          "type": {
+            "token": {
+              "repr": "impl",
+              "type": "Impl"
+            }
+          }
+        },
+        {
+          "ident": "bounds",
+          "type": {
+            "punctuated": {
+              "element": {
+                "item": "TypeParamBound"
+              },
+              "punct": {
+                "repr": "+",
+                "type": "Add"
+              }
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "TypeInfer",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "underscore_token",
+          "type": {
+            "token": {
+              "repr": "_",
+              "type": "Underscore"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "TypeMacro",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "mac",
+          "type": {
+            "item": "Macro"
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "TypeNever",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "bang_token",
+          "type": {
+            "token": {
+              "repr": "!",
+              "type": "Bang"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "TypeParam",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "ident",
+          "type": {
+            "item": "Ident"
+          }
+        },
+        {
+          "ident": "colon_token",
+          "type": {
+            "option": {
+              "token": {
+                "repr": ":",
+                "type": "Colon"
+              }
+            }
+          }
+        },
+        {
+          "ident": "bounds",
+          "type": {
+            "punctuated": {
+              "element": {
+                "item": "TypeParamBound"
+              },
+              "punct": {
+                "repr": "+",
+                "type": "Add"
+              }
+            }
+          }
+        },
+        {
+          "ident": "eq_token",
+          "type": {
+            "option": {
+              "token": {
+                "repr": "=",
+                "type": "Eq"
+              }
+            }
+          }
+        },
+        {
+          "ident": "default",
+          "type": {
+            "option": {
+              "item": "Type"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "enum",
+      "ident": "TypeParamBound",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "variants": [
+        {
+          "ident": "Trait",
+          "fields": [
+            {
+              "item": "TraitBound"
+            }
+          ]
+        },
+        {
+          "ident": "Lifetime",
+          "fields": [
+            {
+              "item": "Lifetime"
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "node": "struct",
+      "ident": "TypeParen",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "paren_token",
+          "type": {
+            "group": "Paren"
+          }
+        },
+        {
+          "ident": "elem",
+          "type": {
+            "box": {
+              "item": "Type"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "TypePath",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "qself",
+          "type": {
+            "option": {
+              "item": "QSelf"
+            }
+          }
+        },
+        {
+          "ident": "path",
+          "type": {
+            "item": "Path"
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "TypePtr",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "star_token",
+          "type": {
+            "token": {
+              "repr": "*",
+              "type": "Star"
+            }
+          }
+        },
+        {
+          "ident": "const_token",
+          "type": {
+            "option": {
+              "token": {
+                "repr": "const",
+                "type": "Const"
+              }
+            }
+          }
+        },
+        {
+          "ident": "mutability",
+          "type": {
+            "option": {
+              "token": {
+                "repr": "mut",
+                "type": "Mut"
+              }
+            }
+          }
+        },
+        {
+          "ident": "elem",
+          "type": {
+            "box": {
+              "item": "Type"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "TypeReference",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "and_token",
+          "type": {
+            "token": {
+              "repr": "&",
+              "type": "And"
+            }
+          }
+        },
+        {
+          "ident": "lifetime",
+          "type": {
+            "option": {
+              "item": "Lifetime"
+            }
+          }
+        },
+        {
+          "ident": "mutability",
+          "type": {
+            "option": {
+              "token": {
+                "repr": "mut",
+                "type": "Mut"
+              }
+            }
+          }
+        },
+        {
+          "ident": "elem",
+          "type": {
+            "box": {
+              "item": "Type"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "TypeSlice",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "bracket_token",
+          "type": {
+            "group": "Bracket"
+          }
+        },
+        {
+          "ident": "elem",
+          "type": {
+            "box": {
+              "item": "Type"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "TypeTraitObject",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "dyn_token",
+          "type": {
+            "option": {
+              "token": {
+                "repr": "dyn",
+                "type": "Dyn"
+              }
+            }
+          }
+        },
+        {
+          "ident": "bounds",
+          "type": {
+            "punctuated": {
+              "element": {
+                "item": "TypeParamBound"
+              },
+              "punct": {
+                "repr": "+",
+                "type": "Add"
+              }
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "TypeTuple",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "paren_token",
+          "type": {
+            "group": "Paren"
+          }
+        },
+        {
+          "ident": "elems",
+          "type": {
+            "punctuated": {
+              "element": {
+                "item": "Type"
+              },
+              "punct": {
+                "repr": ",",
+                "type": "Comma"
+              }
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "TypeVerbatim",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "tts",
+          "type": {
+            "ext": "TokenStream"
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "enum",
+      "ident": "UnOp",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "variants": [
+        {
+          "ident": "Deref",
+          "fields": [
+            {
+              "token": {
+                "repr": "*",
+                "type": "Star"
+              }
+            }
+          ]
+        },
+        {
+          "ident": "Not",
+          "fields": [
+            {
+              "token": {
+                "repr": "!",
+                "type": "Bang"
+              }
+            }
+          ]
+        },
+        {
+          "ident": "Neg",
+          "fields": [
+            {
+              "token": {
+                "repr": "-",
+                "type": "Sub"
+              }
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "node": "struct",
+      "ident": "UseGlob",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "star_token",
+          "type": {
+            "token": {
+              "repr": "*",
+              "type": "Star"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "UseGroup",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "brace_token",
+          "type": {
+            "group": "Brace"
+          }
+        },
+        {
+          "ident": "items",
+          "type": {
+            "punctuated": {
+              "element": {
+                "item": "UseTree"
+              },
+              "punct": {
+                "repr": ",",
+                "type": "Comma"
+              }
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "UseName",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "ident",
+          "type": {
+            "item": "Ident"
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "UsePath",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "ident",
+          "type": {
+            "item": "Ident"
+          }
+        },
+        {
+          "ident": "colon2_token",
+          "type": {
+            "token": {
+              "repr": "::",
+              "type": "Colon2"
+            }
+          }
+        },
+        {
+          "ident": "tree",
+          "type": {
+            "box": {
+              "item": "UseTree"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "UseRename",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "ident",
+          "type": {
+            "item": "Ident"
+          }
+        },
+        {
+          "ident": "as_token",
+          "type": {
+            "token": {
+              "repr": "as",
+              "type": "As"
+            }
+          }
+        },
+        {
+          "ident": "rename",
+          "type": {
+            "item": "Ident"
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "enum",
+      "ident": "UseTree",
+      "features": {
+        "any": [
+          "full"
+        ]
+      },
+      "variants": [
+        {
+          "ident": "Path",
+          "fields": [
+            {
+              "item": "UsePath"
+            }
+          ]
+        },
+        {
+          "ident": "Name",
+          "fields": [
+            {
+              "item": "UseName"
+            }
+          ]
+        },
+        {
+          "ident": "Rename",
+          "fields": [
+            {
+              "item": "UseRename"
+            }
+          ]
+        },
+        {
+          "ident": "Glob",
+          "fields": [
+            {
+              "item": "UseGlob"
+            }
+          ]
+        },
+        {
+          "ident": "Group",
+          "fields": [
+            {
+              "item": "UseGroup"
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "node": "struct",
+      "ident": "Variant",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "attrs",
+          "type": {
+            "vec": {
+              "item": "Attribute"
+            }
+          }
+        },
+        {
+          "ident": "ident",
+          "type": {
+            "item": "Ident"
+          }
+        },
+        {
+          "ident": "fields",
+          "type": {
+            "item": "Fields"
+          }
+        },
+        {
+          "ident": "discriminant",
+          "type": {
+            "option": {
+              "tuple": [
+                {
+                  "token": {
+                    "repr": "=",
+                    "type": "Eq"
+                  }
+                },
+                {
+                  "item": "Expr"
+                }
+              ]
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "VisCrate",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "crate_token",
+          "type": {
+            "token": {
+              "repr": "crate",
+              "type": "Crate"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "VisPublic",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "pub_token",
+          "type": {
+            "token": {
+              "repr": "pub",
+              "type": "Pub"
+            }
+          }
+        }
+      ],
+      "all_fields_pub": true
+    },
+    {
+      "node": "struct",
+      "ident": "VisRestricted",
+      "features": {
+        "any": [
+          "full",
+          "derive"
+        ]
+      },
+      "fields": [
+        {
+          "ident": "pub_token",
+          "type": {
+            "token": {
+              "repr": "pub",
+              "type": "Pub"
+            }
+          }
+        },
+        {
+          "ident": "paren_token",
+          "type": {
+            "group": "Paren"
+          }
+        },
+        {
+          "ident": "in_token",
+          "type": {
+            "option": {
+              "token": {
+                "repr": "in",
+                "type": "In"
+              }
+            }
+          }
+        },
+        {
+          "ident": "path",
+          "type": {
+            "box": {
               "item": "Path"
             }
           }
-        ],
-        "all_fields_pub": true
-      }
+        }
+      ],
+      "all_fields_pub": true
     },
     {
-      "struct": {
-        "ident": "TypePtr",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "star_token",
-            "ty": {
-              "token": {
-                "repr": "*",
-                "ty": "Star"
-              }
-            }
-          },
-          {
-            "ident": "const_token",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": "const",
-                  "ty": "Const"
-                }
-              }
-            }
-          },
-          {
-            "ident": "mutability",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": "mut",
-                  "ty": "Mut"
-                }
-              }
-            }
-          },
-          {
-            "ident": "elem",
-            "ty": {
-              "box": {
-                "item": "Type"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "TypeReference",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "and_token",
-            "ty": {
-              "token": {
-                "repr": "&",
-                "ty": "And"
-              }
-            }
-          },
-          {
-            "ident": "lifetime",
-            "ty": {
-              "option": {
-                "item": "Lifetime"
-              }
-            }
-          },
-          {
-            "ident": "mutability",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": "mut",
-                  "ty": "Mut"
-                }
-              }
-            }
-          },
-          {
-            "ident": "elem",
-            "ty": {
-              "box": {
-                "item": "Type"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "TypeSlice",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "bracket_token",
-            "ty": {
-              "token_group": "Bracket"
-            }
-          },
-          {
-            "ident": "elem",
-            "ty": {
-              "box": {
-                "item": "Type"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "TypeTraitObject",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "dyn_token",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": "dyn",
-                  "ty": "Dyn"
-                }
-              }
-            }
-          },
-          {
-            "ident": "bounds",
-            "ty": {
-              "punctuated": [
-                {
-                  "item": "TypeParamBound"
-                },
-                {
-                  "repr": "+",
-                  "ty": "Add"
-                }
-              ]
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "TypeTuple",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "paren_token",
-            "ty": {
-              "token_group": "Paren"
-            }
-          },
-          {
-            "ident": "elems",
-            "ty": {
-              "punctuated": [
-                {
-                  "item": "Type"
-                },
-                {
-                  "repr": ",",
-                  "ty": "Comma"
-                }
-              ]
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "TypeVerbatim",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "tts",
-            "ty": {
-              "ext": "TokenStream"
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "enum": {
-        "ident": "UnOp",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "variants": [
-          {
-            "ident": "Deref",
-            "fields": [
-              {
-                "token": {
-                  "repr": "*",
-                  "ty": "Star"
-                }
-              }
-            ]
-          },
-          {
-            "ident": "Not",
-            "fields": [
-              {
-                "token": {
-                  "repr": "!",
-                  "ty": "Bang"
-                }
-              }
-            ]
-          },
-          {
-            "ident": "Neg",
-            "fields": [
-              {
-                "token": {
-                  "repr": "-",
-                  "ty": "Sub"
-                }
-              }
-            ]
-          }
+      "node": "enum",
+      "ident": "Visibility",
+      "features": {
+        "any": [
+          "full",
+          "derive"
         ]
-      }
-    },
-    {
-      "struct": {
-        "ident": "UseGlob",
-        "features": {
-          "any": [
-            "full"
+      },
+      "variants": [
+        {
+          "ident": "Public",
+          "fields": [
+            {
+              "item": "VisPublic"
+            }
           ]
         },
-        "fields": [
-          {
-            "ident": "star_token",
-            "ty": {
-              "token": {
-                "repr": "*",
-                "ty": "Star"
-              }
+        {
+          "ident": "Crate",
+          "fields": [
+            {
+              "item": "VisCrate"
             }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "UseGroup",
-        "features": {
-          "any": [
-            "full"
           ]
         },
-        "fields": [
-          {
-            "ident": "brace_token",
-            "ty": {
-              "token_group": "Brace"
+        {
+          "ident": "Restricted",
+          "fields": [
+            {
+              "item": "VisRestricted"
             }
-          },
-          {
-            "ident": "items",
-            "ty": {
-              "punctuated": [
-                {
-                  "item": "UseTree"
-                },
-                {
-                  "repr": ",",
-                  "ty": "Comma"
-                }
-              ]
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "UseName",
-        "features": {
-          "any": [
-            "full"
           ]
         },
-        "fields": [
-          {
-            "ident": "ident",
-            "ty": {
-              "item": "Ident"
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
+        {
+          "ident": "Inherited",
+          "fields": []
+        }
+      ]
     },
     {
-      "struct": {
-        "ident": "UsePath",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "ident",
-            "ty": {
-              "item": "Ident"
-            }
-          },
-          {
-            "ident": "colon2_token",
-            "ty": {
-              "token": {
-                "repr": "::",
-                "ty": "Colon2"
-              }
-            }
-          },
-          {
-            "ident": "tree",
-            "ty": {
-              "box": {
-                "item": "UseTree"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "UseRename",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "ident",
-            "ty": {
-              "item": "Ident"
-            }
-          },
-          {
-            "ident": "as_token",
-            "ty": {
-              "token": {
-                "repr": "as",
-                "ty": "As"
-              }
-            }
-          },
-          {
-            "ident": "rename",
-            "ty": {
-              "item": "Ident"
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "enum": {
-        "ident": "UseTree",
-        "features": {
-          "any": [
-            "full"
-          ]
-        },
-        "variants": [
-          {
-            "ident": "Path",
-            "fields": [
-              {
-                "item": "UsePath"
-              }
-            ]
-          },
-          {
-            "ident": "Name",
-            "fields": [
-              {
-                "item": "UseName"
-              }
-            ]
-          },
-          {
-            "ident": "Rename",
-            "fields": [
-              {
-                "item": "UseRename"
-              }
-            ]
-          },
-          {
-            "ident": "Glob",
-            "fields": [
-              {
-                "item": "UseGlob"
-              }
-            ]
-          },
-          {
-            "ident": "Group",
-            "fields": [
-              {
-                "item": "UseGroup"
-              }
-            ]
-          }
+      "node": "struct",
+      "ident": "WhereClause",
+      "features": {
+        "any": [
+          "full",
+          "derive"
         ]
-      }
-    },
-    {
-      "struct": {
-        "ident": "Variant",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
+      },
+      "fields": [
+        {
+          "ident": "where_token",
+          "type": {
+            "token": {
+              "repr": "where",
+              "type": "Where"
+            }
+          }
         },
-        "fields": [
-          {
-            "ident": "attrs",
-            "ty": {
-              "vec": {
-                "item": "Attribute"
-              }
-            }
-          },
-          {
-            "ident": "ident",
-            "ty": {
-              "item": "Ident"
-            }
-          },
-          {
-            "ident": "fields",
-            "ty": {
-              "item": "Fields"
-            }
-          },
-          {
-            "ident": "discriminant",
-            "ty": {
-              "option": {
-                "tuple": [
-                  {
-                    "token": {
-                      "repr": "=",
-                      "ty": "Eq"
-                    }
-                  },
-                  {
-                    "item": "Expr"
-                  }
-                ]
+        {
+          "ident": "predicates",
+          "type": {
+            "punctuated": {
+              "element": {
+                "item": "WherePredicate"
+              },
+              "punct": {
+                "repr": ",",
+                "type": "Comma"
               }
             }
           }
-        ],
-        "all_fields_pub": true
-      }
+        }
+      ],
+      "all_fields_pub": true
     },
     {
-      "struct": {
-        "ident": "VisCrate",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "crate_token",
-            "ty": {
-              "token": {
-                "repr": "crate",
-                "ty": "Crate"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "VisPublic",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "pub_token",
-            "ty": {
-              "token": {
-                "repr": "pub",
-                "ty": "Pub"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "struct": {
-        "ident": "VisRestricted",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "fields": [
-          {
-            "ident": "pub_token",
-            "ty": {
-              "token": {
-                "repr": "pub",
-                "ty": "Pub"
-              }
-            }
-          },
-          {
-            "ident": "paren_token",
-            "ty": {
-              "token_group": "Paren"
-            }
-          },
-          {
-            "ident": "in_token",
-            "ty": {
-              "option": {
-                "token": {
-                  "repr": "in",
-                  "ty": "In"
-                }
-              }
-            }
-          },
-          {
-            "ident": "path",
-            "ty": {
-              "box": {
-                "item": "Path"
-              }
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "enum": {
-        "ident": "Visibility",
-        "features": {
-          "any": [
-            "full",
-            "derive"
-          ]
-        },
-        "variants": [
-          {
-            "ident": "Public",
-            "fields": [
-              {
-                "item": "VisPublic"
-              }
-            ]
-          },
-          {
-            "ident": "Crate",
-            "fields": [
-              {
-                "item": "VisCrate"
-              }
-            ]
-          },
-          {
-            "ident": "Restricted",
-            "fields": [
-              {
-                "item": "VisRestricted"
-              }
-            ]
-          },
-          {
-            "ident": "Inherited",
-            "fields": []
-          }
+      "node": "enum",
+      "ident": "WherePredicate",
+      "features": {
+        "any": [
+          "full",
+          "derive"
         ]
-      }
-    },
-    {
-      "struct": {
-        "ident": "WhereClause",
-        "features": {
-          "any": [
-            "full",
-            "derive"
+      },
+      "variants": [
+        {
+          "ident": "Type",
+          "fields": [
+            {
+              "item": "PredicateType"
+            }
           ]
         },
-        "fields": [
-          {
-            "ident": "where_token",
-            "ty": {
-              "token": {
-                "repr": "where",
-                "ty": "Where"
-              }
+        {
+          "ident": "Lifetime",
+          "fields": [
+            {
+              "item": "PredicateLifetime"
             }
-          },
-          {
-            "ident": "predicates",
-            "ty": {
-              "punctuated": [
-                {
-                  "item": "WherePredicate"
-                },
-                {
-                  "repr": ",",
-                  "ty": "Comma"
-                }
-              ]
-            }
-          }
-        ],
-        "all_fields_pub": true
-      }
-    },
-    {
-      "enum": {
-        "ident": "WherePredicate",
-        "features": {
-          "any": [
-            "full",
-            "derive"
           ]
         },
-        "variants": [
-          {
-            "ident": "Type",
-            "fields": [
-              {
-                "item": "PredicateType"
-              }
-            ]
-          },
-          {
-            "ident": "Lifetime",
-            "fields": [
-              {
-                "item": "PredicateLifetime"
-              }
-            ]
-          },
-          {
-            "ident": "Eq",
-            "fields": [
-              {
-                "item": "PredicateEq"
-              }
-            ]
-          }
-        ]
-      }
+        {
+          "ident": "Eq",
+          "fields": [
+            {
+              "item": "PredicateEq"
+            }
+          ]
+        }
+      ]
     }
   ]
 }
\ No newline at end of file