{
  "name": "rust",
  "word": "identifier",
  "rules": {
    "source_file": {
      "type": "REPEAT",
      "content": {
        "type": "SYMBOL",
        "name": "_statement"
      }
    },
    "_statement": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "expression_statement"
        },
        {
          "type": "SYMBOL",
          "name": "_declaration_statement"
        }
      ]
    },
    "empty_statement": {
      "type": "STRING",
      "value": ";"
    },
    "expression_statement": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_expression"
            },
            {
              "type": "STRING",
              "value": ";"
            }
          ]
        },
        {
          "type": "PREC",
          "value": 1,
          "content": {
            "type": "SYMBOL",
            "name": "_expression_ending_with_block"
          }
        }
      ]
    },
    "_declaration_statement": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "const_item"
        },
        {
          "type": "SYMBOL",
          "name": "macro_invocation"
        },
        {
          "type": "SYMBOL",
          "name": "macro_definition"
        },
        {
          "type": "SYMBOL",
          "name": "empty_statement"
        },
        {
          "type": "SYMBOL",
          "name": "attribute_item"
        },
        {
          "type": "SYMBOL",
          "name": "inner_attribute_item"
        },
        {
          "type": "SYMBOL",
          "name": "mod_item"
        },
        {
          "type": "SYMBOL",
          "name": "foreign_mod_item"
        },
        {
          "type": "SYMBOL",
          "name": "struct_item"
        },
        {
          "type": "SYMBOL",
          "name": "union_item"
        },
        {
          "type": "SYMBOL",
          "name": "enum_item"
        },
        {
          "type": "SYMBOL",
          "name": "type_item"
        },
        {
          "type": "SYMBOL",
          "name": "function_item"
        },
        {
          "type": "SYMBOL",
          "name": "function_signature_item"
        },
        {
          "type": "SYMBOL",
          "name": "impl_item"
        },
        {
          "type": "SYMBOL",
          "name": "trait_item"
        },
        {
          "type": "SYMBOL",
          "name": "associated_type"
        },
        {
          "type": "SYMBOL",
          "name": "let_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "use_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "extern_crate_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "static_item"
        }
      ]
    },
    "macro_definition": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "macro_rules!"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "identifier"
              },
              {
                "type": "SYMBOL",
                "name": "_reserved_identifier"
              }
            ]
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "("
                },
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "REPEAT",
                      "content": {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "macro_rule"
                          },
                          {
                            "type": "STRING",
                            "value": ";"
                          }
                        ]
                      }
                    },
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "macro_rule"
                        },
                        {
                          "type": "BLANK"
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "STRING",
                  "value": ")"
                },
                {
                  "type": "STRING",
                  "value": ";"
                }
              ]
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "{"
                },
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "REPEAT",
                      "content": {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "macro_rule"
                          },
                          {
                            "type": "STRING",
                            "value": ";"
                          }
                        ]
                      }
                    },
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "macro_rule"
                        },
                        {
                          "type": "BLANK"
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "STRING",
                  "value": "}"
                }
              ]
            }
          ]
        }
      ]
    },
    "macro_rule": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "left",
          "content": {
            "type": "SYMBOL",
            "name": "token_tree_pattern"
          }
        },
        {
          "type": "STRING",
          "value": "=>"
        },
        {
          "type": "FIELD",
          "name": "right",
          "content": {
            "type": "SYMBOL",
            "name": "token_tree"
          }
        }
      ]
    },
    "_token_pattern": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "token_tree_pattern"
        },
        {
          "type": "SYMBOL",
          "name": "token_repetition_pattern"
        },
        {
          "type": "SYMBOL",
          "name": "token_binding_pattern"
        },
        {
          "type": "SYMBOL",
          "name": "metavariable"
        },
        {
          "type": "SYMBOL",
          "name": "_non_special_token"
        }
      ]
    },
    "token_tree_pattern": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "("
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "_token_pattern"
              }
            },
            {
              "type": "STRING",
              "value": ")"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "["
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "_token_pattern"
              }
            },
            {
              "type": "STRING",
              "value": "]"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "{"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "_token_pattern"
              }
            },
            {
              "type": "STRING",
              "value": "}"
            }
          ]
        }
      ]
    },
    "token_binding_pattern": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "name",
            "content": {
              "type": "SYMBOL",
              "name": "metavariable"
            }
          },
          {
            "type": "STRING",
            "value": ":"
          },
          {
            "type": "FIELD",
            "name": "type",
            "content": {
              "type": "SYMBOL",
              "name": "fragment_specifier"
            }
          }
        ]
      }
    },
    "token_repetition_pattern": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "$"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_token_pattern"
          }
        },
        {
          "type": "STRING",
          "value": ")"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "PATTERN",
              "value": "[^+*?]+"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "+"
            },
            {
              "type": "STRING",
              "value": "*"
            },
            {
              "type": "STRING",
              "value": "?"
            }
          ]
        }
      ]
    },
    "fragment_specifier": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "block"
        },
        {
          "type": "STRING",
          "value": "expr"
        },
        {
          "type": "STRING",
          "value": "ident"
        },
        {
          "type": "STRING",
          "value": "item"
        },
        {
          "type": "STRING",
          "value": "lifetime"
        },
        {
          "type": "STRING",
          "value": "literal"
        },
        {
          "type": "STRING",
          "value": "meta"
        },
        {
          "type": "STRING",
          "value": "pat"
        },
        {
          "type": "STRING",
          "value": "path"
        },
        {
          "type": "STRING",
          "value": "stmt"
        },
        {
          "type": "STRING",
          "value": "tt"
        },
        {
          "type": "STRING",
          "value": "ty"
        },
        {
          "type": "STRING",
          "value": "vis"
        }
      ]
    },
    "_tokens": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "token_tree"
        },
        {
          "type": "SYMBOL",
          "name": "token_repetition"
        },
        {
          "type": "SYMBOL",
          "name": "metavariable"
        },
        {
          "type": "SYMBOL",
          "name": "_non_special_token"
        }
      ]
    },
    "token_tree": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "("
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "_tokens"
              }
            },
            {
              "type": "STRING",
              "value": ")"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "["
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "_tokens"
              }
            },
            {
              "type": "STRING",
              "value": "]"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "{"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "_tokens"
              }
            },
            {
              "type": "STRING",
              "value": "}"
            }
          ]
        }
      ]
    },
    "token_repetition": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "$"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_tokens"
          }
        },
        {
          "type": "STRING",
          "value": ")"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "PATTERN",
              "value": "[^+*?]+"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "+"
            },
            {
              "type": "STRING",
              "value": "*"
            },
            {
              "type": "STRING",
              "value": "?"
            }
          ]
        }
      ]
    },
    "_non_special_token": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_literal"
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "SYMBOL",
          "name": "mutable_specifier"
        },
        {
          "type": "SYMBOL",
          "name": "self"
        },
        {
          "type": "SYMBOL",
          "name": "super"
        },
        {
          "type": "SYMBOL",
          "name": "crate"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "u8"
              },
              {
                "type": "STRING",
                "value": "i8"
              },
              {
                "type": "STRING",
                "value": "u16"
              },
              {
                "type": "STRING",
                "value": "i16"
              },
              {
                "type": "STRING",
                "value": "u32"
              },
              {
                "type": "STRING",
                "value": "i32"
              },
              {
                "type": "STRING",
                "value": "u64"
              },
              {
                "type": "STRING",
                "value": "i64"
              },
              {
                "type": "STRING",
                "value": "u128"
              },
              {
                "type": "STRING",
                "value": "i128"
              },
              {
                "type": "STRING",
                "value": "isize"
              },
              {
                "type": "STRING",
                "value": "usize"
              },
              {
                "type": "STRING",
                "value": "f32"
              },
              {
                "type": "STRING",
                "value": "f64"
              },
              {
                "type": "STRING",
                "value": "bool"
              },
              {
                "type": "STRING",
                "value": "str"
              },
              {
                "type": "STRING",
                "value": "char"
              }
            ]
          },
          "named": true,
          "value": "primitive_type"
        },
        {
          "type": "PATTERN",
          "value": "[/_\\-=->,;:::!=?.@*&#%^+<>|~]+"
        },
        {
          "type": "STRING",
          "value": "'"
        },
        {
          "type": "STRING",
          "value": "as"
        },
        {
          "type": "STRING",
          "value": "async"
        },
        {
          "type": "STRING",
          "value": "await"
        },
        {
          "type": "STRING",
          "value": "break"
        },
        {
          "type": "STRING",
          "value": "const"
        },
        {
          "type": "STRING",
          "value": "continue"
        },
        {
          "type": "STRING",
          "value": "default"
        },
        {
          "type": "STRING",
          "value": "enum"
        },
        {
          "type": "STRING",
          "value": "fn"
        },
        {
          "type": "STRING",
          "value": "for"
        },
        {
          "type": "STRING",
          "value": "if"
        },
        {
          "type": "STRING",
          "value": "impl"
        },
        {
          "type": "STRING",
          "value": "let"
        },
        {
          "type": "STRING",
          "value": "loop"
        },
        {
          "type": "STRING",
          "value": "match"
        },
        {
          "type": "STRING",
          "value": "mod"
        },
        {
          "type": "STRING",
          "value": "pub"
        },
        {
          "type": "STRING",
          "value": "return"
        },
        {
          "type": "STRING",
          "value": "static"
        },
        {
          "type": "STRING",
          "value": "struct"
        },
        {
          "type": "STRING",
          "value": "trait"
        },
        {
          "type": "STRING",
          "value": "type"
        },
        {
          "type": "STRING",
          "value": "union"
        },
        {
          "type": "STRING",
          "value": "unsafe"
        },
        {
          "type": "STRING",
          "value": "use"
        },
        {
          "type": "STRING",
          "value": "where"
        },
        {
          "type": "STRING",
          "value": "while"
        }
      ]
    },
    "attribute_item": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "#"
        },
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "SYMBOL",
          "name": "attribute"
        },
        {
          "type": "STRING",
          "value": "]"
        }
      ]
    },
    "inner_attribute_item": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "#"
        },
        {
          "type": "STRING",
          "value": "!"
        },
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "SYMBOL",
          "name": "attribute"
        },
        {
          "type": "STRING",
          "value": "]"
        }
      ]
    },
    "attribute": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_path"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "="
                    },
                    {
                      "type": "FIELD",
                      "name": "value",
                      "content": {
                        "type": "SYMBOL",
                        "name": "_expression"
                      }
                    }
                  ]
                },
                {
                  "type": "FIELD",
                  "name": "arguments",
                  "content": {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "delim_token_tree"
                    },
                    "named": true,
                    "value": "token_tree"
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "mod_item": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "visibility_modifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "mod"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ";"
            },
            {
              "type": "FIELD",
              "name": "body",
              "content": {
                "type": "SYMBOL",
                "name": "declaration_list"
              }
            }
          ]
        }
      ]
    },
    "foreign_mod_item": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "visibility_modifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "extern_modifier"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ";"
            },
            {
              "type": "FIELD",
              "name": "body",
              "content": {
                "type": "SYMBOL",
                "name": "declaration_list"
              }
            }
          ]
        }
      ]
    },
    "declaration_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_declaration_statement"
          }
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "struct_item": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "visibility_modifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "struct"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "_type_identifier"
          }
        },
        {
          "type": "FIELD",
          "name": "type_parameters",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "type_parameters"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "where_clause"
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "FIELD",
                  "name": "body",
                  "content": {
                    "type": "SYMBOL",
                    "name": "field_declaration_list"
                  }
                }
              ]
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "FIELD",
                  "name": "body",
                  "content": {
                    "type": "SYMBOL",
                    "name": "ordered_field_declaration_list"
                  }
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "where_clause"
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "STRING",
                  "value": ";"
                }
              ]
            },
            {
              "type": "STRING",
              "value": ";"
            }
          ]
        }
      ]
    },
    "union_item": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "visibility_modifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "union"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "_type_identifier"
          }
        },
        {
          "type": "FIELD",
          "name": "type_parameters",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "type_parameters"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "where_clause"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "field_declaration_list"
          }
        }
      ]
    },
    "enum_item": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "visibility_modifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "enum"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "_type_identifier"
          }
        },
        {
          "type": "FIELD",
          "name": "type_parameters",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "type_parameters"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "where_clause"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "enum_variant_list"
          }
        }
      ]
    },
    "enum_variant_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "REPEAT",
                      "content": {
                        "type": "SYMBOL",
                        "name": "attribute_item"
                      }
                    },
                    {
                      "type": "SYMBOL",
                      "name": "enum_variant"
                    }
                  ]
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "REPEAT",
                            "content": {
                              "type": "SYMBOL",
                              "name": "attribute_item"
                            }
                          },
                          {
                            "type": "SYMBOL",
                            "name": "enum_variant"
                          }
                        ]
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ","
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "enum_variant": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "visibility_modifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "field_declaration_list"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "ordered_field_declaration_list"
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "="
                },
                {
                  "type": "FIELD",
                  "name": "value",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_expression"
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "field_declaration_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "REPEAT",
                      "content": {
                        "type": "SYMBOL",
                        "name": "attribute_item"
                      }
                    },
                    {
                      "type": "SYMBOL",
                      "name": "field_declaration"
                    }
                  ]
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "REPEAT",
                            "content": {
                              "type": "SYMBOL",
                              "name": "attribute_item"
                            }
                          },
                          {
                            "type": "SYMBOL",
                            "name": "field_declaration"
                          }
                        ]
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ","
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "field_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "visibility_modifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "_field_identifier"
          }
        },
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "_type"
          }
        }
      ]
    },
    "ordered_field_declaration_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "REPEAT",
                      "content": {
                        "type": "SYMBOL",
                        "name": "attribute_item"
                      }
                    },
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "visibility_modifier"
                        },
                        {
                          "type": "BLANK"
                        }
                      ]
                    },
                    {
                      "type": "FIELD",
                      "name": "type",
                      "content": {
                        "type": "SYMBOL",
                        "name": "_type"
                      }
                    }
                  ]
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "REPEAT",
                            "content": {
                              "type": "SYMBOL",
                              "name": "attribute_item"
                            }
                          },
                          {
                            "type": "CHOICE",
                            "members": [
                              {
                                "type": "SYMBOL",
                                "name": "visibility_modifier"
                              },
                              {
                                "type": "BLANK"
                              }
                            ]
                          },
                          {
                            "type": "FIELD",
                            "name": "type",
                            "content": {
                              "type": "SYMBOL",
                              "name": "_type"
                            }
                          }
                        ]
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ","
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "extern_crate_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "visibility_modifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "extern"
        },
        {
          "type": "SYMBOL",
          "name": "crate"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "as"
                },
                {
                  "type": "FIELD",
                  "name": "alias",
                  "content": {
                    "type": "SYMBOL",
                    "name": "identifier"
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "const_item": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "visibility_modifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "const"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "_type"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "="
                },
                {
                  "type": "FIELD",
                  "name": "value",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_expression"
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "static_item": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "visibility_modifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "static"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "ref"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "mutable_specifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "_type"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "="
                },
                {
                  "type": "FIELD",
                  "name": "value",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_expression"
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "type_item": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "visibility_modifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "type"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "_type_identifier"
          }
        },
        {
          "type": "FIELD",
          "name": "type_parameters",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "type_parameters"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "="
        },
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "_type"
          }
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "function_item": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "visibility_modifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "function_modifiers"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "fn"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "identifier"
              },
              {
                "type": "SYMBOL",
                "name": "metavariable"
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "type_parameters",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "type_parameters"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "parameters",
          "content": {
            "type": "SYMBOL",
            "name": "parameters"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "->"
                },
                {
                  "type": "FIELD",
                  "name": "return_type",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_type"
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "where_clause"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "block"
          }
        }
      ]
    },
    "function_signature_item": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "visibility_modifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "function_modifiers"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "fn"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "identifier"
              },
              {
                "type": "SYMBOL",
                "name": "metavariable"
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "type_parameters",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "type_parameters"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "parameters",
          "content": {
            "type": "SYMBOL",
            "name": "parameters"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "->"
                },
                {
                  "type": "FIELD",
                  "name": "return_type",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_type"
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "where_clause"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "function_modifiers": {
      "type": "REPEAT1",
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "STRING",
            "value": "async"
          },
          {
            "type": "STRING",
            "value": "default"
          },
          {
            "type": "STRING",
            "value": "const"
          },
          {
            "type": "STRING",
            "value": "unsafe"
          },
          {
            "type": "SYMBOL",
            "name": "extern_modifier"
          }
        ]
      }
    },
    "where_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "where"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "where_predicate"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "where_predicate"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ","
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "where_predicate": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "left",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "lifetime"
              },
              {
                "type": "SYMBOL",
                "name": "_type_identifier"
              },
              {
                "type": "SYMBOL",
                "name": "scoped_type_identifier"
              },
              {
                "type": "SYMBOL",
                "name": "generic_type"
              },
              {
                "type": "SYMBOL",
                "name": "reference_type"
              },
              {
                "type": "SYMBOL",
                "name": "pointer_type"
              },
              {
                "type": "SYMBOL",
                "name": "tuple_type"
              },
              {
                "type": "SYMBOL",
                "name": "higher_ranked_trait_bound"
              },
              {
                "type": "ALIAS",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "u8"
                    },
                    {
                      "type": "STRING",
                      "value": "i8"
                    },
                    {
                      "type": "STRING",
                      "value": "u16"
                    },
                    {
                      "type": "STRING",
                      "value": "i16"
                    },
                    {
                      "type": "STRING",
                      "value": "u32"
                    },
                    {
                      "type": "STRING",
                      "value": "i32"
                    },
                    {
                      "type": "STRING",
                      "value": "u64"
                    },
                    {
                      "type": "STRING",
                      "value": "i64"
                    },
                    {
                      "type": "STRING",
                      "value": "u128"
                    },
                    {
                      "type": "STRING",
                      "value": "i128"
                    },
                    {
                      "type": "STRING",
                      "value": "isize"
                    },
                    {
                      "type": "STRING",
                      "value": "usize"
                    },
                    {
                      "type": "STRING",
                      "value": "f32"
                    },
                    {
                      "type": "STRING",
                      "value": "f64"
                    },
                    {
                      "type": "STRING",
                      "value": "bool"
                    },
                    {
                      "type": "STRING",
                      "value": "str"
                    },
                    {
                      "type": "STRING",
                      "value": "char"
                    }
                  ]
                },
                "named": true,
                "value": "primitive_type"
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "bounds",
          "content": {
            "type": "SYMBOL",
            "name": "trait_bounds"
          }
        }
      ]
    },
    "impl_item": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "unsafe"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "impl"
        },
        {
          "type": "FIELD",
          "name": "type_parameters",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "type_parameters"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "FIELD",
                  "name": "trait",
                  "content": {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "_type_identifier"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "scoped_type_identifier"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "generic_type"
                      }
                    ]
                  }
                },
                {
                  "type": "STRING",
                  "value": "for"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "_type"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "where_clause"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "body",
              "content": {
                "type": "SYMBOL",
                "name": "declaration_list"
              }
            },
            {
              "type": "STRING",
              "value": ";"
            }
          ]
        }
      ]
    },
    "trait_item": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "visibility_modifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "unsafe"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "trait"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "_type_identifier"
          }
        },
        {
          "type": "FIELD",
          "name": "type_parameters",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "type_parameters"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "bounds",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "trait_bounds"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "where_clause"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "declaration_list"
          }
        }
      ]
    },
    "associated_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "type"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "_type_identifier"
          }
        },
        {
          "type": "FIELD",
          "name": "type_parameters",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "type_parameters"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "bounds",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "trait_bounds"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "trait_bounds": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_type"
                },
                {
                  "type": "SYMBOL",
                  "name": "lifetime"
                },
                {
                  "type": "SYMBOL",
                  "name": "higher_ranked_trait_bound"
                },
                {
                  "type": "SYMBOL",
                  "name": "removed_trait_bound"
                }
              ]
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": "+"
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "_type"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "lifetime"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "higher_ranked_trait_bound"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "removed_trait_bound"
                      }
                    ]
                  }
                ]
              }
            }
          ]
        }
      ]
    },
    "higher_ranked_trait_bound": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "for"
        },
        {
          "type": "FIELD",
          "name": "type_parameters",
          "content": {
            "type": "SYMBOL",
            "name": "type_parameters"
          }
        },
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "_type"
          }
        }
      ]
    },
    "removed_trait_bound": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "?"
        },
        {
          "type": "SYMBOL",
          "name": "_type"
        }
      ]
    },
    "type_parameters": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "<"
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "lifetime"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "metavariable"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "_type_identifier"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "constrained_type_parameter"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "optional_type_parameter"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "const_parameter"
                  }
                ]
              },
              {
                "type": "REPEAT",
                "content": {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "lifetime"
                        },
                        {
                          "type": "SYMBOL",
                          "name": "metavariable"
                        },
                        {
                          "type": "SYMBOL",
                          "name": "_type_identifier"
                        },
                        {
                          "type": "SYMBOL",
                          "name": "constrained_type_parameter"
                        },
                        {
                          "type": "SYMBOL",
                          "name": "optional_type_parameter"
                        },
                        {
                          "type": "SYMBOL",
                          "name": "const_parameter"
                        }
                      ]
                    }
                  ]
                }
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": ","
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "STRING",
            "value": ">"
          }
        ]
      }
    },
    "const_parameter": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "const"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "_type"
          }
        }
      ]
    },
    "constrained_type_parameter": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "left",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "lifetime"
              },
              {
                "type": "SYMBOL",
                "name": "_type_identifier"
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "bounds",
          "content": {
            "type": "SYMBOL",
            "name": "trait_bounds"
          }
        }
      ]
    },
    "optional_type_parameter": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_type_identifier"
              },
              {
                "type": "SYMBOL",
                "name": "constrained_type_parameter"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "="
        },
        {
          "type": "FIELD",
          "name": "default_type",
          "content": {
            "type": "SYMBOL",
            "name": "_type"
          }
        }
      ]
    },
    "let_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "let"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "mutable_specifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "pattern",
          "content": {
            "type": "SYMBOL",
            "name": "_pattern"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": ":"
                },
                {
                  "type": "FIELD",
                  "name": "type",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_type"
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "="
                },
                {
                  "type": "FIELD",
                  "name": "value",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_expression"
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "else"
                },
                {
                  "type": "FIELD",
                  "name": "alternative",
                  "content": {
                    "type": "SYMBOL",
                    "name": "block"
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "use_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "visibility_modifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "use"
        },
        {
          "type": "FIELD",
          "name": "argument",
          "content": {
            "type": "SYMBOL",
            "name": "_use_clause"
          }
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "_use_clause": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_path"
        },
        {
          "type": "SYMBOL",
          "name": "use_as_clause"
        },
        {
          "type": "SYMBOL",
          "name": "use_list"
        },
        {
          "type": "SYMBOL",
          "name": "scoped_use_list"
        },
        {
          "type": "SYMBOL",
          "name": "use_wildcard"
        }
      ]
    },
    "scoped_use_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "path",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_path"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "::"
        },
        {
          "type": "FIELD",
          "name": "list",
          "content": {
            "type": "SYMBOL",
            "name": "use_list"
          }
        }
      ]
    },
    "use_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "_use_clause"
                    }
                  ]
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "_use_clause"
                          }
                        ]
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ","
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "use_as_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "path",
          "content": {
            "type": "SYMBOL",
            "name": "_path"
          }
        },
        {
          "type": "STRING",
          "value": "as"
        },
        {
          "type": "FIELD",
          "name": "alias",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        }
      ]
    },
    "use_wildcard": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_path"
                },
                {
                  "type": "STRING",
                  "value": "::"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "*"
        }
      ]
    },
    "parameters": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "attribute_item"
                        },
                        {
                          "type": "BLANK"
                        }
                      ]
                    },
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "parameter"
                        },
                        {
                          "type": "SYMBOL",
                          "name": "self_parameter"
                        },
                        {
                          "type": "SYMBOL",
                          "name": "variadic_parameter"
                        },
                        {
                          "type": "STRING",
                          "value": "_"
                        },
                        {
                          "type": "SYMBOL",
                          "name": "_type"
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "CHOICE",
                            "members": [
                              {
                                "type": "SYMBOL",
                                "name": "attribute_item"
                              },
                              {
                                "type": "BLANK"
                              }
                            ]
                          },
                          {
                            "type": "CHOICE",
                            "members": [
                              {
                                "type": "SYMBOL",
                                "name": "parameter"
                              },
                              {
                                "type": "SYMBOL",
                                "name": "self_parameter"
                              },
                              {
                                "type": "SYMBOL",
                                "name": "variadic_parameter"
                              },
                              {
                                "type": "STRING",
                                "value": "_"
                              },
                              {
                                "type": "SYMBOL",
                                "name": "_type"
                              }
                            ]
                          }
                        ]
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ","
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "self_parameter": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "&"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "lifetime"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "mutable_specifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "self"
        }
      ]
    },
    "variadic_parameter": {
      "type": "STRING",
      "value": "..."
    },
    "parameter": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "mutable_specifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "pattern",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_pattern"
              },
              {
                "type": "SYMBOL",
                "name": "self"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "_type"
          }
        }
      ]
    },
    "extern_modifier": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "extern"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "string_literal"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "visibility_modifier": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "crate"
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "pub"
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "("
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "self"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "super"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "crate"
                          },
                          {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "STRING",
                                "value": "in"
                              },
                              {
                                "type": "SYMBOL",
                                "name": "_path"
                              }
                            ]
                          }
                        ]
                      },
                      {
                        "type": "STRING",
                        "value": ")"
                      }
                    ]
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          }
        ]
      }
    },
    "_type": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "abstract_type"
        },
        {
          "type": "SYMBOL",
          "name": "reference_type"
        },
        {
          "type": "SYMBOL",
          "name": "metavariable"
        },
        {
          "type": "SYMBOL",
          "name": "pointer_type"
        },
        {
          "type": "SYMBOL",
          "name": "generic_type"
        },
        {
          "type": "SYMBOL",
          "name": "scoped_type_identifier"
        },
        {
          "type": "SYMBOL",
          "name": "tuple_type"
        },
        {
          "type": "SYMBOL",
          "name": "unit_type"
        },
        {
          "type": "SYMBOL",
          "name": "array_type"
        },
        {
          "type": "SYMBOL",
          "name": "function_type"
        },
        {
          "type": "SYMBOL",
          "name": "_type_identifier"
        },
        {
          "type": "SYMBOL",
          "name": "macro_invocation"
        },
        {
          "type": "SYMBOL",
          "name": "empty_type"
        },
        {
          "type": "SYMBOL",
          "name": "dynamic_type"
        },
        {
          "type": "SYMBOL",
          "name": "bounded_type"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "u8"
              },
              {
                "type": "STRING",
                "value": "i8"
              },
              {
                "type": "STRING",
                "value": "u16"
              },
              {
                "type": "STRING",
                "value": "i16"
              },
              {
                "type": "STRING",
                "value": "u32"
              },
              {
                "type": "STRING",
                "value": "i32"
              },
              {
                "type": "STRING",
                "value": "u64"
              },
              {
                "type": "STRING",
                "value": "i64"
              },
              {
                "type": "STRING",
                "value": "u128"
              },
              {
                "type": "STRING",
                "value": "i128"
              },
              {
                "type": "STRING",
                "value": "isize"
              },
              {
                "type": "STRING",
                "value": "usize"
              },
              {
                "type": "STRING",
                "value": "f32"
              },
              {
                "type": "STRING",
                "value": "f64"
              },
              {
                "type": "STRING",
                "value": "bool"
              },
              {
                "type": "STRING",
                "value": "str"
              },
              {
                "type": "STRING",
                "value": "char"
              }
            ]
          },
          "named": true,
          "value": "primitive_type"
        }
      ]
    },
    "bracketed_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "<"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_type"
            },
            {
              "type": "SYMBOL",
              "name": "qualified_type"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ">"
        }
      ]
    },
    "qualified_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "_type"
          }
        },
        {
          "type": "STRING",
          "value": "as"
        },
        {
          "type": "FIELD",
          "name": "alias",
          "content": {
            "type": "SYMBOL",
            "name": "_type"
          }
        }
      ]
    },
    "lifetime": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "'"
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        }
      ]
    },
    "array_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "FIELD",
          "name": "element",
          "content": {
            "type": "SYMBOL",
            "name": "_type"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": ";"
                },
                {
                  "type": "FIELD",
                  "name": "length",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_expression"
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "]"
        }
      ]
    },
    "for_lifetimes": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "for"
        },
        {
          "type": "STRING",
          "value": "<"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "lifetime"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "lifetime"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ","
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ">"
        }
      ]
    },
    "function_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "for_lifetimes"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "PREC",
          "value": 14,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "trait",
                    "content": {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "_type_identifier"
                        },
                        {
                          "type": "SYMBOL",
                          "name": "scoped_type_identifier"
                        }
                      ]
                    }
                  },
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "function_modifiers"
                          },
                          {
                            "type": "BLANK"
                          }
                        ]
                      },
                      {
                        "type": "STRING",
                        "value": "fn"
                      }
                    ]
                  }
                ]
              },
              {
                "type": "FIELD",
                "name": "parameters",
                "content": {
                  "type": "SYMBOL",
                  "name": "parameters"
                }
              }
            ]
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "->"
                },
                {
                  "type": "FIELD",
                  "name": "return_type",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_type"
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "tuple_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_type"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "_type"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ","
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "unit_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "generic_function": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "function",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "identifier"
                },
                {
                  "type": "SYMBOL",
                  "name": "scoped_identifier"
                },
                {
                  "type": "SYMBOL",
                  "name": "field_expression"
                }
              ]
            }
          },
          {
            "type": "STRING",
            "value": "::"
          },
          {
            "type": "FIELD",
            "name": "type_arguments",
            "content": {
              "type": "SYMBOL",
              "name": "type_arguments"
            }
          }
        ]
      }
    },
    "generic_type": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "type",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_type_identifier"
                },
                {
                  "type": "SYMBOL",
                  "name": "scoped_type_identifier"
                }
              ]
            }
          },
          {
            "type": "FIELD",
            "name": "type_arguments",
            "content": {
              "type": "SYMBOL",
              "name": "type_arguments"
            }
          }
        ]
      }
    },
    "generic_type_with_turbofish": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_type_identifier"
              },
              {
                "type": "SYMBOL",
                "name": "scoped_identifier"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "::"
        },
        {
          "type": "FIELD",
          "name": "type_arguments",
          "content": {
            "type": "SYMBOL",
            "name": "type_arguments"
          }
        }
      ]
    },
    "bounded_type": {
      "type": "PREC_LEFT",
      "value": -1,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "lifetime"
              },
              {
                "type": "STRING",
                "value": "+"
              },
              {
                "type": "SYMBOL",
                "name": "_type"
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_type"
              },
              {
                "type": "STRING",
                "value": "+"
              },
              {
                "type": "SYMBOL",
                "name": "_type"
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_type"
              },
              {
                "type": "STRING",
                "value": "+"
              },
              {
                "type": "SYMBOL",
                "name": "lifetime"
              }
            ]
          }
        ]
      }
    },
    "type_arguments": {
      "type": "SEQ",
      "members": [
        {
          "type": "TOKEN",
          "content": {
            "type": "PREC",
            "value": 1,
            "content": {
              "type": "STRING",
              "value": "<"
            }
          }
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_type"
                },
                {
                  "type": "SYMBOL",
                  "name": "type_binding"
                },
                {
                  "type": "SYMBOL",
                  "name": "lifetime"
                },
                {
                  "type": "SYMBOL",
                  "name": "_literal"
                },
                {
                  "type": "SYMBOL",
                  "name": "block"
                }
              ]
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "_type"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "type_binding"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "lifetime"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_literal"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "block"
                      }
                    ]
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ","
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ">"
        }
      ]
    },
    "type_binding": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "_type_identifier"
          }
        },
        {
          "type": "FIELD",
          "name": "type_arguments",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "type_arguments"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "="
        },
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "_type"
          }
        }
      ]
    },
    "reference_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "&"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "lifetime"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "mutable_specifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "_type"
          }
        }
      ]
    },
    "pointer_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "*"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "const"
            },
            {
              "type": "SYMBOL",
              "name": "mutable_specifier"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "_type"
          }
        }
      ]
    },
    "empty_type": {
      "type": "STRING",
      "value": "!"
    },
    "abstract_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "impl"
        },
        {
          "type": "FIELD",
          "name": "trait",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_type_identifier"
              },
              {
                "type": "SYMBOL",
                "name": "scoped_type_identifier"
              },
              {
                "type": "SYMBOL",
                "name": "generic_type"
              },
              {
                "type": "SYMBOL",
                "name": "function_type"
              }
            ]
          }
        }
      ]
    },
    "dynamic_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "dyn"
        },
        {
          "type": "FIELD",
          "name": "trait",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_type_identifier"
              },
              {
                "type": "SYMBOL",
                "name": "scoped_type_identifier"
              },
              {
                "type": "SYMBOL",
                "name": "generic_type"
              },
              {
                "type": "SYMBOL",
                "name": "function_type"
              }
            ]
          }
        }
      ]
    },
    "mutable_specifier": {
      "type": "STRING",
      "value": "mut"
    },
    "_expression_except_range": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "unary_expression"
        },
        {
          "type": "SYMBOL",
          "name": "reference_expression"
        },
        {
          "type": "SYMBOL",
          "name": "try_expression"
        },
        {
          "type": "SYMBOL",
          "name": "binary_expression"
        },
        {
          "type": "SYMBOL",
          "name": "assignment_expression"
        },
        {
          "type": "SYMBOL",
          "name": "compound_assignment_expr"
        },
        {
          "type": "SYMBOL",
          "name": "type_cast_expression"
        },
        {
          "type": "SYMBOL",
          "name": "call_expression"
        },
        {
          "type": "SYMBOL",
          "name": "return_expression"
        },
        {
          "type": "SYMBOL",
          "name": "yield_expression"
        },
        {
          "type": "SYMBOL",
          "name": "_literal"
        },
        {
          "type": "PREC_LEFT",
          "value": 0,
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "u8"
              },
              {
                "type": "STRING",
                "value": "i8"
              },
              {
                "type": "STRING",
                "value": "u16"
              },
              {
                "type": "STRING",
                "value": "i16"
              },
              {
                "type": "STRING",
                "value": "u32"
              },
              {
                "type": "STRING",
                "value": "i32"
              },
              {
                "type": "STRING",
                "value": "u64"
              },
              {
                "type": "STRING",
                "value": "i64"
              },
              {
                "type": "STRING",
                "value": "u128"
              },
              {
                "type": "STRING",
                "value": "i128"
              },
              {
                "type": "STRING",
                "value": "isize"
              },
              {
                "type": "STRING",
                "value": "usize"
              },
              {
                "type": "STRING",
                "value": "f32"
              },
              {
                "type": "STRING",
                "value": "f64"
              },
              {
                "type": "STRING",
                "value": "bool"
              },
              {
                "type": "STRING",
                "value": "str"
              },
              {
                "type": "STRING",
                "value": "char"
              }
            ]
          },
          "named": true,
          "value": "identifier"
        },
        {
          "type": "PREC_LEFT",
          "value": 0,
          "content": {
            "type": "SYMBOL",
            "name": "_reserved_identifier"
          }
        },
        {
          "type": "SYMBOL",
          "name": "self"
        },
        {
          "type": "SYMBOL",
          "name": "scoped_identifier"
        },
        {
          "type": "SYMBOL",
          "name": "generic_function"
        },
        {
          "type": "SYMBOL",
          "name": "await_expression"
        },
        {
          "type": "SYMBOL",
          "name": "field_expression"
        },
        {
          "type": "SYMBOL",
          "name": "array_expression"
        },
        {
          "type": "SYMBOL",
          "name": "tuple_expression"
        },
        {
          "type": "PREC",
          "value": 1,
          "content": {
            "type": "SYMBOL",
            "name": "macro_invocation"
          }
        },
        {
          "type": "SYMBOL",
          "name": "unit_expression"
        },
        {
          "type": "SYMBOL",
          "name": "break_expression"
        },
        {
          "type": "SYMBOL",
          "name": "continue_expression"
        },
        {
          "type": "SYMBOL",
          "name": "index_expression"
        },
        {
          "type": "SYMBOL",
          "name": "metavariable"
        },
        {
          "type": "SYMBOL",
          "name": "closure_expression"
        },
        {
          "type": "SYMBOL",
          "name": "parenthesized_expression"
        },
        {
          "type": "SYMBOL",
          "name": "struct_expression"
        },
        {
          "type": "SYMBOL",
          "name": "_expression_ending_with_block"
        }
      ]
    },
    "_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_expression_except_range"
        },
        {
          "type": "SYMBOL",
          "name": "range_expression"
        }
      ]
    },
    "_expression_ending_with_block": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "unsafe_block"
        },
        {
          "type": "SYMBOL",
          "name": "async_block"
        },
        {
          "type": "SYMBOL",
          "name": "block"
        },
        {
          "type": "SYMBOL",
          "name": "if_expression"
        },
        {
          "type": "SYMBOL",
          "name": "match_expression"
        },
        {
          "type": "SYMBOL",
          "name": "while_expression"
        },
        {
          "type": "SYMBOL",
          "name": "loop_expression"
        },
        {
          "type": "SYMBOL",
          "name": "for_expression"
        },
        {
          "type": "SYMBOL",
          "name": "const_block"
        }
      ]
    },
    "macro_invocation": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "macro",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "scoped_identifier"
              },
              {
                "type": "SYMBOL",
                "name": "identifier"
              },
              {
                "type": "SYMBOL",
                "name": "_reserved_identifier"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "!"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "delim_token_tree"
          },
          "named": true,
          "value": "token_tree"
        }
      ]
    },
    "delim_token_tree": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "("
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "_delim_tokens"
              }
            },
            {
              "type": "STRING",
              "value": ")"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "["
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "_delim_tokens"
              }
            },
            {
              "type": "STRING",
              "value": "]"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "{"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "_delim_tokens"
              }
            },
            {
              "type": "STRING",
              "value": "}"
            }
          ]
        }
      ]
    },
    "_delim_tokens": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_non_delim_token"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "delim_token_tree"
          },
          "named": true,
          "value": "token_tree"
        }
      ]
    },
    "_non_delim_token": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_non_special_token"
        },
        {
          "type": "STRING",
          "value": "$"
        }
      ]
    },
    "scoped_identifier": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "path",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "_path"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "bracketed_type"
                  },
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "generic_type_with_turbofish"
                    },
                    "named": true,
                    "value": "generic_type"
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "::"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        }
      ]
    },
    "scoped_type_identifier_in_expression_position": {
      "type": "PREC",
      "value": -2,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "path",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "_path"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "generic_type_with_turbofish"
                      },
                      "named": true,
                      "value": "generic_type"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          },
          {
            "type": "STRING",
            "value": "::"
          },
          {
            "type": "FIELD",
            "name": "name",
            "content": {
              "type": "SYMBOL",
              "name": "_type_identifier"
            }
          }
        ]
      }
    },
    "scoped_type_identifier": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "path",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "_path"
                  },
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "generic_type_with_turbofish"
                    },
                    "named": true,
                    "value": "generic_type"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "bracketed_type"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "generic_type"
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "::"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "_type_identifier"
          }
        }
      ]
    },
    "range_expression": {
      "type": "PREC_LEFT",
      "value": 15,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_expression"
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": ".."
                  },
                  {
                    "type": "STRING",
                    "value": "..."
                  },
                  {
                    "type": "STRING",
                    "value": "..="
                  }
                ]
              },
              {
                "type": "SYMBOL",
                "name": "_expression"
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_expression"
              },
              {
                "type": "STRING",
                "value": ".."
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": ".."
              },
              {
                "type": "SYMBOL",
                "name": "_expression"
              }
            ]
          },
          {
            "type": "STRING",
            "value": ".."
          }
        ]
      }
    },
    "unary_expression": {
      "type": "PREC",
      "value": 12,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "-"
              },
              {
                "type": "STRING",
                "value": "*"
              },
              {
                "type": "STRING",
                "value": "!"
              }
            ]
          },
          {
            "type": "SYMBOL",
            "name": "_expression"
          }
        ]
      }
    },
    "try_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_expression"
        },
        {
          "type": "STRING",
          "value": "?"
        }
      ]
    },
    "reference_expression": {
      "type": "PREC",
      "value": 12,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "&"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "mutable_specifier"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "FIELD",
            "name": "value",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          }
        ]
      }
    },
    "binary_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PREC_LEFT",
          "value": 3,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "&&"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 2,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "||"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 7,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "&"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 5,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "|"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 6,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "^"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 4,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "=="
                    },
                    {
                      "type": "STRING",
                      "value": "!="
                    },
                    {
                      "type": "STRING",
                      "value": "<"
                    },
                    {
                      "type": "STRING",
                      "value": "<="
                    },
                    {
                      "type": "STRING",
                      "value": ">"
                    },
                    {
                      "type": "STRING",
                      "value": ">="
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 8,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "<<"
                    },
                    {
                      "type": "STRING",
                      "value": ">>"
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 9,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "+"
                    },
                    {
                      "type": "STRING",
                      "value": "-"
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 10,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "*"
                    },
                    {
                      "type": "STRING",
                      "value": "/"
                    },
                    {
                      "type": "STRING",
                      "value": "%"
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        }
      ]
    },
    "assignment_expression": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "left",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          },
          {
            "type": "STRING",
            "value": "="
          },
          {
            "type": "FIELD",
            "name": "right",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          }
        ]
      }
    },
    "compound_assignment_expr": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "left",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          },
          {
            "type": "FIELD",
            "name": "operator",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": "+="
                },
                {
                  "type": "STRING",
                  "value": "-="
                },
                {
                  "type": "STRING",
                  "value": "*="
                },
                {
                  "type": "STRING",
                  "value": "/="
                },
                {
                  "type": "STRING",
                  "value": "%="
                },
                {
                  "type": "STRING",
                  "value": "&="
                },
                {
                  "type": "STRING",
                  "value": "|="
                },
                {
                  "type": "STRING",
                  "value": "^="
                },
                {
                  "type": "STRING",
                  "value": "<<="
                },
                {
                  "type": "STRING",
                  "value": ">>="
                }
              ]
            }
          },
          {
            "type": "FIELD",
            "name": "right",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          }
        ]
      }
    },
    "type_cast_expression": {
      "type": "PREC_LEFT",
      "value": 11,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "value",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          },
          {
            "type": "STRING",
            "value": "as"
          },
          {
            "type": "FIELD",
            "name": "type",
            "content": {
              "type": "SYMBOL",
              "name": "_type"
            }
          }
        ]
      }
    },
    "return_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PREC_LEFT",
          "value": 0,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "return"
              },
              {
                "type": "SYMBOL",
                "name": "_expression"
              }
            ]
          }
        },
        {
          "type": "PREC",
          "value": -1,
          "content": {
            "type": "STRING",
            "value": "return"
          }
        }
      ]
    },
    "yield_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PREC_LEFT",
          "value": 0,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "yield"
              },
              {
                "type": "SYMBOL",
                "name": "_expression"
              }
            ]
          }
        },
        {
          "type": "PREC",
          "value": -1,
          "content": {
            "type": "STRING",
            "value": "yield"
          }
        }
      ]
    },
    "call_expression": {
      "type": "PREC",
      "value": 14,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "function",
            "content": {
              "type": "SYMBOL",
              "name": "_expression_except_range"
            }
          },
          {
            "type": "FIELD",
            "name": "arguments",
            "content": {
              "type": "SYMBOL",
              "name": "arguments"
            }
          }
        ]
      }
    },
    "arguments": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "REPEAT",
                      "content": {
                        "type": "SYMBOL",
                        "name": "attribute_item"
                      }
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  ]
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "REPEAT",
                            "content": {
                              "type": "SYMBOL",
                              "name": "attribute_item"
                            }
                          },
                          {
                            "type": "SYMBOL",
                            "name": "_expression"
                          }
                        ]
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ","
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "array_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "attribute_item"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_expression"
                },
                {
                  "type": "STRING",
                  "value": ";"
                },
                {
                  "type": "FIELD",
                  "name": "length",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_expression"
                  }
                }
              ]
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "_expression"
                        },
                        {
                          "type": "REPEAT",
                          "content": {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "STRING",
                                "value": ","
                              },
                              {
                                "type": "SYMBOL",
                                "name": "_expression"
                              }
                            ]
                          }
                        }
                      ]
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "type": "STRING",
          "value": "]"
        }
      ]
    },
    "parenthesized_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "_expression"
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "tuple_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "attribute_item"
          }
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_expression"
            },
            {
              "type": "STRING",
              "value": ","
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_expression"
              },
              {
                "type": "STRING",
                "value": ","
              }
            ]
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_expression"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "unit_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "struct_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_type_identifier"
              },
              {
                "type": "ALIAS",
                "content": {
                  "type": "SYMBOL",
                  "name": "scoped_type_identifier_in_expression_position"
                },
                "named": true,
                "value": "scoped_type_identifier"
              },
              {
                "type": "SYMBOL",
                "name": "generic_type_with_turbofish"
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "field_initializer_list"
          }
        }
      ]
    },
    "field_initializer_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "shorthand_field_initializer"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "field_initializer"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "base_field_initializer"
                    }
                  ]
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "shorthand_field_initializer"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "field_initializer"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "base_field_initializer"
                          }
                        ]
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ","
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "shorthand_field_initializer": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "attribute_item"
          }
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        }
      ]
    },
    "field_initializer": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "attribute_item"
          }
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "_field_identifier"
          }
        },
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "SYMBOL",
            "name": "_expression"
          }
        }
      ]
    },
    "base_field_initializer": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": ".."
        },
        {
          "type": "SYMBOL",
          "name": "_expression"
        }
      ]
    },
    "if_expression": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "if"
          },
          {
            "type": "FIELD",
            "name": "condition",
            "content": {
              "type": "SYMBOL",
              "name": "_condition"
            }
          },
          {
            "type": "FIELD",
            "name": "consequence",
            "content": {
              "type": "SYMBOL",
              "name": "block"
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "FIELD",
                "name": "alternative",
                "content": {
                  "type": "SYMBOL",
                  "name": "else_clause"
                }
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "let_condition": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "let"
        },
        {
          "type": "FIELD",
          "name": "pattern",
          "content": {
            "type": "SYMBOL",
            "name": "_pattern"
          }
        },
        {
          "type": "STRING",
          "value": "="
        },
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "PREC_LEFT",
            "value": 3,
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          }
        }
      ]
    },
    "_let_chain": {
      "type": "PREC_LEFT",
      "value": 3,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_let_chain"
              },
              {
                "type": "STRING",
                "value": "&&"
              },
              {
                "type": "SYMBOL",
                "name": "let_condition"
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_let_chain"
              },
              {
                "type": "STRING",
                "value": "&&"
              },
              {
                "type": "SYMBOL",
                "name": "_expression"
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "let_condition"
              },
              {
                "type": "STRING",
                "value": "&&"
              },
              {
                "type": "SYMBOL",
                "name": "_expression"
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "let_condition"
              },
              {
                "type": "STRING",
                "value": "&&"
              },
              {
                "type": "SYMBOL",
                "name": "let_condition"
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_expression"
              },
              {
                "type": "STRING",
                "value": "&&"
              },
              {
                "type": "SYMBOL",
                "name": "let_condition"
              }
            ]
          }
        ]
      }
    },
    "_condition": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_expression"
        },
        {
          "type": "SYMBOL",
          "name": "let_condition"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "_let_chain"
          },
          "named": true,
          "value": "let_chain"
        }
      ]
    },
    "else_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "else"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "block"
            },
            {
              "type": "SYMBOL",
              "name": "if_expression"
            }
          ]
        }
      ]
    },
    "match_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "match"
        },
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "SYMBOL",
            "name": "_expression"
          }
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "match_block"
          }
        }
      ]
    },
    "match_block": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SYMBOL",
                    "name": "match_arm"
                  }
                },
                {
                  "type": "ALIAS",
                  "content": {
                    "type": "SYMBOL",
                    "name": "last_match_arm"
                  },
                  "named": true,
                  "value": "match_arm"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "match_arm": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "attribute_item"
          }
        },
        {
          "type": "FIELD",
          "name": "pattern",
          "content": {
            "type": "SYMBOL",
            "name": "match_pattern"
          }
        },
        {
          "type": "STRING",
          "value": "=>"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "FIELD",
                  "name": "value",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_expression"
                  }
                },
                {
                  "type": "STRING",
                  "value": ","
                }
              ]
            },
            {
              "type": "FIELD",
              "name": "value",
              "content": {
                "type": "PREC",
                "value": 1,
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression_ending_with_block"
                }
              }
            }
          ]
        }
      ]
    },
    "last_match_arm": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "attribute_item"
          }
        },
        {
          "type": "FIELD",
          "name": "pattern",
          "content": {
            "type": "SYMBOL",
            "name": "match_pattern"
          }
        },
        {
          "type": "STRING",
          "value": "=>"
        },
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "SYMBOL",
            "name": "_expression"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ","
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "match_pattern": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_pattern"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "if"
                },
                {
                  "type": "FIELD",
                  "name": "condition",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_condition"
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "while_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "loop_label"
                },
                {
                  "type": "STRING",
                  "value": ":"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "while"
        },
        {
          "type": "FIELD",
          "name": "condition",
          "content": {
            "type": "SYMBOL",
            "name": "_condition"
          }
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "block"
          }
        }
      ]
    },
    "loop_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "loop_label"
                },
                {
                  "type": "STRING",
                  "value": ":"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "loop"
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "block"
          }
        }
      ]
    },
    "for_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "loop_label"
                },
                {
                  "type": "STRING",
                  "value": ":"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "for"
        },
        {
          "type": "FIELD",
          "name": "pattern",
          "content": {
            "type": "SYMBOL",
            "name": "_pattern"
          }
        },
        {
          "type": "STRING",
          "value": "in"
        },
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "SYMBOL",
            "name": "_expression"
          }
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "block"
          }
        }
      ]
    },
    "const_block": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "const"
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "block"
          }
        }
      ]
    },
    "closure_expression": {
      "type": "PREC",
      "value": -1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "move"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "FIELD",
            "name": "parameters",
            "content": {
              "type": "SYMBOL",
              "name": "closure_parameters"
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "STRING",
                            "value": "->"
                          },
                          {
                            "type": "FIELD",
                            "name": "return_type",
                            "content": {
                              "type": "SYMBOL",
                              "name": "_type"
                            }
                          }
                        ]
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  },
                  {
                    "type": "FIELD",
                    "name": "body",
                    "content": {
                      "type": "SYMBOL",
                      "name": "block"
                    }
                  }
                ]
              },
              {
                "type": "FIELD",
                "name": "body",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        ]
      }
    },
    "closure_parameters": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "|"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "_pattern"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "parameter"
                    }
                  ]
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "_pattern"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "parameter"
                          }
                        ]
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "|"
        }
      ]
    },
    "loop_label": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "'"
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        }
      ]
    },
    "break_expression": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "break"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "loop_label"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_expression"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "continue_expression": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "continue"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "loop_label"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "index_expression": {
      "type": "PREC",
      "value": 14,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_expression"
          },
          {
            "type": "STRING",
            "value": "["
          },
          {
            "type": "SYMBOL",
            "name": "_expression"
          },
          {
            "type": "STRING",
            "value": "]"
          }
        ]
      }
    },
    "await_expression": {
      "type": "PREC",
      "value": 13,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_expression"
          },
          {
            "type": "STRING",
            "value": "."
          },
          {
            "type": "STRING",
            "value": "await"
          }
        ]
      }
    },
    "field_expression": {
      "type": "PREC",
      "value": 13,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "value",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          },
          {
            "type": "STRING",
            "value": "."
          },
          {
            "type": "FIELD",
            "name": "field",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_field_identifier"
                },
                {
                  "type": "SYMBOL",
                  "name": "integer_literal"
                }
              ]
            }
          }
        ]
      }
    },
    "unsafe_block": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "unsafe"
        },
        {
          "type": "SYMBOL",
          "name": "block"
        }
      ]
    },
    "async_block": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "async"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "move"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "block"
        }
      ]
    },
    "block": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_statement"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_expression"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "_pattern": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_literal_pattern"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "u8"
              },
              {
                "type": "STRING",
                "value": "i8"
              },
              {
                "type": "STRING",
                "value": "u16"
              },
              {
                "type": "STRING",
                "value": "i16"
              },
              {
                "type": "STRING",
                "value": "u32"
              },
              {
                "type": "STRING",
                "value": "i32"
              },
              {
                "type": "STRING",
                "value": "u64"
              },
              {
                "type": "STRING",
                "value": "i64"
              },
              {
                "type": "STRING",
                "value": "u128"
              },
              {
                "type": "STRING",
                "value": "i128"
              },
              {
                "type": "STRING",
                "value": "isize"
              },
              {
                "type": "STRING",
                "value": "usize"
              },
              {
                "type": "STRING",
                "value": "f32"
              },
              {
                "type": "STRING",
                "value": "f64"
              },
              {
                "type": "STRING",
                "value": "bool"
              },
              {
                "type": "STRING",
                "value": "str"
              },
              {
                "type": "STRING",
                "value": "char"
              }
            ]
          },
          "named": true,
          "value": "identifier"
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "SYMBOL",
          "name": "scoped_identifier"
        },
        {
          "type": "SYMBOL",
          "name": "tuple_pattern"
        },
        {
          "type": "SYMBOL",
          "name": "tuple_struct_pattern"
        },
        {
          "type": "SYMBOL",
          "name": "struct_pattern"
        },
        {
          "type": "SYMBOL",
          "name": "_reserved_identifier"
        },
        {
          "type": "SYMBOL",
          "name": "ref_pattern"
        },
        {
          "type": "SYMBOL",
          "name": "slice_pattern"
        },
        {
          "type": "SYMBOL",
          "name": "captured_pattern"
        },
        {
          "type": "SYMBOL",
          "name": "reference_pattern"
        },
        {
          "type": "SYMBOL",
          "name": "remaining_field_pattern"
        },
        {
          "type": "SYMBOL",
          "name": "mut_pattern"
        },
        {
          "type": "SYMBOL",
          "name": "range_pattern"
        },
        {
          "type": "SYMBOL",
          "name": "or_pattern"
        },
        {
          "type": "SYMBOL",
          "name": "const_block"
        },
        {
          "type": "SYMBOL",
          "name": "macro_invocation"
        },
        {
          "type": "STRING",
          "value": "_"
        }
      ]
    },
    "tuple_pattern": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_pattern"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_pattern"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ","
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "slice_pattern": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_pattern"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_pattern"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ","
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "]"
        }
      ]
    },
    "tuple_struct_pattern": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "identifier"
              },
              {
                "type": "SYMBOL",
                "name": "scoped_identifier"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_pattern"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_pattern"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ","
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "struct_pattern": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_type_identifier"
              },
              {
                "type": "SYMBOL",
                "name": "scoped_type_identifier"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "field_pattern"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "remaining_field_pattern"
                    }
                  ]
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "field_pattern"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "remaining_field_pattern"
                          }
                        ]
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ","
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "field_pattern": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "ref"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "mutable_specifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "name",
              "content": {
                "type": "ALIAS",
                "content": {
                  "type": "SYMBOL",
                  "name": "identifier"
                },
                "named": true,
                "value": "shorthand_field_identifier"
              }
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "FIELD",
                  "name": "name",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_field_identifier"
                  }
                },
                {
                  "type": "STRING",
                  "value": ":"
                },
                {
                  "type": "FIELD",
                  "name": "pattern",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_pattern"
                  }
                }
              ]
            }
          ]
        }
      ]
    },
    "remaining_field_pattern": {
      "type": "STRING",
      "value": ".."
    },
    "mut_pattern": {
      "type": "PREC",
      "value": -1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "mutable_specifier"
          },
          {
            "type": "SYMBOL",
            "name": "_pattern"
          }
        ]
      }
    },
    "range_pattern": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_literal_pattern"
            },
            {
              "type": "SYMBOL",
              "name": "_path"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "..."
            },
            {
              "type": "STRING",
              "value": "..="
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_literal_pattern"
            },
            {
              "type": "SYMBOL",
              "name": "_path"
            }
          ]
        }
      ]
    },
    "ref_pattern": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "ref"
        },
        {
          "type": "SYMBOL",
          "name": "_pattern"
        }
      ]
    },
    "captured_pattern": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "STRING",
          "value": "@"
        },
        {
          "type": "SYMBOL",
          "name": "_pattern"
        }
      ]
    },
    "reference_pattern": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "&"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "mutable_specifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_pattern"
        }
      ]
    },
    "or_pattern": {
      "type": "PREC_LEFT",
      "value": -2,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_pattern"
          },
          {
            "type": "STRING",
            "value": "|"
          },
          {
            "type": "SYMBOL",
            "name": "_pattern"
          }
        ]
      }
    },
    "_literal": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "string_literal"
        },
        {
          "type": "SYMBOL",
          "name": "raw_string_literal"
        },
        {
          "type": "SYMBOL",
          "name": "char_literal"
        },
        {
          "type": "SYMBOL",
          "name": "boolean_literal"
        },
        {
          "type": "SYMBOL",
          "name": "integer_literal"
        },
        {
          "type": "SYMBOL",
          "name": "float_literal"
        }
      ]
    },
    "_literal_pattern": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "string_literal"
        },
        {
          "type": "SYMBOL",
          "name": "raw_string_literal"
        },
        {
          "type": "SYMBOL",
          "name": "char_literal"
        },
        {
          "type": "SYMBOL",
          "name": "boolean_literal"
        },
        {
          "type": "SYMBOL",
          "name": "integer_literal"
        },
        {
          "type": "SYMBOL",
          "name": "float_literal"
        },
        {
          "type": "SYMBOL",
          "name": "negative_literal"
        }
      ]
    },
    "negative_literal": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "-"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "integer_literal"
            },
            {
              "type": "SYMBOL",
              "name": "float_literal"
            }
          ]
        }
      ]
    },
    "integer_literal": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "PATTERN",
                "value": "[0-9][0-9_]*"
              },
              {
                "type": "PATTERN",
                "value": "0x[0-9a-fA-F_]+"
              },
              {
                "type": "PATTERN",
                "value": "0b[01_]+"
              },
              {
                "type": "PATTERN",
                "value": "0o[0-7_]+"
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "u8"
                  },
                  {
                    "type": "STRING",
                    "value": "i8"
                  },
                  {
                    "type": "STRING",
                    "value": "u16"
                  },
                  {
                    "type": "STRING",
                    "value": "i16"
                  },
                  {
                    "type": "STRING",
                    "value": "u32"
                  },
                  {
                    "type": "STRING",
                    "value": "i32"
                  },
                  {
                    "type": "STRING",
                    "value": "u64"
                  },
                  {
                    "type": "STRING",
                    "value": "i64"
                  },
                  {
                    "type": "STRING",
                    "value": "u128"
                  },
                  {
                    "type": "STRING",
                    "value": "i128"
                  },
                  {
                    "type": "STRING",
                    "value": "isize"
                  },
                  {
                    "type": "STRING",
                    "value": "usize"
                  },
                  {
                    "type": "STRING",
                    "value": "f32"
                  },
                  {
                    "type": "STRING",
                    "value": "f64"
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "string_literal": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "b?\""
          },
          "named": false,
          "value": "\""
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "escape_sequence"
              },
              {
                "type": "SYMBOL",
                "name": "_string_content"
              }
            ]
          }
        },
        {
          "type": "IMMEDIATE_TOKEN",
          "content": {
            "type": "STRING",
            "value": "\""
          }
        }
      ]
    },
    "char_literal": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "b"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "STRING",
            "value": "'"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "\\"
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "PATTERN",
                            "value": "[^xu]"
                          },
                          {
                            "type": "PATTERN",
                            "value": "u[0-9a-fA-F]{4}"
                          },
                          {
                            "type": "PATTERN",
                            "value": "u{[0-9a-fA-F]+}"
                          },
                          {
                            "type": "PATTERN",
                            "value": "x[0-9a-fA-F]{2}"
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "type": "PATTERN",
                    "value": "[^\\\\']"
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "STRING",
            "value": "'"
          }
        ]
      }
    },
    "escape_sequence": {
      "type": "IMMEDIATE_TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "\\"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "PATTERN",
                "value": "[^xu]"
              },
              {
                "type": "PATTERN",
                "value": "u[0-9a-fA-F]{4}"
              },
              {
                "type": "PATTERN",
                "value": "u{[0-9a-fA-F]+}"
              },
              {
                "type": "PATTERN",
                "value": "x[0-9a-fA-F]{2}"
              }
            ]
          }
        ]
      }
    },
    "boolean_literal": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "true"
        },
        {
          "type": "STRING",
          "value": "false"
        }
      ]
    },
    "comment": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "line_comment"
        },
        {
          "type": "SYMBOL",
          "name": "block_comment"
        }
      ]
    },
    "line_comment": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "//"
          },
          {
            "type": "PATTERN",
            "value": ".*"
          }
        ]
      }
    },
    "_path": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "self"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "u8"
              },
              {
                "type": "STRING",
                "value": "i8"
              },
              {
                "type": "STRING",
                "value": "u16"
              },
              {
                "type": "STRING",
                "value": "i16"
              },
              {
                "type": "STRING",
                "value": "u32"
              },
              {
                "type": "STRING",
                "value": "i32"
              },
              {
                "type": "STRING",
                "value": "u64"
              },
              {
                "type": "STRING",
                "value": "i64"
              },
              {
                "type": "STRING",
                "value": "u128"
              },
              {
                "type": "STRING",
                "value": "i128"
              },
              {
                "type": "STRING",
                "value": "isize"
              },
              {
                "type": "STRING",
                "value": "usize"
              },
              {
                "type": "STRING",
                "value": "f32"
              },
              {
                "type": "STRING",
                "value": "f64"
              },
              {
                "type": "STRING",
                "value": "bool"
              },
              {
                "type": "STRING",
                "value": "str"
              },
              {
                "type": "STRING",
                "value": "char"
              }
            ]
          },
          "named": true,
          "value": "identifier"
        },
        {
          "type": "SYMBOL",
          "name": "metavariable"
        },
        {
          "type": "SYMBOL",
          "name": "super"
        },
        {
          "type": "SYMBOL",
          "name": "crate"
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "SYMBOL",
          "name": "scoped_identifier"
        },
        {
          "type": "SYMBOL",
          "name": "_reserved_identifier"
        }
      ]
    },
    "identifier": {
      "type": "PATTERN",
      "value": "(r#)?[_\\p{XID_Start}][_\\p{XID_Continue}]*"
    },
    "_reserved_identifier": {
      "type": "ALIAS",
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "STRING",
            "value": "default"
          },
          {
            "type": "STRING",
            "value": "union"
          }
        ]
      },
      "named": true,
      "value": "identifier"
    },
    "_type_identifier": {
      "type": "ALIAS",
      "content": {
        "type": "SYMBOL",
        "name": "identifier"
      },
      "named": true,
      "value": "type_identifier"
    },
    "_field_identifier": {
      "type": "ALIAS",
      "content": {
        "type": "SYMBOL",
        "name": "identifier"
      },
      "named": true,
      "value": "field_identifier"
    },
    "self": {
      "type": "STRING",
      "value": "self"
    },
    "super": {
      "type": "STRING",
      "value": "super"
    },
    "crate": {
      "type": "STRING",
      "value": "crate"
    },
    "metavariable": {
      "type": "PATTERN",
      "value": "\\$[a-zA-Z_]\\w*"
    }
  },
  "extras": [
    {
      "type": "PATTERN",
      "value": "\\s"
    },
    {
      "type": "SYMBOL",
      "name": "line_comment"
    },
    {
      "type": "SYMBOL",
      "name": "block_comment"
    }
  ],
  "conflicts": [
    [
      "_type",
      "_pattern"
    ],
    [
      "unit_type",
      "tuple_pattern"
    ],
    [
      "scoped_identifier",
      "scoped_type_identifier"
    ],
    [
      "parameters",
      "_pattern"
    ],
    [
      "parameters",
      "tuple_struct_pattern"
    ],
    [
      "type_parameters",
      "for_lifetimes"
    ]
  ],
  "precedences": [],
  "externals": [
    {
      "type": "SYMBOL",
      "name": "_string_content"
    },
    {
      "type": "SYMBOL",
      "name": "raw_string_literal"
    },
    {
      "type": "SYMBOL",
      "name": "float_literal"
    },
    {
      "type": "SYMBOL",
      "name": "block_comment"
    }
  ],
  "inline": [
    "_path",
    "_type_identifier",
    "_tokens",
    "_field_identifier",
    "_non_special_token",
    "_declaration_statement",
    "_reserved_identifier",
    "_expression_ending_with_block"
  ],
  "supertypes": [
    "_expression",
    "_type",
    "_literal",
    "_literal_pattern",
    "_declaration_statement",
    "_pattern"
  ]
}

