[
  {
    "type": "_declaration_statement",
    "named": true,
    "subtypes": [
      {
        "type": "associated_type",
        "named": true
      },
      {
        "type": "attribute_item",
        "named": true
      },
      {
        "type": "const_item",
        "named": true
      },
      {
        "type": "empty_statement",
        "named": true
      },
      {
        "type": "enum_item",
        "named": true
      },
      {
        "type": "extern_crate_declaration",
        "named": true
      },
      {
        "type": "foreign_mod_item",
        "named": true
      },
      {
        "type": "function_item",
        "named": true
      },
      {
        "type": "function_signature_item",
        "named": true
      },
      {
        "type": "impl_item",
        "named": true
      },
      {
        "type": "inner_attribute_item",
        "named": true
      },
      {
        "type": "let_declaration",
        "named": true
      },
      {
        "type": "macro_definition",
        "named": true
      },
      {
        "type": "macro_invocation",
        "named": true
      },
      {
        "type": "mod_item",
        "named": true
      },
      {
        "type": "static_item",
        "named": true
      },
      {
        "type": "struct_item",
        "named": true
      },
      {
        "type": "trait_item",
        "named": true
      },
      {
        "type": "type_item",
        "named": true
      },
      {
        "type": "union_item",
        "named": true
      },
      {
        "type": "use_declaration",
        "named": true
      }
    ]
  },
  {
    "type": "_expression",
    "named": true,
    "subtypes": [
      {
        "type": "_literal",
        "named": true
      },
      {
        "type": "array_expression",
        "named": true
      },
      {
        "type": "assignment_expression",
        "named": true
      },
      {
        "type": "async_block",
        "named": true
      },
      {
        "type": "await_expression",
        "named": true
      },
      {
        "type": "binary_expression",
        "named": true
      },
      {
        "type": "block",
        "named": true
      },
      {
        "type": "break_expression",
        "named": true
      },
      {
        "type": "call_expression",
        "named": true
      },
      {
        "type": "closure_expression",
        "named": true
      },
      {
        "type": "compound_assignment_expr",
        "named": true
      },
      {
        "type": "const_block",
        "named": true
      },
      {
        "type": "continue_expression",
        "named": true
      },
      {
        "type": "field_expression",
        "named": true
      },
      {
        "type": "for_expression",
        "named": true
      },
      {
        "type": "generic_function",
        "named": true
      },
      {
        "type": "identifier",
        "named": true
      },
      {
        "type": "if_expression",
        "named": true
      },
      {
        "type": "if_let_expression",
        "named": true
      },
      {
        "type": "index_expression",
        "named": true
      },
      {
        "type": "loop_expression",
        "named": true
      },
      {
        "type": "macro_invocation",
        "named": true
      },
      {
        "type": "match_expression",
        "named": true
      },
      {
        "type": "metavariable",
        "named": true
      },
      {
        "type": "parenthesized_expression",
        "named": true
      },
      {
        "type": "range_expression",
        "named": true
      },
      {
        "type": "reference_expression",
        "named": true
      },
      {
        "type": "return_expression",
        "named": true
      },
      {
        "type": "scoped_identifier",
        "named": true
      },
      {
        "type": "self",
        "named": true
      },
      {
        "type": "struct_expression",
        "named": true
      },
      {
        "type": "try_expression",
        "named": true
      },
      {
        "type": "tuple_expression",
        "named": true
      },
      {
        "type": "type_cast_expression",
        "named": true
      },
      {
        "type": "unary_expression",
        "named": true
      },
      {
        "type": "unit_expression",
        "named": true
      },
      {
        "type": "unsafe_block",
        "named": true
      },
      {
        "type": "while_expression",
        "named": true
      },
      {
        "type": "while_let_expression",
        "named": true
      }
    ]
  },
  {
    "type": "_literal",
    "named": true,
    "subtypes": [
      {
        "type": "boolean_literal",
        "named": true
      },
      {
        "type": "char_literal",
        "named": true
      },
      {
        "type": "float_literal",
        "named": true
      },
      {
        "type": "integer_literal",
        "named": true
      },
      {
        "type": "raw_string_literal",
        "named": true
      },
      {
        "type": "string_literal",
        "named": true
      }
    ]
  },
  {
    "type": "_literal_pattern",
    "named": true,
    "subtypes": [
      {
        "type": "boolean_literal",
        "named": true
      },
      {
        "type": "char_literal",
        "named": true
      },
      {
        "type": "float_literal",
        "named": true
      },
      {
        "type": "integer_literal",
        "named": true
      },
      {
        "type": "negative_literal",
        "named": true
      },
      {
        "type": "raw_string_literal",
        "named": true
      },
      {
        "type": "string_literal",
        "named": true
      }
    ]
  },
  {
    "type": "_pattern",
    "named": true,
    "subtypes": [
      {
        "type": "_",
        "named": false
      },
      {
        "type": "_literal_pattern",
        "named": true
      },
      {
        "type": "captured_pattern",
        "named": true
      },
      {
        "type": "const_block",
        "named": true
      },
      {
        "type": "identifier",
        "named": true
      },
      {
        "type": "mut_pattern",
        "named": true
      },
      {
        "type": "or_pattern",
        "named": true
      },
      {
        "type": "range_pattern",
        "named": true
      },
      {
        "type": "ref_pattern",
        "named": true
      },
      {
        "type": "reference_pattern",
        "named": true
      },
      {
        "type": "remaining_field_pattern",
        "named": true
      },
      {
        "type": "scoped_identifier",
        "named": true
      },
      {
        "type": "slice_pattern",
        "named": true
      },
      {
        "type": "struct_pattern",
        "named": true
      },
      {
        "type": "tuple_pattern",
        "named": true
      },
      {
        "type": "tuple_struct_pattern",
        "named": true
      }
    ]
  },
  {
    "type": "_type",
    "named": true,
    "subtypes": [
      {
        "type": "abstract_type",
        "named": true
      },
      {
        "type": "array_type",
        "named": true
      },
      {
        "type": "bounded_type",
        "named": true
      },
      {
        "type": "dynamic_type",
        "named": true
      },
      {
        "type": "empty_type",
        "named": true
      },
      {
        "type": "function_type",
        "named": true
      },
      {
        "type": "generic_type",
        "named": true
      },
      {
        "type": "macro_invocation",
        "named": true
      },
      {
        "type": "metavariable",
        "named": true
      },
      {
        "type": "pointer_type",
        "named": true
      },
      {
        "type": "primitive_type",
        "named": true
      },
      {
        "type": "reference_type",
        "named": true
      },
      {
        "type": "scoped_type_identifier",
        "named": true
      },
      {
        "type": "tuple_type",
        "named": true
      },
      {
        "type": "type_identifier",
        "named": true
      },
      {
        "type": "unit_type",
        "named": true
      }
    ]
  },
  {
    "type": "abstract_type",
    "named": true,
    "fields": {
      "trait": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "generic_type",
            "named": true
          },
          {
            "type": "scoped_type_identifier",
            "named": true
          },
          {
            "type": "type_identifier",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "arguments",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_expression",
          "named": true
        },
        {
          "type": "attribute_item",
          "named": true
        }
      ]
    }
  },
  {
    "type": "array_expression",
    "named": true,
    "fields": {
      "length": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_expression",
          "named": true
        },
        {
          "type": "attribute_item",
          "named": true
        }
      ]
    }
  },
  {
    "type": "array_type",
    "named": true,
    "fields": {
      "element": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_type",
            "named": true
          }
        ]
      },
      "length": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "assignment_expression",
    "named": true,
    "fields": {
      "left": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      },
      "right": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "associated_type",
    "named": true,
    "fields": {
      "bounds": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "trait_bounds",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "type_identifier",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "async_block",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "block",
          "named": true
        }
      ]
    }
  },
  {
    "type": "attribute_item",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "meta_item",
          "named": true
        }
      ]
    }
  },
  {
    "type": "await_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "base_field_initializer",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "binary_expression",
    "named": true,
    "fields": {
      "left": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      },
      "operator": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "%",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "&&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "|",
            "named": false
          },
          {
            "type": "||",
            "named": false
          }
        ]
      },
      "right": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "block",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_declaration_statement",
          "named": true
        },
        {
          "type": "_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "boolean_literal",
    "named": true,
    "fields": {}
  },
  {
    "type": "bounded_type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "_type",
          "named": true
        },
        {
          "type": "lifetime",
          "named": true
        }
      ]
    }
  },
  {
    "type": "bracketed_type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_type",
          "named": true
        },
        {
          "type": "qualified_type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "break_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_expression",
          "named": true
        },
        {
          "type": "loop_label",
          "named": true
        }
      ]
    }
  },
  {
    "type": "call_expression",
    "named": true,
    "fields": {
      "arguments": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "arguments",
            "named": true
          }
        ]
      },
      "function": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "captured_pattern",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "_pattern",
          "named": true
        }
      ]
    }
  },
  {
    "type": "closure_expression",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      },
      "parameters": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "closure_parameters",
            "named": true
          }
        ]
      },
      "return_type": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_type",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "closure_parameters",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_pattern",
          "named": true
        },
        {
          "type": "parameter",
          "named": true
        }
      ]
    }
  },
  {
    "type": "compound_assignment_expr",
    "named": true,
    "fields": {
      "left": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      },
      "operator": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "%=",
            "named": false
          },
          {
            "type": "&=",
            "named": false
          },
          {
            "type": "*=",
            "named": false
          },
          {
            "type": "+=",
            "named": false
          },
          {
            "type": "-=",
            "named": false
          },
          {
            "type": "/=",
            "named": false
          },
          {
            "type": "<<=",
            "named": false
          },
          {
            "type": ">>=",
            "named": false
          },
          {
            "type": "^=",
            "named": false
          },
          {
            "type": "|=",
            "named": false
          }
        ]
      },
      "right": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "const_block",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "block",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "const_item",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_type",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "visibility_modifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "const_parameter",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_type",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "constrained_type_parameter",
    "named": true,
    "fields": {
      "bounds": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "trait_bounds",
            "named": true
          }
        ]
      },
      "left": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "lifetime",
            "named": true
          },
          {
            "type": "type_identifier",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "continue_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "loop_label",
          "named": true
        }
      ]
    }
  },
  {
    "type": "declaration_list",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_declaration_statement",
          "named": true
        }
      ]
    }
  },
  {
    "type": "dynamic_type",
    "named": true,
    "fields": {
      "trait": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "function_type",
            "named": true
          },
          {
            "type": "generic_type",
            "named": true
          },
          {
            "type": "scoped_type_identifier",
            "named": true
          },
          {
            "type": "type_identifier",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "else_clause",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "block",
          "named": true
        },
        {
          "type": "if_expression",
          "named": true
        },
        {
          "type": "if_let_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "empty_statement",
    "named": true,
    "fields": {}
  },
  {
    "type": "empty_type",
    "named": true,
    "fields": {}
  },
  {
    "type": "enum_item",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "enum_variant_list",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "type_identifier",
            "named": true
          }
        ]
      },
      "type_parameters": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "type_parameters",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "visibility_modifier",
          "named": true
        },
        {
          "type": "where_clause",
          "named": true
        }
      ]
    }
  },
  {
    "type": "enum_variant",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "field_declaration_list",
            "named": true
          },
          {
            "type": "ordered_field_declaration_list",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "visibility_modifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "enum_variant_list",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "attribute_item",
          "named": true
        },
        {
          "type": "enum_variant",
          "named": true
        }
      ]
    }
  },
  {
    "type": "extern_crate_declaration",
    "named": true,
    "fields": {
      "alias": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "crate",
          "named": true
        },
        {
          "type": "visibility_modifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "extern_modifier",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "string_literal",
          "named": true
        }
      ]
    }
  },
  {
    "type": "field_declaration",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "field_identifier",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_type",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "visibility_modifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "field_declaration_list",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "attribute_item",
          "named": true
        },
        {
          "type": "field_declaration",
          "named": true
        }
      ]
    }
  },
  {
    "type": "field_expression",
    "named": true,
    "fields": {
      "field": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "field_identifier",
            "named": true
          },
          {
            "type": "integer_literal",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "field_initializer",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "field_identifier",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "attribute_item",
          "named": true
        }
      ]
    }
  },
  {
    "type": "field_initializer_list",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "base_field_initializer",
          "named": true
        },
        {
          "type": "field_initializer",
          "named": true
        },
        {
          "type": "shorthand_field_initializer",
          "named": true
        }
      ]
    }
  },
  {
    "type": "field_pattern",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "field_identifier",
            "named": true
          },
          {
            "type": "shorthand_field_identifier",
            "named": true
          }
        ]
      },
      "pattern": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_pattern",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "mutable_specifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "for_expression",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "block",
            "named": true
          }
        ]
      },
      "pattern": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_pattern",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "loop_label",
          "named": true
        }
      ]
    }
  },
  {
    "type": "for_lifetimes",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "lifetime",
          "named": true
        }
      ]
    }
  },
  {
    "type": "foreign_mod_item",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "declaration_list",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "extern_modifier",
          "named": true
        },
        {
          "type": "visibility_modifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "fragment_specifier",
    "named": true,
    "fields": {}
  },
  {
    "type": "function_item",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "block",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "metavariable",
            "named": true
          }
        ]
      },
      "parameters": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "parameters",
            "named": true
          }
        ]
      },
      "return_type": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_type",
            "named": true
          }
        ]
      },
      "type_parameters": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "type_parameters",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "function_modifiers",
          "named": true
        },
        {
          "type": "visibility_modifier",
          "named": true
        },
        {
          "type": "where_clause",
          "named": true
        }
      ]
    }
  },
  {
    "type": "function_modifiers",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "extern_modifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "function_signature_item",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "metavariable",
            "named": true
          }
        ]
      },
      "parameters": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "parameters",
            "named": true
          }
        ]
      },
      "return_type": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_type",
            "named": true
          }
        ]
      },
      "type_parameters": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "type_parameters",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "function_modifiers",
          "named": true
        },
        {
          "type": "visibility_modifier",
          "named": true
        },
        {
          "type": "where_clause",
          "named": true
        }
      ]
    }
  },
  {
    "type": "function_type",
    "named": true,
    "fields": {
      "parameters": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "parameters",
            "named": true
          }
        ]
      },
      "return_type": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_type",
            "named": true
          }
        ]
      },
      "trait": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "scoped_type_identifier",
            "named": true
          },
          {
            "type": "type_identifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "for_lifetimes",
          "named": true
        },
        {
          "type": "function_modifiers",
          "named": true
        }
      ]
    }
  },
  {
    "type": "generic_function",
    "named": true,
    "fields": {
      "function": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "field_expression",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "scoped_identifier",
            "named": true
          }
        ]
      },
      "type_arguments": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "type_arguments",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "generic_type",
    "named": true,
    "fields": {
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "scoped_identifier",
            "named": true
          },
          {
            "type": "scoped_type_identifier",
            "named": true
          },
          {
            "type": "type_identifier",
            "named": true
          }
        ]
      },
      "type_arguments": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "type_arguments",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "generic_type_with_turbofish",
    "named": true,
    "fields": {
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "scoped_identifier",
            "named": true
          },
          {
            "type": "type_identifier",
            "named": true
          }
        ]
      },
      "type_arguments": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "type_arguments",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "higher_ranked_trait_bound",
    "named": true,
    "fields": {
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_type",
            "named": true
          }
        ]
      },
      "type_parameters": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "type_parameters",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "if_expression",
    "named": true,
    "fields": {
      "alternative": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "else_clause",
            "named": true
          }
        ]
      },
      "condition": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      },
      "consequence": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "block",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "if_let_expression",
    "named": true,
    "fields": {
      "alternative": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "else_clause",
            "named": true
          }
        ]
      },
      "consequence": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "block",
            "named": true
          }
        ]
      },
      "pattern": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_pattern",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "impl_item",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "declaration_list",
            "named": true
          }
        ]
      },
      "trait": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "generic_type",
            "named": true
          },
          {
            "type": "scoped_type_identifier",
            "named": true
          },
          {
            "type": "type_identifier",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_type",
            "named": true
          }
        ]
      },
      "type_parameters": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "type_parameters",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "where_clause",
          "named": true
        }
      ]
    }
  },
  {
    "type": "index_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "inner_attribute_item",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "meta_item",
          "named": true
        }
      ]
    }
  },
  {
    "type": "let_declaration",
    "named": true,
    "fields": {
      "pattern": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_pattern",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_type",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "mutable_specifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "lifetime",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "loop_expression",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "block",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "loop_label",
          "named": true
        }
      ]
    }
  },
  {
    "type": "loop_label",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "macro_definition",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "macro_rule",
          "named": true
        }
      ]
    }
  },
  {
    "type": "macro_invocation",
    "named": true,
    "fields": {
      "macro": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "scoped_identifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "token_tree",
          "named": true
        }
      ]
    }
  },
  {
    "type": "macro_rule",
    "named": true,
    "fields": {
      "left": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "token_tree_pattern",
            "named": true
          }
        ]
      },
      "right": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "token_tree",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "match_arm",
    "named": true,
    "fields": {
      "pattern": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "macro_invocation",
            "named": true
          },
          {
            "type": "match_pattern",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "attribute_item",
          "named": true
        }
      ]
    }
  },
  {
    "type": "match_block",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "match_arm",
          "named": true
        }
      ]
    }
  },
  {
    "type": "match_expression",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "match_block",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "match_pattern",
    "named": true,
    "fields": {
      "condition": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_pattern",
          "named": true
        }
      ]
    }
  },
  {
    "type": "meta_arguments",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_literal",
          "named": true
        },
        {
          "type": "meta_item",
          "named": true
        }
      ]
    }
  },
  {
    "type": "meta_item",
    "named": true,
    "fields": {
      "arguments": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "meta_arguments",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_literal",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "crate",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "metavariable",
          "named": true
        },
        {
          "type": "scoped_identifier",
          "named": true
        },
        {
          "type": "self",
          "named": true
        },
        {
          "type": "super",
          "named": true
        }
      ]
    }
  },
  {
    "type": "mod_item",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "declaration_list",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "visibility_modifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "mut_pattern",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "_pattern",
          "named": true
        },
        {
          "type": "mutable_specifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "negative_literal",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "float_literal",
          "named": true
        },
        {
          "type": "integer_literal",
          "named": true
        }
      ]
    }
  },
  {
    "type": "optional_type_parameter",
    "named": true,
    "fields": {
      "default_type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_type",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "constrained_type_parameter",
            "named": true
          },
          {
            "type": "type_identifier",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "or_pattern",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "_pattern",
          "named": true
        }
      ]
    }
  },
  {
    "type": "ordered_field_declaration_list",
    "named": true,
    "fields": {
      "type": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "_type",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "attribute_item",
          "named": true
        },
        {
          "type": "visibility_modifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "parameter",
    "named": true,
    "fields": {
      "pattern": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_pattern",
            "named": true
          },
          {
            "type": "self",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_type",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "mutable_specifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "parameters",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_type",
          "named": true
        },
        {
          "type": "attribute_item",
          "named": true
        },
        {
          "type": "parameter",
          "named": true
        },
        {
          "type": "self_parameter",
          "named": true
        },
        {
          "type": "variadic_parameter",
          "named": true
        }
      ]
    }
  },
  {
    "type": "parenthesized_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "pointer_type",
    "named": true,
    "fields": {
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_type",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "mutable_specifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "qualified_type",
    "named": true,
    "fields": {
      "alias": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_type",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_type",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "range_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "range_pattern",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "_literal_pattern",
          "named": true
        },
        {
          "type": "crate",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "metavariable",
          "named": true
        },
        {
          "type": "scoped_identifier",
          "named": true
        },
        {
          "type": "self",
          "named": true
        },
        {
          "type": "super",
          "named": true
        }
      ]
    }
  },
  {
    "type": "ref_pattern",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_pattern",
          "named": true
        }
      ]
    }
  },
  {
    "type": "reference_expression",
    "named": true,
    "fields": {
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "mutable_specifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "reference_pattern",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "_pattern",
          "named": true
        },
        {
          "type": "mutable_specifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "reference_type",
    "named": true,
    "fields": {
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_type",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "lifetime",
          "named": true
        },
        {
          "type": "mutable_specifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "remaining_field_pattern",
    "named": true,
    "fields": {}
  },
  {
    "type": "removed_trait_bound",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "return_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "scoped_identifier",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "path": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "bracketed_type",
            "named": true
          },
          {
            "type": "crate",
            "named": true
          },
          {
            "type": "generic_type",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "metavariable",
            "named": true
          },
          {
            "type": "scoped_identifier",
            "named": true
          },
          {
            "type": "self",
            "named": true
          },
          {
            "type": "super",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "scoped_type_identifier",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "type_identifier",
            "named": true
          }
        ]
      },
      "path": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "bracketed_type",
            "named": true
          },
          {
            "type": "crate",
            "named": true
          },
          {
            "type": "generic_type",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "metavariable",
            "named": true
          },
          {
            "type": "scoped_identifier",
            "named": true
          },
          {
            "type": "self",
            "named": true
          },
          {
            "type": "super",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "scoped_use_list",
    "named": true,
    "fields": {
      "list": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "use_list",
            "named": true
          }
        ]
      },
      "path": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "crate",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "metavariable",
            "named": true
          },
          {
            "type": "scoped_identifier",
            "named": true
          },
          {
            "type": "self",
            "named": true
          },
          {
            "type": "super",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "self_parameter",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "lifetime",
          "named": true
        },
        {
          "type": "mutable_specifier",
          "named": true
        },
        {
          "type": "self",
          "named": true
        }
      ]
    }
  },
  {
    "type": "shorthand_field_initializer",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "attribute_item",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "slice_pattern",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_pattern",
          "named": true
        }
      ]
    }
  },
  {
    "type": "source_file",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_declaration_statement",
          "named": true
        },
        {
          "type": "_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "static_item",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_type",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "mutable_specifier",
          "named": true
        },
        {
          "type": "visibility_modifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "string_literal",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "escape_sequence",
          "named": true
        }
      ]
    }
  },
  {
    "type": "struct_expression",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "field_initializer_list",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "generic_type_with_turbofish",
            "named": true
          },
          {
            "type": "scoped_type_identifier",
            "named": true
          },
          {
            "type": "type_identifier",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "struct_item",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "field_declaration_list",
            "named": true
          },
          {
            "type": "ordered_field_declaration_list",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "type_identifier",
            "named": true
          }
        ]
      },
      "type_parameters": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "type_parameters",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "visibility_modifier",
          "named": true
        },
        {
          "type": "where_clause",
          "named": true
        }
      ]
    }
  },
  {
    "type": "struct_pattern",
    "named": true,
    "fields": {
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "scoped_type_identifier",
            "named": true
          },
          {
            "type": "type_identifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "field_pattern",
          "named": true
        },
        {
          "type": "remaining_field_pattern",
          "named": true
        }
      ]
    }
  },
  {
    "type": "token_binding_pattern",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "metavariable",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "fragment_specifier",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "token_repetition",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_literal",
          "named": true
        },
        {
          "type": "crate",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "metavariable",
          "named": true
        },
        {
          "type": "mutable_specifier",
          "named": true
        },
        {
          "type": "primitive_type",
          "named": true
        },
        {
          "type": "self",
          "named": true
        },
        {
          "type": "super",
          "named": true
        },
        {
          "type": "token_repetition",
          "named": true
        },
        {
          "type": "token_tree",
          "named": true
        }
      ]
    }
  },
  {
    "type": "token_repetition_pattern",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_literal",
          "named": true
        },
        {
          "type": "crate",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "metavariable",
          "named": true
        },
        {
          "type": "mutable_specifier",
          "named": true
        },
        {
          "type": "primitive_type",
          "named": true
        },
        {
          "type": "self",
          "named": true
        },
        {
          "type": "super",
          "named": true
        },
        {
          "type": "token_binding_pattern",
          "named": true
        },
        {
          "type": "token_repetition_pattern",
          "named": true
        },
        {
          "type": "token_tree_pattern",
          "named": true
        }
      ]
    }
  },
  {
    "type": "token_tree",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_literal",
          "named": true
        },
        {
          "type": "crate",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "metavariable",
          "named": true
        },
        {
          "type": "mutable_specifier",
          "named": true
        },
        {
          "type": "primitive_type",
          "named": true
        },
        {
          "type": "self",
          "named": true
        },
        {
          "type": "super",
          "named": true
        },
        {
          "type": "token_repetition",
          "named": true
        },
        {
          "type": "token_tree",
          "named": true
        }
      ]
    }
  },
  {
    "type": "token_tree_pattern",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_literal",
          "named": true
        },
        {
          "type": "crate",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "metavariable",
          "named": true
        },
        {
          "type": "mutable_specifier",
          "named": true
        },
        {
          "type": "primitive_type",
          "named": true
        },
        {
          "type": "self",
          "named": true
        },
        {
          "type": "super",
          "named": true
        },
        {
          "type": "token_binding_pattern",
          "named": true
        },
        {
          "type": "token_repetition_pattern",
          "named": true
        },
        {
          "type": "token_tree_pattern",
          "named": true
        }
      ]
    }
  },
  {
    "type": "trait_bounds",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "_type",
          "named": true
        },
        {
          "type": "higher_ranked_trait_bound",
          "named": true
        },
        {
          "type": "lifetime",
          "named": true
        },
        {
          "type": "removed_trait_bound",
          "named": true
        }
      ]
    }
  },
  {
    "type": "trait_item",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "declaration_list",
            "named": true
          }
        ]
      },
      "bounds": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "trait_bounds",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "type_identifier",
            "named": true
          }
        ]
      },
      "type_parameters": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "type_parameters",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "visibility_modifier",
          "named": true
        },
        {
          "type": "where_clause",
          "named": true
        }
      ]
    }
  },
  {
    "type": "try_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "tuple_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "_expression",
          "named": true
        },
        {
          "type": "attribute_item",
          "named": true
        }
      ]
    }
  },
  {
    "type": "tuple_pattern",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_pattern",
          "named": true
        }
      ]
    }
  },
  {
    "type": "tuple_struct_pattern",
    "named": true,
    "fields": {
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "scoped_identifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_pattern",
          "named": true
        }
      ]
    }
  },
  {
    "type": "tuple_type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "_type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "type_arguments",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "_literal",
          "named": true
        },
        {
          "type": "_type",
          "named": true
        },
        {
          "type": "block",
          "named": true
        },
        {
          "type": "lifetime",
          "named": true
        },
        {
          "type": "type_binding",
          "named": true
        }
      ]
    }
  },
  {
    "type": "type_binding",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "type_identifier",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_type",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "type_cast_expression",
    "named": true,
    "fields": {
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_type",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "type_item",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "type_identifier",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_type",
            "named": true
          }
        ]
      },
      "type_parameters": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "type_parameters",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "visibility_modifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "type_parameters",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "const_parameter",
          "named": true
        },
        {
          "type": "constrained_type_parameter",
          "named": true
        },
        {
          "type": "lifetime",
          "named": true
        },
        {
          "type": "metavariable",
          "named": true
        },
        {
          "type": "optional_type_parameter",
          "named": true
        },
        {
          "type": "type_identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "unary_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "union_item",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "field_declaration_list",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "type_identifier",
            "named": true
          }
        ]
      },
      "type_parameters": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "type_parameters",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "visibility_modifier",
          "named": true
        },
        {
          "type": "where_clause",
          "named": true
        }
      ]
    }
  },
  {
    "type": "unit_expression",
    "named": true,
    "fields": {}
  },
  {
    "type": "unit_type",
    "named": true,
    "fields": {}
  },
  {
    "type": "unsafe_block",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "block",
          "named": true
        }
      ]
    }
  },
  {
    "type": "use_as_clause",
    "named": true,
    "fields": {
      "alias": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      },
      "path": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "crate",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "metavariable",
            "named": true
          },
          {
            "type": "scoped_identifier",
            "named": true
          },
          {
            "type": "self",
            "named": true
          },
          {
            "type": "super",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "use_declaration",
    "named": true,
    "fields": {
      "argument": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "crate",
            "named": true
          },
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "metavariable",
            "named": true
          },
          {
            "type": "scoped_identifier",
            "named": true
          },
          {
            "type": "scoped_use_list",
            "named": true
          },
          {
            "type": "self",
            "named": true
          },
          {
            "type": "super",
            "named": true
          },
          {
            "type": "use_as_clause",
            "named": true
          },
          {
            "type": "use_list",
            "named": true
          },
          {
            "type": "use_wildcard",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "visibility_modifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "use_list",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "crate",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "metavariable",
          "named": true
        },
        {
          "type": "scoped_identifier",
          "named": true
        },
        {
          "type": "scoped_use_list",
          "named": true
        },
        {
          "type": "self",
          "named": true
        },
        {
          "type": "super",
          "named": true
        },
        {
          "type": "use_as_clause",
          "named": true
        },
        {
          "type": "use_list",
          "named": true
        },
        {
          "type": "use_wildcard",
          "named": true
        }
      ]
    }
  },
  {
    "type": "use_wildcard",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "crate",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "metavariable",
          "named": true
        },
        {
          "type": "scoped_identifier",
          "named": true
        },
        {
          "type": "self",
          "named": true
        },
        {
          "type": "super",
          "named": true
        }
      ]
    }
  },
  {
    "type": "variadic_parameter",
    "named": true,
    "fields": {}
  },
  {
    "type": "visibility_modifier",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "crate",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "metavariable",
          "named": true
        },
        {
          "type": "scoped_identifier",
          "named": true
        },
        {
          "type": "self",
          "named": true
        },
        {
          "type": "super",
          "named": true
        }
      ]
    }
  },
  {
    "type": "where_clause",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "where_predicate",
          "named": true
        }
      ]
    }
  },
  {
    "type": "where_predicate",
    "named": true,
    "fields": {
      "bounds": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "trait_bounds",
            "named": true
          }
        ]
      },
      "left": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "generic_type",
            "named": true
          },
          {
            "type": "higher_ranked_trait_bound",
            "named": true
          },
          {
            "type": "lifetime",
            "named": true
          },
          {
            "type": "pointer_type",
            "named": true
          },
          {
            "type": "primitive_type",
            "named": true
          },
          {
            "type": "reference_type",
            "named": true
          },
          {
            "type": "scoped_type_identifier",
            "named": true
          },
          {
            "type": "tuple_type",
            "named": true
          },
          {
            "type": "type_identifier",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "while_expression",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "block",
            "named": true
          }
        ]
      },
      "condition": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "loop_label",
          "named": true
        }
      ]
    }
  },
  {
    "type": "while_let_expression",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "block",
            "named": true
          }
        ]
      },
      "pattern": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_pattern",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expression",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "loop_label",
          "named": true
        }
      ]
    }
  },
  {
    "type": "!",
    "named": false
  },
  {
    "type": "!=",
    "named": false
  },
  {
    "type": "\"",
    "named": false
  },
  {
    "type": "#",
    "named": false
  },
  {
    "type": "$",
    "named": false
  },
  {
    "type": "%",
    "named": false
  },
  {
    "type": "%=",
    "named": false
  },
  {
    "type": "&",
    "named": false
  },
  {
    "type": "&&",
    "named": false
  },
  {
    "type": "&=",
    "named": false
  },
  {
    "type": "'",
    "named": false
  },
  {
    "type": "(",
    "named": false
  },
  {
    "type": ")",
    "named": false
  },
  {
    "type": "*",
    "named": false
  },
  {
    "type": "*=",
    "named": false
  },
  {
    "type": "+",
    "named": false
  },
  {
    "type": "+=",
    "named": false
  },
  {
    "type": ",",
    "named": false
  },
  {
    "type": "-",
    "named": false
  },
  {
    "type": "-=",
    "named": false
  },
  {
    "type": "->",
    "named": false
  },
  {
    "type": ".",
    "named": false
  },
  {
    "type": "..",
    "named": false
  },
  {
    "type": "...",
    "named": false
  },
  {
    "type": "..=",
    "named": false
  },
  {
    "type": "/",
    "named": false
  },
  {
    "type": "/=",
    "named": false
  },
  {
    "type": ":",
    "named": false
  },
  {
    "type": "::",
    "named": false
  },
  {
    "type": ";",
    "named": false
  },
  {
    "type": "<",
    "named": false
  },
  {
    "type": "<<",
    "named": false
  },
  {
    "type": "<<=",
    "named": false
  },
  {
    "type": "<=",
    "named": false
  },
  {
    "type": "=",
    "named": false
  },
  {
    "type": "==",
    "named": false
  },
  {
    "type": "=>",
    "named": false
  },
  {
    "type": ">",
    "named": false
  },
  {
    "type": ">=",
    "named": false
  },
  {
    "type": ">>",
    "named": false
  },
  {
    "type": ">>=",
    "named": false
  },
  {
    "type": "?",
    "named": false
  },
  {
    "type": "@",
    "named": false
  },
  {
    "type": "[",
    "named": false
  },
  {
    "type": "]",
    "named": false
  },
  {
    "type": "^",
    "named": false
  },
  {
    "type": "^=",
    "named": false
  },
  {
    "type": "_",
    "named": false
  },
  {
    "type": "as",
    "named": false
  },
  {
    "type": "async",
    "named": false
  },
  {
    "type": "await",
    "named": false
  },
  {
    "type": "block",
    "named": false
  },
  {
    "type": "block_comment",
    "named": true
  },
  {
    "type": "break",
    "named": false
  },
  {
    "type": "char_literal",
    "named": true
  },
  {
    "type": "const",
    "named": false
  },
  {
    "type": "continue",
    "named": false
  },
  {
    "type": "crate",
    "named": true
  },
  {
    "type": "default",
    "named": false
  },
  {
    "type": "dyn",
    "named": false
  },
  {
    "type": "else",
    "named": false
  },
  {
    "type": "enum",
    "named": false
  },
  {
    "type": "escape_sequence",
    "named": true
  },
  {
    "type": "expr",
    "named": false
  },
  {
    "type": "extern",
    "named": false
  },
  {
    "type": "false",
    "named": false
  },
  {
    "type": "field_identifier",
    "named": true
  },
  {
    "type": "float_literal",
    "named": true
  },
  {
    "type": "fn",
    "named": false
  },
  {
    "type": "for",
    "named": false
  },
  {
    "type": "ident",
    "named": false
  },
  {
    "type": "identifier",
    "named": true
  },
  {
    "type": "if",
    "named": false
  },
  {
    "type": "impl",
    "named": false
  },
  {
    "type": "in",
    "named": false
  },
  {
    "type": "integer_literal",
    "named": true
  },
  {
    "type": "item",
    "named": false
  },
  {
    "type": "let",
    "named": false
  },
  {
    "type": "lifetime",
    "named": false
  },
  {
    "type": "line_comment",
    "named": true
  },
  {
    "type": "literal",
    "named": false
  },
  {
    "type": "loop",
    "named": false
  },
  {
    "type": "macro_rules!",
    "named": false
  },
  {
    "type": "match",
    "named": false
  },
  {
    "type": "meta",
    "named": false
  },
  {
    "type": "metavariable",
    "named": true
  },
  {
    "type": "mod",
    "named": false
  },
  {
    "type": "move",
    "named": false
  },
  {
    "type": "mutable_specifier",
    "named": true
  },
  {
    "type": "pat",
    "named": false
  },
  {
    "type": "path",
    "named": false
  },
  {
    "type": "primitive_type",
    "named": true
  },
  {
    "type": "pub",
    "named": false
  },
  {
    "type": "raw_string_literal",
    "named": true
  },
  {
    "type": "ref",
    "named": false
  },
  {
    "type": "return",
    "named": false
  },
  {
    "type": "self",
    "named": true
  },
  {
    "type": "shorthand_field_identifier",
    "named": true
  },
  {
    "type": "static",
    "named": false
  },
  {
    "type": "stmt",
    "named": false
  },
  {
    "type": "struct",
    "named": false
  },
  {
    "type": "super",
    "named": true
  },
  {
    "type": "trait",
    "named": false
  },
  {
    "type": "true",
    "named": false
  },
  {
    "type": "tt",
    "named": false
  },
  {
    "type": "ty",
    "named": false
  },
  {
    "type": "type",
    "named": false
  },
  {
    "type": "type_identifier",
    "named": true
  },
  {
    "type": "union",
    "named": false
  },
  {
    "type": "unsafe",
    "named": false
  },
  {
    "type": "use",
    "named": false
  },
  {
    "type": "vis",
    "named": false
  },
  {
    "type": "where",
    "named": false
  },
  {
    "type": "while",
    "named": false
  },
  {
    "type": "{",
    "named": false
  },
  {
    "type": "|",
    "named": false
  },
  {
    "type": "|=",
    "named": false
  },
  {
    "type": "||",
    "named": false
  },
  {
    "type": "}",
    "named": false
  }
]