{
  "$schema": "https://tree-sitter.github.io/tree-sitter/assets/schemas/grammar.schema.json",
  "name": "c_sharp",
  "word": "_identifier_token",
  "rules": {
    "compilation_unit": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "shebang_directive"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_top_level_item"
          }
        }
      ]
    },
    "_top_level_item": {
      "type": "PREC",
      "value": 2,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_top_level_item_no_statement"
          },
          {
            "type": "SYMBOL",
            "name": "global_statement"
          }
        ]
      }
    },
    "_top_level_item_no_statement": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "extern_alias_directive"
        },
        {
          "type": "SYMBOL",
          "name": "using_directive"
        },
        {
          "type": "SYMBOL",
          "name": "global_attribute"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "preproc_if_in_top_level"
          },
          "named": true,
          "value": "preproc_if"
        },
        {
          "type": "SYMBOL",
          "name": "_namespace_member_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "file_scoped_namespace_declaration"
        }
      ]
    },
    "global_statement": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SYMBOL",
        "name": "statement"
      }
    },
    "extern_alias_directive": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "extern"
        },
        {
          "type": "STRING",
          "value": "alias"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "using_directive": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "global"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "using"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "unsafe"
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "FIELD",
                  "name": "name",
                  "content": {
                    "type": "SYMBOL",
                    "name": "identifier"
                  }
                },
                {
                  "type": "STRING",
                  "value": "="
                },
                {
                  "type": "SYMBOL",
                  "name": "type"
                }
              ]
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "static"
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "unsafe"
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "SYMBOL",
                  "name": "_name"
                }
              ]
            }
          ]
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "global_attribute": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "assembly"
            },
            {
              "type": "STRING",
              "value": "module"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "attribute"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "attribute"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ","
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "]"
        }
      ]
    },
    "attribute": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "_name"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "attribute_argument_list"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "attribute_argument_list": {
      "type": "PREC",
      "value": -1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "("
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "attribute_argument"
                  },
                  {
                    "type": "REPEAT",
                    "content": {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "STRING",
                          "value": ","
                        },
                        {
                          "type": "SYMBOL",
                          "name": "attribute_argument"
                        }
                      ]
                    }
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "STRING",
            "value": ")"
          }
        ]
      }
    },
    "attribute_argument": {
      "type": "PREC",
      "value": -1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "identifier"
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ":"
                      },
                      {
                        "type": "STRING",
                        "value": "="
                      }
                    ]
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "SYMBOL",
            "name": "expression"
          }
        ]
      }
    },
    "attribute_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "attribute_target_specifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "attribute"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "attribute"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ","
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "]"
        }
      ]
    },
    "attribute_target_specifier": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "field"
            },
            {
              "type": "STRING",
              "value": "event"
            },
            {
              "type": "STRING",
              "value": "method"
            },
            {
              "type": "STRING",
              "value": "param"
            },
            {
              "type": "STRING",
              "value": "property"
            },
            {
              "type": "STRING",
              "value": "return"
            },
            {
              "type": "STRING",
              "value": "type"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ":"
        }
      ]
    },
    "_namespace_member_declaration": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "namespace_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "type_declaration"
        }
      ]
    },
    "namespace_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "namespace"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "_name"
          }
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "declaration_list"
          }
        },
        {
          "type": "SYMBOL",
          "name": "_optional_semi"
        }
      ]
    },
    "file_scoped_namespace_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "namespace"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "_name"
          }
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "type_declaration": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "class_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "struct_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "enum_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "interface_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "delegate_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "record_declaration"
        }
      ]
    },
    "class_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "attribute_list"
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "modifier"
          }
        },
        {
          "type": "STRING",
          "value": "class"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "type_parameter_list"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "parameter_list"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "base_list"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "type_parameter_constraints_clause"
          }
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "declaration_list"
          }
        },
        {
          "type": "SYMBOL",
          "name": "_optional_semi"
        }
      ]
    },
    "struct_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "attribute_list"
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "modifier"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "ref"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "struct"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "type_parameter_list"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "parameter_list"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "base_list"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "type_parameter_constraints_clause"
          }
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "declaration_list"
          }
        },
        {
          "type": "SYMBOL",
          "name": "_optional_semi"
        }
      ]
    },
    "enum_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "attribute_list"
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "modifier"
          }
        },
        {
          "type": "STRING",
          "value": "enum"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "base_list"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "enum_member_declaration_list"
          }
        },
        {
          "type": "SYMBOL",
          "name": "_optional_semi"
        }
      ]
    },
    "enum_member_declaration_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "enum_member_declaration"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_if_in_enum_member_declaration"
                      },
                      "named": true,
                      "value": "preproc_if"
                    }
                  ]
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "enum_member_declaration"
                          },
                          {
                            "type": "ALIAS",
                            "content": {
                              "type": "SYMBOL",
                              "name": "preproc_if_in_enum_member_declaration"
                            },
                            "named": true,
                            "value": "preproc_if"
                          }
                        ]
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ","
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "enum_member_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "attribute_list"
          }
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "="
                },
                {
                  "type": "FIELD",
                  "name": "value",
                  "content": {
                    "type": "SYMBOL",
                    "name": "expression"
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "interface_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "attribute_list"
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "modifier"
          }
        },
        {
          "type": "STRING",
          "value": "interface"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "FIELD",
          "name": "type_parameters",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "type_parameter_list"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "base_list"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "type_parameter_constraints_clause"
          }
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "declaration_list"
          }
        },
        {
          "type": "SYMBOL",
          "name": "_optional_semi"
        }
      ]
    },
    "delegate_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "attribute_list"
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "modifier"
          }
        },
        {
          "type": "STRING",
          "value": "delegate"
        },
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "type"
          }
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "FIELD",
          "name": "type_parameters",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "type_parameter_list"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "parameters",
          "content": {
            "type": "SYMBOL",
            "name": "parameter_list"
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "type_parameter_constraints_clause"
          }
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "record_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "attribute_list"
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "modifier"
          }
        },
        {
          "type": "STRING",
          "value": "record"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": "class"
                },
                {
                  "type": "STRING",
                  "value": "struct"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "type_parameter_list"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "parameter_list"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "record_base"
              },
              "named": true,
              "value": "base_list"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "type_parameter_constraints_clause"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "body",
              "content": {
                "type": "SYMBOL",
                "name": "declaration_list"
              }
            },
            {
              "type": "STRING",
              "value": ";"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_optional_semi"
        }
      ]
    },
    "record_base": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": ":"
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_name"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_name"
                      }
                    ]
                  }
                }
              ]
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": ":"
            },
            {
              "type": "SYMBOL",
              "name": "primary_constructor_base_type"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "_name"
                        },
                        {
                          "type": "REPEAT",
                          "content": {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "STRING",
                                "value": ","
                              },
                              {
                                "type": "SYMBOL",
                                "name": "_name"
                              }
                            ]
                          }
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        }
      ]
    },
    "primary_constructor_base_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "_name"
          }
        },
        {
          "type": "SYMBOL",
          "name": "argument_list"
        }
      ]
    },
    "modifier": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "STRING",
            "value": "abstract"
          },
          {
            "type": "STRING",
            "value": "async"
          },
          {
            "type": "STRING",
            "value": "const"
          },
          {
            "type": "STRING",
            "value": "extern"
          },
          {
            "type": "STRING",
            "value": "file"
          },
          {
            "type": "STRING",
            "value": "fixed"
          },
          {
            "type": "STRING",
            "value": "internal"
          },
          {
            "type": "STRING",
            "value": "new"
          },
          {
            "type": "STRING",
            "value": "override"
          },
          {
            "type": "STRING",
            "value": "partial"
          },
          {
            "type": "STRING",
            "value": "private"
          },
          {
            "type": "STRING",
            "value": "protected"
          },
          {
            "type": "STRING",
            "value": "public"
          },
          {
            "type": "STRING",
            "value": "readonly"
          },
          {
            "type": "STRING",
            "value": "required"
          },
          {
            "type": "STRING",
            "value": "sealed"
          },
          {
            "type": "STRING",
            "value": "static"
          },
          {
            "type": "STRING",
            "value": "unsafe"
          },
          {
            "type": "STRING",
            "value": "virtual"
          },
          {
            "type": "STRING",
            "value": "volatile"
          }
        ]
      }
    },
    "type_parameter_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "<"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "type_parameter"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "type_parameter"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "STRING",
          "value": ">"
        }
      ]
    },
    "type_parameter": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "attribute_list"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": "in"
                },
                {
                  "type": "STRING",
                  "value": "out"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        }
      ]
    },
    "base_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "type"
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "argument_list"
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "type"
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "argument_list"
                          },
                          {
                            "type": "BLANK"
                          }
                        ]
                      }
                    ]
                  }
                ]
              }
            }
          ]
        }
      ]
    },
    "type_parameter_constraints_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "where"
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "type_parameter_constraint"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "type_parameter_constraint"
                  }
                ]
              }
            }
          ]
        }
      ]
    },
    "type_parameter_constraint": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "class"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": "?"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        },
        {
          "type": "STRING",
          "value": "struct"
        },
        {
          "type": "STRING",
          "value": "notnull"
        },
        {
          "type": "STRING",
          "value": "unmanaged"
        },
        {
          "type": "SYMBOL",
          "name": "constructor_constraint"
        },
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "type"
          }
        }
      ]
    },
    "constructor_constraint": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "new"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "operator_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "attribute_list"
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "modifier"
          }
        },
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "type"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "explicit_interface_specifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "operator"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "checked"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "operator",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "!"
              },
              {
                "type": "STRING",
                "value": "~"
              },
              {
                "type": "STRING",
                "value": "++"
              },
              {
                "type": "STRING",
                "value": "--"
              },
              {
                "type": "STRING",
                "value": "true"
              },
              {
                "type": "STRING",
                "value": "false"
              },
              {
                "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": "STRING",
                "value": ">>>"
              },
              {
                "type": "STRING",
                "value": "=="
              },
              {
                "type": "STRING",
                "value": "!="
              },
              {
                "type": "STRING",
                "value": ">"
              },
              {
                "type": "STRING",
                "value": "<"
              },
              {
                "type": "STRING",
                "value": ">="
              },
              {
                "type": "STRING",
                "value": "<="
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "parameters",
          "content": {
            "type": "SYMBOL",
            "name": "parameter_list"
          }
        },
        {
          "type": "SYMBOL",
          "name": "_function_body"
        }
      ]
    },
    "conversion_operator_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "attribute_list"
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "modifier"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "implicit"
            },
            {
              "type": "STRING",
              "value": "explicit"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "explicit_interface_specifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "operator"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "checked"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "type"
          }
        },
        {
          "type": "FIELD",
          "name": "parameters",
          "content": {
            "type": "SYMBOL",
            "name": "parameter_list"
          }
        },
        {
          "type": "SYMBOL",
          "name": "_function_body"
        }
      ]
    },
    "declaration_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "declaration"
          }
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "declaration": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "class_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "struct_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "enum_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "delegate_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "field_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "method_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "event_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "event_field_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "record_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "constructor_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "destructor_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "indexer_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "interface_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "namespace_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "operator_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "conversion_operator_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "property_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "using_directive"
        },
        {
          "type": "SYMBOL",
          "name": "preproc_if"
        }
      ]
    },
    "field_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "attribute_list"
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "modifier"
          }
        },
        {
          "type": "SYMBOL",
          "name": "variable_declaration"
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "constructor_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "attribute_list"
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "modifier"
          }
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "FIELD",
          "name": "parameters",
          "content": {
            "type": "SYMBOL",
            "name": "parameter_list"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "constructor_initializer"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_function_body"
        }
      ]
    },
    "destructor_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "attribute_list"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "extern"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "~"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "FIELD",
          "name": "parameters",
          "content": {
            "type": "SYMBOL",
            "name": "parameter_list"
          }
        },
        {
          "type": "SYMBOL",
          "name": "_function_body"
        }
      ]
    },
    "method_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "attribute_list"
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "modifier"
          }
        },
        {
          "type": "FIELD",
          "name": "returns",
          "content": {
            "type": "SYMBOL",
            "name": "type"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "explicit_interface_specifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "FIELD",
          "name": "type_parameters",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "type_parameter_list"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "parameters",
          "content": {
            "type": "SYMBOL",
            "name": "parameter_list"
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "type_parameter_constraints_clause"
          }
        },
        {
          "type": "SYMBOL",
          "name": "_function_body"
        }
      ]
    },
    "event_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "attribute_list"
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "modifier"
          }
        },
        {
          "type": "STRING",
          "value": "event"
        },
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "type"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "explicit_interface_specifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "accessors",
              "content": {
                "type": "SYMBOL",
                "name": "accessor_list"
              }
            },
            {
              "type": "STRING",
              "value": ";"
            }
          ]
        }
      ]
    },
    "event_field_declaration": {
      "type": "PREC_DYNAMIC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "REPEAT",
            "content": {
              "type": "SYMBOL",
              "name": "attribute_list"
            }
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SYMBOL",
              "name": "modifier"
            }
          },
          {
            "type": "STRING",
            "value": "event"
          },
          {
            "type": "SYMBOL",
            "name": "variable_declaration"
          },
          {
            "type": "STRING",
            "value": ";"
          }
        ]
      }
    },
    "accessor_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "accessor_declaration"
          }
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "accessor_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "attribute_list"
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "modifier"
          }
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "get"
              },
              {
                "type": "STRING",
                "value": "set"
              },
              {
                "type": "STRING",
                "value": "add"
              },
              {
                "type": "STRING",
                "value": "remove"
              },
              {
                "type": "STRING",
                "value": "init"
              },
              {
                "type": "SYMBOL",
                "name": "identifier"
              }
            ]
          }
        },
        {
          "type": "SYMBOL",
          "name": "_function_body"
        }
      ]
    },
    "indexer_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "attribute_list"
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "modifier"
          }
        },
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "type"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "explicit_interface_specifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "this"
        },
        {
          "type": "FIELD",
          "name": "parameters",
          "content": {
            "type": "SYMBOL",
            "name": "bracketed_parameter_list"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "accessors",
              "content": {
                "type": "SYMBOL",
                "name": "accessor_list"
              }
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "FIELD",
                  "name": "value",
                  "content": {
                    "type": "SYMBOL",
                    "name": "arrow_expression_clause"
                  }
                },
                {
                  "type": "STRING",
                  "value": ";"
                }
              ]
            }
          ]
        }
      ]
    },
    "bracketed_parameter_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "parameter"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_parameter_array"
                    }
                  ]
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "parameter"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "_parameter_array"
                          }
                        ]
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "]"
        }
      ]
    },
    "property_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "attribute_list"
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "modifier"
          }
        },
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "type"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "explicit_interface_specifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "FIELD",
                  "name": "accessors",
                  "content": {
                    "type": "SYMBOL",
                    "name": "accessor_list"
                  }
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "STRING",
                          "value": "="
                        },
                        {
                          "type": "FIELD",
                          "name": "value",
                          "content": {
                            "type": "SYMBOL",
                            "name": "expression"
                          }
                        },
                        {
                          "type": "STRING",
                          "value": ";"
                        }
                      ]
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "FIELD",
                  "name": "value",
                  "content": {
                    "type": "SYMBOL",
                    "name": "arrow_expression_clause"
                  }
                },
                {
                  "type": "STRING",
                  "value": ";"
                }
              ]
            }
          ]
        }
      ]
    },
    "explicit_interface_specifier": {
      "type": "PREC",
      "value": 18,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_name"
          },
          {
            "type": "STRING",
            "value": "."
          }
        ]
      }
    },
    "parameter_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "parameter"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_parameter_array"
                    }
                  ]
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "parameter"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "_parameter_array"
                          }
                        ]
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "_parameter_type_with_modifiers": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "PREC_LEFT",
            "value": 0,
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "this"
                  },
                  {
                    "type": "STRING",
                    "value": "scoped"
                  },
                  {
                    "type": "STRING",
                    "value": "ref"
                  },
                  {
                    "type": "STRING",
                    "value": "out"
                  },
                  {
                    "type": "STRING",
                    "value": "in"
                  },
                  {
                    "type": "STRING",
                    "value": "readonly"
                  }
                ]
              },
              "named": true,
              "value": "modifier"
            }
          }
        },
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "type"
          }
        }
      ]
    },
    "parameter": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "attribute_list"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_parameter_type_with_modifiers"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "="
                },
                {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_parameter_array": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "attribute_list"
          }
        },
        {
          "type": "STRING",
          "value": "params"
        },
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "array_type"
              },
              {
                "type": "SYMBOL",
                "name": "nullable_type"
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        }
      ]
    },
    "constructor_initializer": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "base"
            },
            {
              "type": "STRING",
              "value": "this"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "argument_list"
        }
      ]
    },
    "argument_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "argument"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "argument"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "tuple_pattern": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "FIELD",
                  "name": "name",
                  "content": {
                    "type": "SYMBOL",
                    "name": "identifier"
                  }
                },
                {
                  "type": "SYMBOL",
                  "name": "discard"
                },
                {
                  "type": "SYMBOL",
                  "name": "tuple_pattern"
                }
              ]
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "FIELD",
                        "name": "name",
                        "content": {
                          "type": "SYMBOL",
                          "name": "identifier"
                        }
                      },
                      {
                        "type": "SYMBOL",
                        "name": "discard"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "tuple_pattern"
                      }
                    ]
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "argument": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "name",
                    "content": {
                      "type": "SYMBOL",
                      "name": "identifier"
                    }
                  },
                  {
                    "type": "STRING",
                    "value": ":"
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "ref"
                  },
                  {
                    "type": "STRING",
                    "value": "out"
                  },
                  {
                    "type": "STRING",
                    "value": "in"
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "expression"
              },
              {
                "type": "SYMBOL",
                "name": "declaration_expression"
              }
            ]
          }
        ]
      }
    },
    "block": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "statement"
          }
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "arrow_expression_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "=>"
        },
        {
          "type": "SYMBOL",
          "name": "expression"
        }
      ]
    },
    "_function_body": {
      "type": "CHOICE",
      "members": [
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "block"
          }
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "body",
              "content": {
                "type": "SYMBOL",
                "name": "arrow_expression_clause"
              }
            },
            {
              "type": "STRING",
              "value": ";"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "variable_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "type"
          }
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "variable_declarator"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "variable_declarator"
                  }
                ]
              }
            }
          ]
        }
      ]
    },
    "using_variable_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "type"
          }
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "using_variable_declarator"
              },
              "named": true,
              "value": "variable_declarator"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "using_variable_declarator"
                    },
                    "named": true,
                    "value": "variable_declarator"
                  }
                ]
              }
            }
          ]
        }
      ]
    },
    "variable_declarator": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "name",
              "content": {
                "type": "SYMBOL",
                "name": "identifier"
              }
            },
            {
              "type": "SYMBOL",
              "name": "tuple_pattern"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "bracketed_argument_list"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "="
                },
                {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "using_variable_declarator": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "="
                },
                {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "bracketed_argument_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "argument"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "argument"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ","
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "]"
        }
      ]
    },
    "qualified_identifier": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "."
              },
              {
                "type": "SYMBOL",
                "name": "identifier"
              }
            ]
          }
        }
      ]
    },
    "_name": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "alias_qualified_name"
        },
        {
          "type": "SYMBOL",
          "name": "qualified_name"
        },
        {
          "type": "SYMBOL",
          "name": "_simple_name"
        }
      ]
    },
    "alias_qualified_name": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "alias",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "STRING",
          "value": "::"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "_simple_name"
          }
        }
      ]
    },
    "_simple_name": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "SYMBOL",
          "name": "generic_name"
        }
      ]
    },
    "qualified_name": {
      "type": "PREC",
      "value": 18,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "qualifier",
            "content": {
              "type": "SYMBOL",
              "name": "_name"
            }
          },
          {
            "type": "STRING",
            "value": "."
          },
          {
            "type": "FIELD",
            "name": "name",
            "content": {
              "type": "SYMBOL",
              "name": "_simple_name"
            }
          }
        ]
      }
    },
    "generic_name": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "SYMBOL",
          "name": "type_argument_list"
        }
      ]
    },
    "type_argument_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "<"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "REPEAT",
              "content": {
                "type": "STRING",
                "value": ","
              }
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "type"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "type"
                      }
                    ]
                  }
                }
              ]
            }
          ]
        },
        {
          "type": "STRING",
          "value": ">"
        }
      ]
    },
    "type": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "implicit_type"
        },
        {
          "type": "SYMBOL",
          "name": "array_type"
        },
        {
          "type": "SYMBOL",
          "name": "_name"
        },
        {
          "type": "SYMBOL",
          "name": "nullable_type"
        },
        {
          "type": "SYMBOL",
          "name": "pointer_type"
        },
        {
          "type": "SYMBOL",
          "name": "function_pointer_type"
        },
        {
          "type": "SYMBOL",
          "name": "predefined_type"
        },
        {
          "type": "SYMBOL",
          "name": "tuple_type"
        },
        {
          "type": "SYMBOL",
          "name": "ref_type"
        },
        {
          "type": "SYMBOL",
          "name": "scoped_type"
        }
      ]
    },
    "implicit_type": {
      "type": "PREC_DYNAMIC",
      "value": 1,
      "content": {
        "type": "STRING",
        "value": "var"
      }
    },
    "array_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "_array_base_type"
          }
        },
        {
          "type": "FIELD",
          "name": "rank",
          "content": {
            "type": "SYMBOL",
            "name": "array_rank_specifier"
          }
        }
      ]
    },
    "_array_base_type": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "array_type"
        },
        {
          "type": "SYMBOL",
          "name": "_name"
        },
        {
          "type": "SYMBOL",
          "name": "nullable_type"
        },
        {
          "type": "SYMBOL",
          "name": "pointer_type"
        },
        {
          "type": "SYMBOL",
          "name": "function_pointer_type"
        },
        {
          "type": "SYMBOL",
          "name": "predefined_type"
        },
        {
          "type": "SYMBOL",
          "name": "tuple_type"
        }
      ]
    },
    "array_rank_specifier": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "expression"
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "expression"
                          },
                          {
                            "type": "BLANK"
                          }
                        ]
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "]"
        }
      ]
    },
    "nullable_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "_nullable_base_type"
          }
        },
        {
          "type": "STRING",
          "value": "?"
        }
      ]
    },
    "_nullable_base_type": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "array_type"
        },
        {
          "type": "SYMBOL",
          "name": "_name"
        },
        {
          "type": "SYMBOL",
          "name": "predefined_type"
        },
        {
          "type": "SYMBOL",
          "name": "tuple_type"
        }
      ]
    },
    "pointer_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "_pointer_base_type"
          }
        },
        {
          "type": "STRING",
          "value": "*"
        }
      ]
    },
    "_pointer_base_type": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_name"
        },
        {
          "type": "SYMBOL",
          "name": "nullable_type"
        },
        {
          "type": "SYMBOL",
          "name": "pointer_type"
        },
        {
          "type": "SYMBOL",
          "name": "function_pointer_type"
        },
        {
          "type": "SYMBOL",
          "name": "predefined_type"
        },
        {
          "type": "SYMBOL",
          "name": "tuple_type"
        }
      ]
    },
    "function_pointer_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "delegate"
        },
        {
          "type": "STRING",
          "value": "*"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "calling_convention"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "<"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "function_pointer_parameter"
              },
              {
                "type": "STRING",
                "value": ","
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "returns",
          "content": {
            "type": "SYMBOL",
            "name": "type"
          }
        },
        {
          "type": "STRING",
          "value": ">"
        }
      ]
    },
    "calling_convention": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "managed"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "unmanaged"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "["
                    },
                    {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "CHOICE",
                          "members": [
                            {
                              "type": "STRING",
                              "value": "Cdecl"
                            },
                            {
                              "type": "STRING",
                              "value": "Stdcall"
                            },
                            {
                              "type": "STRING",
                              "value": "Thiscall"
                            },
                            {
                              "type": "STRING",
                              "value": "Fastcall"
                            },
                            {
                              "type": "SYMBOL",
                              "name": "identifier"
                            }
                          ]
                        },
                        {
                          "type": "REPEAT",
                          "content": {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "STRING",
                                "value": ","
                              },
                              {
                                "type": "CHOICE",
                                "members": [
                                  {
                                    "type": "STRING",
                                    "value": "Cdecl"
                                  },
                                  {
                                    "type": "STRING",
                                    "value": "Stdcall"
                                  },
                                  {
                                    "type": "STRING",
                                    "value": "Thiscall"
                                  },
                                  {
                                    "type": "STRING",
                                    "value": "Fastcall"
                                  },
                                  {
                                    "type": "SYMBOL",
                                    "name": "identifier"
                                  }
                                ]
                              }
                            ]
                          }
                        }
                      ]
                    },
                    {
                      "type": "STRING",
                      "value": "]"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        }
      ]
    },
    "function_pointer_parameter": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": "ref"
                },
                {
                  "type": "STRING",
                  "value": "out"
                },
                {
                  "type": "STRING",
                  "value": "in"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "_ref_base_type"
          }
        }
      ]
    },
    "predefined_type": {
      "type": "TOKEN",
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "STRING",
            "value": "bool"
          },
          {
            "type": "STRING",
            "value": "byte"
          },
          {
            "type": "STRING",
            "value": "char"
          },
          {
            "type": "STRING",
            "value": "decimal"
          },
          {
            "type": "STRING",
            "value": "double"
          },
          {
            "type": "STRING",
            "value": "float"
          },
          {
            "type": "STRING",
            "value": "int"
          },
          {
            "type": "STRING",
            "value": "long"
          },
          {
            "type": "STRING",
            "value": "object"
          },
          {
            "type": "STRING",
            "value": "sbyte"
          },
          {
            "type": "STRING",
            "value": "short"
          },
          {
            "type": "STRING",
            "value": "string"
          },
          {
            "type": "STRING",
            "value": "uint"
          },
          {
            "type": "STRING",
            "value": "ulong"
          },
          {
            "type": "STRING",
            "value": "ushort"
          },
          {
            "type": "STRING",
            "value": "nint"
          },
          {
            "type": "STRING",
            "value": "nuint"
          },
          {
            "type": "STRING",
            "value": "void"
          }
        ]
      }
    },
    "ref_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "ref"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "readonly"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "type"
          }
        }
      ]
    },
    "_ref_base_type": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "implicit_type"
        },
        {
          "type": "SYMBOL",
          "name": "_name"
        },
        {
          "type": "SYMBOL",
          "name": "nullable_type"
        },
        {
          "type": "SYMBOL",
          "name": "array_type"
        },
        {
          "type": "SYMBOL",
          "name": "pointer_type"
        },
        {
          "type": "SYMBOL",
          "name": "function_pointer_type"
        },
        {
          "type": "SYMBOL",
          "name": "predefined_type"
        },
        {
          "type": "SYMBOL",
          "name": "tuple_type"
        }
      ]
    },
    "scoped_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "scoped"
        },
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "_scoped_base_type"
          }
        }
      ]
    },
    "_scoped_base_type": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_name"
        },
        {
          "type": "SYMBOL",
          "name": "ref_type"
        }
      ]
    },
    "tuple_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "tuple_element"
            },
            {
              "type": "REPEAT1",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "tuple_element"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "tuple_element": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "type"
          }
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "identifier"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        }
      ]
    },
    "statement": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "block"
          },
          {
            "type": "SYMBOL",
            "name": "break_statement"
          },
          {
            "type": "SYMBOL",
            "name": "checked_statement"
          },
          {
            "type": "SYMBOL",
            "name": "continue_statement"
          },
          {
            "type": "SYMBOL",
            "name": "do_statement"
          },
          {
            "type": "SYMBOL",
            "name": "empty_statement"
          },
          {
            "type": "SYMBOL",
            "name": "expression_statement"
          },
          {
            "type": "SYMBOL",
            "name": "fixed_statement"
          },
          {
            "type": "SYMBOL",
            "name": "for_statement"
          },
          {
            "type": "SYMBOL",
            "name": "return_statement"
          },
          {
            "type": "SYMBOL",
            "name": "lock_statement"
          },
          {
            "type": "SYMBOL",
            "name": "yield_statement"
          },
          {
            "type": "SYMBOL",
            "name": "switch_statement"
          },
          {
            "type": "SYMBOL",
            "name": "throw_statement"
          },
          {
            "type": "SYMBOL",
            "name": "try_statement"
          },
          {
            "type": "SYMBOL",
            "name": "unsafe_statement"
          },
          {
            "type": "SYMBOL",
            "name": "using_statement"
          },
          {
            "type": "SYMBOL",
            "name": "foreach_statement"
          },
          {
            "type": "SYMBOL",
            "name": "goto_statement"
          },
          {
            "type": "SYMBOL",
            "name": "labeled_statement"
          },
          {
            "type": "SYMBOL",
            "name": "if_statement"
          },
          {
            "type": "SYMBOL",
            "name": "while_statement"
          },
          {
            "type": "SYMBOL",
            "name": "local_declaration_statement"
          },
          {
            "type": "SYMBOL",
            "name": "local_function_statement"
          },
          {
            "type": "ALIAS",
            "content": {
              "type": "SYMBOL",
              "name": "preproc_if_in_top_level"
            },
            "named": true,
            "value": "preproc_if"
          }
        ]
      }
    },
    "break_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "break"
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "checked_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "checked"
            },
            {
              "type": "STRING",
              "value": "unchecked"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "block"
        }
      ]
    },
    "continue_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "continue"
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "do_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "do"
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "statement"
          }
        },
        {
          "type": "STRING",
          "value": "while"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "FIELD",
          "name": "condition",
          "content": {
            "type": "SYMBOL",
            "name": "expression"
          }
        },
        {
          "type": "STRING",
          "value": ")"
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "empty_statement": {
      "type": "STRING",
      "value": ";"
    },
    "expression_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_expression_statement_expression"
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "fixed_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "fixed"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "variable_declaration"
        },
        {
          "type": "STRING",
          "value": ")"
        },
        {
          "type": "SYMBOL",
          "name": "statement"
        }
      ]
    },
    "for_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "for"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "FIELD",
          "name": "initializer",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "variable_declaration"
                  },
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "expression"
                      },
                      {
                        "type": "REPEAT",
                        "content": {
                          "type": "SEQ",
                          "members": [
                            {
                              "type": "STRING",
                              "value": ","
                            },
                            {
                              "type": "SYMBOL",
                              "name": "expression"
                            }
                          ]
                        }
                      }
                    ]
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": ";"
        },
        {
          "type": "FIELD",
          "name": "condition",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "expression"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": ";"
        },
        {
          "type": "FIELD",
          "name": "update",
          "content": {
            "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": "STRING",
          "value": ")"
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "statement"
          }
        }
      ]
    },
    "return_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "return"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "expression"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "lock_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "lock"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "expression"
        },
        {
          "type": "STRING",
          "value": ")"
        },
        {
          "type": "SYMBOL",
          "name": "statement"
        }
      ]
    },
    "yield_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "yield"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "return"
                },
                {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              ]
            },
            {
              "type": "STRING",
              "value": "break"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "switch_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "switch"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "("
                },
                {
                  "type": "FIELD",
                  "name": "value",
                  "content": {
                    "type": "SYMBOL",
                    "name": "expression"
                  }
                },
                {
                  "type": "STRING",
                  "value": ")"
                }
              ]
            },
            {
              "type": "FIELD",
              "name": "value",
              "content": {
                "type": "SYMBOL",
                "name": "tuple_expression"
              }
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "switch_body"
          }
        }
      ]
    },
    "switch_body": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "switch_section"
          }
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "switch_section": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": "case"
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "expression"
                      },
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "pattern"
                          },
                          {
                            "type": "CHOICE",
                            "members": [
                              {
                                "type": "SYMBOL",
                                "name": "when_clause"
                              },
                              {
                                "type": "BLANK"
                              }
                            ]
                          }
                        ]
                      }
                    ]
                  }
                ]
              },
              {
                "type": "STRING",
                "value": "default"
              }
            ]
          },
          {
            "type": "STRING",
            "value": ":"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SYMBOL",
              "name": "statement"
            }
          }
        ]
      }
    },
    "throw_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "throw"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "expression"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "try_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "try"
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "block"
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "catch_clause"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "finally_clause"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "catch_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "catch"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "catch_declaration"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "catch_filter_clause"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "block"
          }
        }
      ]
    },
    "catch_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "type"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "name",
              "content": {
                "type": "SYMBOL",
                "name": "identifier"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "catch_filter_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "when"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "expression"
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "finally_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "finally"
        },
        {
          "type": "SYMBOL",
          "name": "block"
        }
      ]
    },
    "unsafe_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "unsafe"
        },
        {
          "type": "SYMBOL",
          "name": "block"
        }
      ]
    },
    "using_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "await"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "using"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "using_variable_declaration"
              },
              "named": true,
              "value": "variable_declaration"
            },
            {
              "type": "SYMBOL",
              "name": "expression"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "statement"
          }
        }
      ]
    },
    "foreach_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "await"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "foreach"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "FIELD",
                  "name": "type",
                  "content": {
                    "type": "SYMBOL",
                    "name": "type"
                  }
                },
                {
                  "type": "FIELD",
                  "name": "left",
                  "content": {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "identifier"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "tuple_pattern"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "FIELD",
              "name": "left",
              "content": {
                "type": "SYMBOL",
                "name": "expression"
              }
            }
          ]
        },
        {
          "type": "STRING",
          "value": "in"
        },
        {
          "type": "FIELD",
          "name": "right",
          "content": {
            "type": "SYMBOL",
            "name": "expression"
          }
        },
        {
          "type": "STRING",
          "value": ")"
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "statement"
          }
        }
      ]
    },
    "goto_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "goto"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": "case"
                },
                {
                  "type": "STRING",
                  "value": "default"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "expression"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "labeled_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "SYMBOL",
          "name": "statement"
        }
      ]
    },
    "if_statement": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "if"
          },
          {
            "type": "STRING",
            "value": "("
          },
          {
            "type": "FIELD",
            "name": "condition",
            "content": {
              "type": "SYMBOL",
              "name": "expression"
            }
          },
          {
            "type": "STRING",
            "value": ")"
          },
          {
            "type": "FIELD",
            "name": "consequence",
            "content": {
              "type": "SYMBOL",
              "name": "statement"
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": "else"
                  },
                  {
                    "type": "FIELD",
                    "name": "alternative",
                    "content": {
                      "type": "SYMBOL",
                      "name": "statement"
                    }
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "while_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "while"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "FIELD",
          "name": "condition",
          "content": {
            "type": "SYMBOL",
            "name": "expression"
          }
        },
        {
          "type": "STRING",
          "value": ")"
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "statement"
          }
        }
      ]
    },
    "local_declaration_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "await"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "using"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "modifier"
          }
        },
        {
          "type": "SYMBOL",
          "name": "variable_declaration"
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "local_function_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "attribute_list"
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "modifier"
          }
        },
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "type"
          }
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "FIELD",
          "name": "type_parameters",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "type_parameter_list"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "parameters",
          "content": {
            "type": "SYMBOL",
            "name": "parameter_list"
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "type_parameter_constraints_clause"
          }
        },
        {
          "type": "SYMBOL",
          "name": "_function_body"
        }
      ]
    },
    "pattern": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "constant_pattern"
        },
        {
          "type": "SYMBOL",
          "name": "declaration_pattern"
        },
        {
          "type": "SYMBOL",
          "name": "discard"
        },
        {
          "type": "SYMBOL",
          "name": "recursive_pattern"
        },
        {
          "type": "SYMBOL",
          "name": "var_pattern"
        },
        {
          "type": "SYMBOL",
          "name": "negated_pattern"
        },
        {
          "type": "SYMBOL",
          "name": "parenthesized_pattern"
        },
        {
          "type": "SYMBOL",
          "name": "relational_pattern"
        },
        {
          "type": "SYMBOL",
          "name": "or_pattern"
        },
        {
          "type": "SYMBOL",
          "name": "and_pattern"
        },
        {
          "type": "SYMBOL",
          "name": "list_pattern"
        },
        {
          "type": "SYMBOL",
          "name": "type_pattern"
        }
      ]
    },
    "constant_pattern": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "binary_expression"
        },
        {
          "type": "SYMBOL",
          "name": "default_expression"
        },
        {
          "type": "SYMBOL",
          "name": "interpolated_string_expression"
        },
        {
          "type": "SYMBOL",
          "name": "parenthesized_expression"
        },
        {
          "type": "SYMBOL",
          "name": "postfix_unary_expression"
        },
        {
          "type": "SYMBOL",
          "name": "prefix_unary_expression"
        },
        {
          "type": "SYMBOL",
          "name": "sizeof_expression"
        },
        {
          "type": "SYMBOL",
          "name": "tuple_expression"
        },
        {
          "type": "SYMBOL",
          "name": "typeof_expression"
        },
        {
          "type": "SYMBOL",
          "name": "member_access_expression"
        },
        {
          "type": "SYMBOL",
          "name": "invocation_expression"
        },
        {
          "type": "SYMBOL",
          "name": "cast_expression"
        },
        {
          "type": "SYMBOL",
          "name": "_simple_name"
        },
        {
          "type": "SYMBOL",
          "name": "literal"
        }
      ]
    },
    "discard": {
      "type": "STRING",
      "value": "_"
    },
    "parenthesized_pattern": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "pattern"
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "var_pattern": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "var"
        },
        {
          "type": "SYMBOL",
          "name": "_variable_designation"
        }
      ]
    },
    "type_pattern": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "FIELD",
        "name": "type",
        "content": {
          "type": "SYMBOL",
          "name": "type"
        }
      }
    },
    "list_pattern": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "pattern"
                        },
                        {
                          "type": "STRING",
                          "value": ".."
                        }
                      ]
                    },
                    {
                      "type": "REPEAT",
                      "content": {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "STRING",
                            "value": ","
                          },
                          {
                            "type": "CHOICE",
                            "members": [
                              {
                                "type": "SYMBOL",
                                "name": "pattern"
                              },
                              {
                                "type": "STRING",
                                "value": ".."
                              }
                            ]
                          }
                        ]
                      }
                    }
                  ]
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "]"
        }
      ]
    },
    "recursive_pattern": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "FIELD",
                "name": "type",
                "content": {
                  "type": "SYMBOL",
                  "name": "type"
                }
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "positional_pattern_clause"
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "property_pattern_clause"
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  }
                ]
              },
              {
                "type": "SYMBOL",
                "name": "property_pattern_clause"
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_variable_designation"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "positional_pattern_clause": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "("
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "subpattern"
                  },
                  {
                    "type": "REPEAT1",
                    "content": {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "STRING",
                          "value": ","
                        },
                        {
                          "type": "SYMBOL",
                          "name": "subpattern"
                        }
                      ]
                    }
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "STRING",
            "value": ")"
          }
        ]
      }
    },
    "property_pattern_clause": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "{"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "subpattern"
                  },
                  {
                    "type": "REPEAT",
                    "content": {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "STRING",
                          "value": ","
                        },
                        {
                          "type": "SYMBOL",
                          "name": "subpattern"
                        }
                      ]
                    }
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": ","
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "STRING",
            "value": "}"
          }
        ]
      }
    },
    "subpattern": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "expression"
                },
                {
                  "type": "STRING",
                  "value": ":"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "pattern"
        }
      ]
    },
    "relational_pattern": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "<"
            },
            {
              "type": "SYMBOL",
              "name": "expression"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "<="
            },
            {
              "type": "SYMBOL",
              "name": "expression"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": ">"
            },
            {
              "type": "SYMBOL",
              "name": "expression"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": ">="
            },
            {
              "type": "SYMBOL",
              "name": "expression"
            }
          ]
        }
      ]
    },
    "negated_pattern": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "not"
        },
        {
          "type": "SYMBOL",
          "name": "pattern"
        }
      ]
    },
    "and_pattern": {
      "type": "PREC_LEFT",
      "value": 8,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "left",
            "content": {
              "type": "SYMBOL",
              "name": "pattern"
            }
          },
          {
            "type": "FIELD",
            "name": "operator",
            "content": {
              "type": "STRING",
              "value": "and"
            }
          },
          {
            "type": "FIELD",
            "name": "right",
            "content": {
              "type": "SYMBOL",
              "name": "pattern"
            }
          }
        ]
      }
    },
    "or_pattern": {
      "type": "PREC_LEFT",
      "value": 6,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "left",
            "content": {
              "type": "SYMBOL",
              "name": "pattern"
            }
          },
          {
            "type": "FIELD",
            "name": "operator",
            "content": {
              "type": "STRING",
              "value": "or"
            }
          },
          {
            "type": "FIELD",
            "name": "right",
            "content": {
              "type": "SYMBOL",
              "name": "pattern"
            }
          }
        ]
      }
    },
    "declaration_pattern": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "type"
          }
        },
        {
          "type": "SYMBOL",
          "name": "_variable_designation"
        }
      ]
    },
    "_variable_designation": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "discard"
          },
          {
            "type": "SYMBOL",
            "name": "parenthesized_variable_designation"
          },
          {
            "type": "FIELD",
            "name": "name",
            "content": {
              "type": "SYMBOL",
              "name": "identifier"
            }
          }
        ]
      }
    },
    "parenthesized_variable_designation": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_variable_designation"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_variable_designation"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "non_lvalue_expression"
        },
        {
          "type": "SYMBOL",
          "name": "lvalue_expression"
        }
      ]
    },
    "non_lvalue_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "base"
        },
        {
          "type": "SYMBOL",
          "name": "binary_expression"
        },
        {
          "type": "SYMBOL",
          "name": "interpolated_string_expression"
        },
        {
          "type": "SYMBOL",
          "name": "conditional_expression"
        },
        {
          "type": "SYMBOL",
          "name": "conditional_access_expression"
        },
        {
          "type": "SYMBOL",
          "name": "literal"
        },
        {
          "type": "SYMBOL",
          "name": "_expression_statement_expression"
        },
        {
          "type": "SYMBOL",
          "name": "is_expression"
        },
        {
          "type": "SYMBOL",
          "name": "is_pattern_expression"
        },
        {
          "type": "SYMBOL",
          "name": "as_expression"
        },
        {
          "type": "SYMBOL",
          "name": "cast_expression"
        },
        {
          "type": "SYMBOL",
          "name": "checked_expression"
        },
        {
          "type": "SYMBOL",
          "name": "switch_expression"
        },
        {
          "type": "SYMBOL",
          "name": "throw_expression"
        },
        {
          "type": "SYMBOL",
          "name": "default_expression"
        },
        {
          "type": "SYMBOL",
          "name": "lambda_expression"
        },
        {
          "type": "SYMBOL",
          "name": "with_expression"
        },
        {
          "type": "SYMBOL",
          "name": "sizeof_expression"
        },
        {
          "type": "SYMBOL",
          "name": "typeof_expression"
        },
        {
          "type": "SYMBOL",
          "name": "makeref_expression"
        },
        {
          "type": "SYMBOL",
          "name": "ref_expression"
        },
        {
          "type": "SYMBOL",
          "name": "reftype_expression"
        },
        {
          "type": "SYMBOL",
          "name": "refvalue_expression"
        },
        {
          "type": "SYMBOL",
          "name": "stackalloc_expression"
        },
        {
          "type": "SYMBOL",
          "name": "range_expression"
        },
        {
          "type": "SYMBOL",
          "name": "array_creation_expression"
        },
        {
          "type": "SYMBOL",
          "name": "anonymous_method_expression"
        },
        {
          "type": "SYMBOL",
          "name": "anonymous_object_creation_expression"
        },
        {
          "type": "SYMBOL",
          "name": "implicit_array_creation_expression"
        },
        {
          "type": "SYMBOL",
          "name": "implicit_object_creation_expression"
        },
        {
          "type": "SYMBOL",
          "name": "implicit_stackalloc_expression"
        },
        {
          "type": "SYMBOL",
          "name": "initializer_expression"
        },
        {
          "type": "SYMBOL",
          "name": "query_expression"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "preproc_if_in_expression"
          },
          "named": true,
          "value": "preproc_if"
        }
      ]
    },
    "lvalue_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "this"
        },
        {
          "type": "SYMBOL",
          "name": "member_access_expression"
        },
        {
          "type": "SYMBOL",
          "name": "tuple_expression"
        },
        {
          "type": "SYMBOL",
          "name": "_simple_name"
        },
        {
          "type": "SYMBOL",
          "name": "element_access_expression"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "bracketed_argument_list"
          },
          "named": true,
          "value": "element_binding_expression"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "_pointer_indirection_expression"
          },
          "named": true,
          "value": "prefix_unary_expression"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "_parenthesized_lvalue_expression"
          },
          "named": true,
          "value": "parenthesized_expression"
        }
      ]
    },
    "_expression_statement_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "assignment_expression"
        },
        {
          "type": "SYMBOL",
          "name": "invocation_expression"
        },
        {
          "type": "SYMBOL",
          "name": "postfix_unary_expression"
        },
        {
          "type": "SYMBOL",
          "name": "prefix_unary_expression"
        },
        {
          "type": "SYMBOL",
          "name": "await_expression"
        },
        {
          "type": "SYMBOL",
          "name": "object_creation_expression"
        },
        {
          "type": "SYMBOL",
          "name": "parenthesized_expression"
        }
      ]
    },
    "assignment_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "left",
          "content": {
            "type": "SYMBOL",
            "name": "lvalue_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": "STRING",
                "value": ">>="
              },
              {
                "type": "STRING",
                "value": ">>>="
              },
              {
                "type": "STRING",
                "value": "??="
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "right",
          "content": {
            "type": "SYMBOL",
            "name": "expression"
          }
        }
      ]
    },
    "binary_expression": {
      "type": "CHOICE",
      "members": [
        {
          "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": 4,
          "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": 11,
          "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": 11,
          "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": 11,
          "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": 8,
          "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": 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": 12,
          "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": 12,
          "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": 13,
          "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": 13,
          "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": 13,
          "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": 10,
          "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": 10,
          "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": 9,
          "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": 9,
          "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": 10,
          "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": 10,
          "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_RIGHT",
          "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"
                }
              }
            ]
          }
        }
      ]
    },
    "postfix_unary_expression": {
      "type": "PREC",
      "value": 18,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "expression"
              },
              {
                "type": "STRING",
                "value": "++"
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "expression"
              },
              {
                "type": "STRING",
                "value": "--"
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "expression"
              },
              {
                "type": "STRING",
                "value": "!"
              }
            ]
          }
        ]
      }
    },
    "prefix_unary_expression": {
      "type": "PREC",
      "value": 17,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "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": "SYMBOL",
            "name": "expression"
          }
        ]
      }
    },
    "_pointer_indirection_expression": {
      "type": "PREC_RIGHT",
      "value": 17,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "*"
          },
          {
            "type": "SYMBOL",
            "name": "lvalue_expression"
          }
        ]
      }
    },
    "query_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "from_clause"
        },
        {
          "type": "SYMBOL",
          "name": "_query_body"
        }
      ]
    },
    "from_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "from"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "type",
              "content": {
                "type": "SYMBOL",
                "name": "type"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "STRING",
          "value": "in"
        },
        {
          "type": "SYMBOL",
          "name": "expression"
        }
      ]
    },
    "_query_body": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "REPEAT",
                "content": {
                  "type": "SYMBOL",
                  "name": "_query_clause"
                }
              },
              {
                "type": "SYMBOL",
                "name": "_select_or_group_clause"
              }
            ]
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "into"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "identifier"
                    }
                  ]
                },
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "REPEAT",
                      "content": {
                        "type": "SYMBOL",
                        "name": "_query_clause"
                      }
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_select_or_group_clause"
                    }
                  ]
                }
              ]
            }
          }
        ]
      }
    },
    "_query_clause": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "from_clause"
        },
        {
          "type": "SYMBOL",
          "name": "join_clause"
        },
        {
          "type": "SYMBOL",
          "name": "let_clause"
        },
        {
          "type": "SYMBOL",
          "name": "order_by_clause"
        },
        {
          "type": "SYMBOL",
          "name": "where_clause"
        }
      ]
    },
    "join_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "join"
        },
        {
          "type": "SYMBOL",
          "name": "_join_header"
        },
        {
          "type": "SYMBOL",
          "name": "_join_body"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "join_into_clause"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_join_header": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "type",
              "content": {
                "type": "SYMBOL",
                "name": "type"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "STRING",
          "value": "in"
        },
        {
          "type": "SYMBOL",
          "name": "expression"
        }
      ]
    },
    "_join_body": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "on"
        },
        {
          "type": "SYMBOL",
          "name": "expression"
        },
        {
          "type": "STRING",
          "value": "equals"
        },
        {
          "type": "SYMBOL",
          "name": "expression"
        }
      ]
    },
    "join_into_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "into"
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        }
      ]
    },
    "let_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "let"
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "STRING",
          "value": "="
        },
        {
          "type": "SYMBOL",
          "name": "expression"
        }
      ]
    },
    "order_by_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "orderby"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_ordering"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "_ordering"
                  }
                ]
              }
            }
          ]
        }
      ]
    },
    "_ordering": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "expression"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": "ascending"
                },
                {
                  "type": "STRING",
                  "value": "descending"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "where_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "where"
        },
        {
          "type": "SYMBOL",
          "name": "expression"
        }
      ]
    },
    "_select_or_group_clause": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "group_clause"
        },
        {
          "type": "SYMBOL",
          "name": "select_clause"
        }
      ]
    },
    "group_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "group"
        },
        {
          "type": "SYMBOL",
          "name": "expression"
        },
        {
          "type": "STRING",
          "value": "by"
        },
        {
          "type": "SYMBOL",
          "name": "expression"
        }
      ]
    },
    "select_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "select"
        },
        {
          "type": "SYMBOL",
          "name": "expression"
        }
      ]
    },
    "conditional_expression": {
      "type": "PREC_RIGHT",
      "value": 2,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "condition",
            "content": {
              "type": "SYMBOL",
              "name": "expression"
            }
          },
          {
            "type": "STRING",
            "value": "?"
          },
          {
            "type": "FIELD",
            "name": "consequence",
            "content": {
              "type": "SYMBOL",
              "name": "expression"
            }
          },
          {
            "type": "STRING",
            "value": ":"
          },
          {
            "type": "FIELD",
            "name": "alternative",
            "content": {
              "type": "SYMBOL",
              "name": "expression"
            }
          }
        ]
      }
    },
    "conditional_access_expression": {
      "type": "PREC_RIGHT",
      "value": 2,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "condition",
            "content": {
              "type": "SYMBOL",
              "name": "expression"
            }
          },
          {
            "type": "STRING",
            "value": "?"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "member_binding_expression"
              },
              {
                "type": "ALIAS",
                "content": {
                  "type": "SYMBOL",
                  "name": "bracketed_argument_list"
                },
                "named": true,
                "value": "element_binding_expression"
              }
            ]
          }
        ]
      }
    },
    "as_expression": {
      "type": "PREC",
      "value": 10,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "left",
            "content": {
              "type": "SYMBOL",
              "name": "expression"
            }
          },
          {
            "type": "FIELD",
            "name": "operator",
            "content": {
              "type": "STRING",
              "value": "as"
            }
          },
          {
            "type": "FIELD",
            "name": "right",
            "content": {
              "type": "SYMBOL",
              "name": "type"
            }
          }
        ]
      }
    },
    "is_expression": {
      "type": "PREC",
      "value": 10,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "left",
            "content": {
              "type": "SYMBOL",
              "name": "expression"
            }
          },
          {
            "type": "FIELD",
            "name": "operator",
            "content": {
              "type": "STRING",
              "value": "is"
            }
          },
          {
            "type": "FIELD",
            "name": "right",
            "content": {
              "type": "SYMBOL",
              "name": "type"
            }
          }
        ]
      }
    },
    "is_pattern_expression": {
      "type": "PREC",
      "value": 10,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "expression",
            "content": {
              "type": "SYMBOL",
              "name": "expression"
            }
          },
          {
            "type": "STRING",
            "value": "is"
          },
          {
            "type": "FIELD",
            "name": "pattern",
            "content": {
              "type": "SYMBOL",
              "name": "pattern"
            }
          }
        ]
      }
    },
    "cast_expression": {
      "type": "PREC",
      "value": 17,
      "content": {
        "type": "PREC_DYNAMIC",
        "value": 1,
        "content": {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "("
            },
            {
              "type": "FIELD",
              "name": "type",
              "content": {
                "type": "SYMBOL",
                "name": "type"
              }
            },
            {
              "type": "STRING",
              "value": ")"
            },
            {
              "type": "FIELD",
              "name": "value",
              "content": {
                "type": "SYMBOL",
                "name": "expression"
              }
            }
          ]
        }
      }
    },
    "checked_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "checked"
            },
            {
              "type": "STRING",
              "value": "unchecked"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "expression"
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "invocation_expression": {
      "type": "PREC",
      "value": 18,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "function",
            "content": {
              "type": "SYMBOL",
              "name": "expression"
            }
          },
          {
            "type": "FIELD",
            "name": "arguments",
            "content": {
              "type": "SYMBOL",
              "name": "argument_list"
            }
          }
        ]
      }
    },
    "switch_expression": {
      "type": "PREC",
      "value": 15,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "expression"
          },
          {
            "type": "STRING",
            "value": "switch"
          },
          {
            "type": "STRING",
            "value": "{"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "switch_expression_arm"
                  },
                  {
                    "type": "REPEAT",
                    "content": {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "STRING",
                          "value": ","
                        },
                        {
                          "type": "SYMBOL",
                          "name": "switch_expression_arm"
                        }
                      ]
                    }
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": ","
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "STRING",
            "value": "}"
          }
        ]
      }
    },
    "switch_expression_arm": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "pattern"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "when_clause"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "=>"
        },
        {
          "type": "SYMBOL",
          "name": "expression"
        }
      ]
    },
    "when_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "when"
        },
        {
          "type": "SYMBOL",
          "name": "expression"
        }
      ]
    },
    "await_expression": {
      "type": "PREC_RIGHT",
      "value": 17,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "await"
          },
          {
            "type": "SYMBOL",
            "name": "expression"
          }
        ]
      }
    },
    "throw_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "throw"
        },
        {
          "type": "SYMBOL",
          "name": "expression"
        }
      ]
    },
    "element_access_expression": {
      "type": "PREC",
      "value": 18,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "expression",
            "content": {
              "type": "SYMBOL",
              "name": "expression"
            }
          },
          {
            "type": "FIELD",
            "name": "subscript",
            "content": {
              "type": "SYMBOL",
              "name": "bracketed_argument_list"
            }
          }
        ]
      }
    },
    "interpolated_string_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "interpolation_regular_start"
              },
              "named": true,
              "value": "interpolation_start"
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "interpolation_start_quote"
              },
              "named": false,
              "value": "\""
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "_interpolated_string_content"
              }
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "interpolation_end_quote"
              },
              "named": false,
              "value": "\""
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "interpolation_verbatim_start"
              },
              "named": true,
              "value": "interpolation_start"
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "interpolation_start_quote"
              },
              "named": false,
              "value": "\""
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "_interpolated_verbatim_string_content"
              }
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "interpolation_end_quote"
              },
              "named": false,
              "value": "\""
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "interpolation_raw_start"
              },
              "named": true,
              "value": "interpolation_start"
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "interpolation_start_quote"
              },
              "named": true,
              "value": "interpolation_quote"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "_interpolated_raw_string_content"
              }
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "interpolation_end_quote"
              },
              "named": true,
              "value": "interpolation_quote"
            }
          ]
        }
      ]
    },
    "_interpolated_string_content": {
      "type": "CHOICE",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "interpolation_string_content"
          },
          "named": true,
          "value": "string_content"
        },
        {
          "type": "SYMBOL",
          "name": "escape_sequence"
        },
        {
          "type": "SYMBOL",
          "name": "interpolation"
        }
      ]
    },
    "_interpolated_verbatim_string_content": {
      "type": "CHOICE",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "interpolation_string_content"
          },
          "named": true,
          "value": "string_content"
        },
        {
          "type": "SYMBOL",
          "name": "interpolation"
        }
      ]
    },
    "_interpolated_raw_string_content": {
      "type": "CHOICE",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "interpolation_string_content"
          },
          "named": true,
          "value": "string_content"
        },
        {
          "type": "SYMBOL",
          "name": "interpolation"
        }
      ]
    },
    "interpolation": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "interpolation_open_brace"
          },
          "named": true,
          "value": "interpolation_brace"
        },
        {
          "type": "SYMBOL",
          "name": "expression"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "interpolation_alignment_clause"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "interpolation_format_clause"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "interpolation_close_brace"
          },
          "named": true,
          "value": "interpolation_brace"
        }
      ]
    },
    "interpolation_alignment_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": ","
        },
        {
          "type": "SYMBOL",
          "name": "expression"
        }
      ]
    },
    "interpolation_format_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "PATTERN",
          "value": "[^}\"]+"
        }
      ]
    },
    "member_access_expression": {
      "type": "PREC",
      "value": 18,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "expression",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "expression"
                },
                {
                  "type": "SYMBOL",
                  "name": "predefined_type"
                },
                {
                  "type": "SYMBOL",
                  "name": "_name"
                }
              ]
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "."
              },
              {
                "type": "STRING",
                "value": "->"
              }
            ]
          },
          {
            "type": "FIELD",
            "name": "name",
            "content": {
              "type": "SYMBOL",
              "name": "_simple_name"
            }
          }
        ]
      }
    },
    "member_binding_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "."
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "_simple_name"
          }
        }
      ]
    },
    "object_creation_expression": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "new"
          },
          {
            "type": "FIELD",
            "name": "type",
            "content": {
              "type": "SYMBOL",
              "name": "type"
            }
          },
          {
            "type": "FIELD",
            "name": "arguments",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "argument_list"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          },
          {
            "type": "FIELD",
            "name": "initializer",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "initializer_expression"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          }
        ]
      }
    },
    "_object_creation_type": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_name"
        },
        {
          "type": "SYMBOL",
          "name": "nullable_type"
        },
        {
          "type": "SYMBOL",
          "name": "predefined_type"
        }
      ]
    },
    "parenthesized_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "non_lvalue_expression"
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "_parenthesized_lvalue_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "lvalue_expression"
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "lambda_expression": {
      "type": "PREC",
      "value": -1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "REPEAT",
            "content": {
              "type": "SYMBOL",
              "name": "attribute_list"
            }
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "PREC",
              "value": -1,
              "content": {
                "type": "ALIAS",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "static"
                    },
                    {
                      "type": "STRING",
                      "value": "async"
                    }
                  ]
                },
                "named": true,
                "value": "modifier"
              }
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "FIELD",
                "name": "type",
                "content": {
                  "type": "SYMBOL",
                  "name": "type"
                }
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "FIELD",
            "name": "parameters",
            "content": {
              "type": "SYMBOL",
              "name": "_lambda_parameters"
            }
          },
          {
            "type": "STRING",
            "value": "=>"
          },
          {
            "type": "FIELD",
            "name": "body",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "block"
                },
                {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              ]
            }
          }
        ]
      }
    },
    "_lambda_parameters": {
      "type": "PREC",
      "value": -1,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "parameter_list"
          },
          {
            "type": "ALIAS",
            "content": {
              "type": "SYMBOL",
              "name": "identifier"
            },
            "named": true,
            "value": "implicit_parameter"
          }
        ]
      }
    },
    "array_creation_expression": {
      "type": "PREC_DYNAMIC",
      "value": 17,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "new"
          },
          {
            "type": "FIELD",
            "name": "type",
            "content": {
              "type": "SYMBOL",
              "name": "array_type"
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "initializer_expression"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "anonymous_method_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "PREC",
            "value": -1,
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "static"
                  },
                  {
                    "type": "STRING",
                    "value": "async"
                  }
                ]
              },
              "named": true,
              "value": "modifier"
            }
          }
        },
        {
          "type": "STRING",
          "value": "delegate"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "parameters",
              "content": {
                "type": "SYMBOL",
                "name": "parameter_list"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "block"
        }
      ]
    },
    "anonymous_object_creation_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "new"
        },
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_anonymous_object_member_declarator"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_anonymous_object_member_declarator"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ","
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "_anonymous_object_member_declarator": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "identifier"
            },
            {
              "type": "STRING",
              "value": "="
            },
            {
              "type": "SYMBOL",
              "name": "expression"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "expression"
        }
      ]
    },
    "implicit_array_creation_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "new"
        },
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "STRING",
            "value": ","
          }
        },
        {
          "type": "STRING",
          "value": "]"
        },
        {
          "type": "SYMBOL",
          "name": "initializer_expression"
        }
      ]
    },
    "implicit_object_creation_expression": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "new"
          },
          {
            "type": "SYMBOL",
            "name": "argument_list"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "initializer_expression"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "implicit_stackalloc_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "stackalloc"
        },
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "STRING",
          "value": "]"
        },
        {
          "type": "SYMBOL",
          "name": "initializer_expression"
        }
      ]
    },
    "initializer_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "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": "}"
        }
      ]
    },
    "declaration_expression": {
      "type": "PREC_DYNAMIC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "type",
            "content": {
              "type": "SYMBOL",
              "name": "type"
            }
          },
          {
            "type": "FIELD",
            "name": "name",
            "content": {
              "type": "SYMBOL",
              "name": "identifier"
            }
          }
        ]
      }
    },
    "default_expression": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "default"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": "("
                  },
                  {
                    "type": "FIELD",
                    "name": "type",
                    "content": {
                      "type": "SYMBOL",
                      "name": "type"
                    }
                  },
                  {
                    "type": "STRING",
                    "value": ")"
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "with_expression": {
      "type": "PREC_LEFT",
      "value": 14,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "expression"
          },
          {
            "type": "STRING",
            "value": "with"
          },
          {
            "type": "STRING",
            "value": "{"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "with_initializer"
                  },
                  {
                    "type": "REPEAT",
                    "content": {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "STRING",
                          "value": ","
                        },
                        {
                          "type": "SYMBOL",
                          "name": "with_initializer"
                        }
                      ]
                    }
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "STRING",
            "value": "}"
          }
        ]
      }
    },
    "with_initializer": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "STRING",
          "value": "="
        },
        {
          "type": "SYMBOL",
          "name": "expression"
        }
      ]
    },
    "sizeof_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "sizeof"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "type"
          }
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "typeof_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "typeof"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "type"
          }
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "makeref_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "__makeref"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "expression"
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "ref_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "ref"
        },
        {
          "type": "SYMBOL",
          "name": "expression"
        }
      ]
    },
    "reftype_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "__reftype"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "expression"
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "refvalue_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "__refvalue"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "SYMBOL",
            "name": "expression"
          }
        },
        {
          "type": "STRING",
          "value": ","
        },
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "type"
          }
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "stackalloc_expression": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "stackalloc"
          },
          {
            "type": "FIELD",
            "name": "type",
            "content": {
              "type": "SYMBOL",
              "name": "array_type"
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "initializer_expression"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "range_expression": {
      "type": "PREC_RIGHT",
      "value": 16,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "expression"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "STRING",
            "value": ".."
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "expression"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "tuple_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "argument"
            },
            {
              "type": "REPEAT1",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "argument"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "literal": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "null_literal"
        },
        {
          "type": "SYMBOL",
          "name": "character_literal"
        },
        {
          "type": "SYMBOL",
          "name": "integer_literal"
        },
        {
          "type": "SYMBOL",
          "name": "real_literal"
        },
        {
          "type": "SYMBOL",
          "name": "boolean_literal"
        },
        {
          "type": "SYMBOL",
          "name": "string_literal"
        },
        {
          "type": "SYMBOL",
          "name": "verbatim_string_literal"
        },
        {
          "type": "SYMBOL",
          "name": "raw_string_literal"
        }
      ]
    },
    "null_literal": {
      "type": "STRING",
      "value": "null"
    },
    "character_literal": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "'"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "character_literal_content"
            },
            {
              "type": "SYMBOL",
              "name": "escape_sequence"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "'"
        }
      ]
    },
    "character_literal_content": {
      "type": "IMMEDIATE_TOKEN",
      "content": {
        "type": "PATTERN",
        "value": "[^'\\\\]"
      }
    },
    "integer_literal": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "PATTERN",
                "value": "([0-9][0-9_]*[0-9]|[0-9])"
              },
              {
                "type": "PATTERN",
                "value": "0[xX][0-9a-fA-F_]*[0-9a-fA-F]+"
              },
              {
                "type": "PATTERN",
                "value": "0[bB][01_]*[01]+"
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "PATTERN",
                "value": "([uU][lL]?|[lL][uU]?)"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "real_literal": {
      "type": "TOKEN",
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "PATTERN",
                "value": "([0-9][0-9_]*[0-9]|[0-9])"
              },
              {
                "type": "STRING",
                "value": "."
              },
              {
                "type": "PATTERN",
                "value": "([0-9][0-9_]*[0-9]|[0-9])"
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "PATTERN",
                    "value": "[eE][+-]?[0-9][0-9_]*"
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "PATTERN",
                    "value": "[fFdDmM]"
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "."
              },
              {
                "type": "PATTERN",
                "value": "([0-9][0-9_]*[0-9]|[0-9])"
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "PATTERN",
                    "value": "[eE][+-]?[0-9][0-9_]*"
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "PATTERN",
                    "value": "[fFdDmM]"
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "PATTERN",
                "value": "([0-9][0-9_]*[0-9]|[0-9])"
              },
              {
                "type": "PATTERN",
                "value": "[eE][+-]?[0-9][0-9_]*"
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "PATTERN",
                    "value": "[fFdDmM]"
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "PATTERN",
                "value": "([0-9][0-9_]*[0-9]|[0-9])"
              },
              {
                "type": "PATTERN",
                "value": "[fFdDmM]"
              }
            ]
          }
        ]
      }
    },
    "string_literal": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "\""
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "string_literal_content"
              },
              {
                "type": "SYMBOL",
                "name": "escape_sequence"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "\""
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "string_literal_encoding"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "string_literal_content": {
      "type": "CHOICE",
      "members": [
        {
          "type": "IMMEDIATE_TOKEN",
          "content": {
            "type": "PREC",
            "value": 1,
            "content": {
              "type": "PATTERN",
              "value": "[^\"\\\\\\n]+"
            }
          }
        },
        {
          "type": "PREC",
          "value": 2,
          "content": {
            "type": "IMMEDIATE_TOKEN",
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "\\"
                },
                {
                  "type": "PATTERN",
                  "value": "[^abefnrtv'\\\"\\\\\\?0]"
                }
              ]
            }
          }
        }
      ]
    },
    "escape_sequence": {
      "type": "TOKEN",
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "PATTERN",
            "value": "\\\\x[0-9a-fA-F]{2,4}"
          },
          {
            "type": "PATTERN",
            "value": "\\\\u[0-9a-fA-F]{4}"
          },
          {
            "type": "PATTERN",
            "value": "\\\\U[0-9a-fA-F]{8}"
          },
          {
            "type": "PATTERN",
            "value": "\\\\[abefnrtv'\\\"\\\\\\?0]"
          }
        ]
      }
    },
    "string_literal_encoding": {
      "type": "IMMEDIATE_TOKEN",
      "content": {
        "type": "PATTERN",
        "value": "(u|U)8"
      }
    },
    "verbatim_string_literal": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "@\""
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "PATTERN",
                  "value": "[^\"]"
                },
                {
                  "type": "STRING",
                  "value": "\"\""
                }
              ]
            }
          },
          {
            "type": "STRING",
            "value": "\""
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "PATTERN",
                "value": "(u|U)8"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "raw_string_literal": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "raw_string_start"
        },
        {
          "type": "SYMBOL",
          "name": "raw_string_content"
        },
        {
          "type": "SYMBOL",
          "name": "raw_string_end"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "PATTERN",
              "value": "(u|U)8"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "boolean_literal": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "true"
        },
        {
          "type": "STRING",
          "value": "false"
        }
      ]
    },
    "_identifier_token": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "@"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "PATTERN",
            "value": "(\\p{XID_Start}|_|\\\\u[0-9A-Fa-f]{4}|\\\\U[0-9A-Fa-f]{8})(\\p{XID_Continue}|\\\\u[0-9A-Fa-f]{4}|\\\\U[0-9A-Fa-f]{8})*"
          }
        ]
      }
    },
    "identifier": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_identifier_token"
        },
        {
          "type": "SYMBOL",
          "name": "_reserved_identifier"
        }
      ]
    },
    "_reserved_identifier": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "alias"
        },
        {
          "type": "STRING",
          "value": "ascending"
        },
        {
          "type": "STRING",
          "value": "by"
        },
        {
          "type": "STRING",
          "value": "descending"
        },
        {
          "type": "STRING",
          "value": "equals"
        },
        {
          "type": "STRING",
          "value": "file"
        },
        {
          "type": "STRING",
          "value": "from"
        },
        {
          "type": "STRING",
          "value": "global"
        },
        {
          "type": "STRING",
          "value": "group"
        },
        {
          "type": "STRING",
          "value": "into"
        },
        {
          "type": "STRING",
          "value": "join"
        },
        {
          "type": "STRING",
          "value": "let"
        },
        {
          "type": "STRING",
          "value": "notnull"
        },
        {
          "type": "STRING",
          "value": "on"
        },
        {
          "type": "STRING",
          "value": "orderby"
        },
        {
          "type": "STRING",
          "value": "scoped"
        },
        {
          "type": "STRING",
          "value": "select"
        },
        {
          "type": "STRING",
          "value": "unmanaged"
        },
        {
          "type": "STRING",
          "value": "var"
        },
        {
          "type": "STRING",
          "value": "when"
        },
        {
          "type": "STRING",
          "value": "where"
        },
        {
          "type": "STRING",
          "value": "yield"
        }
      ]
    },
    "preproc_if": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "#[ \t]*if"
            },
            "named": false,
            "value": "#if"
          },
          {
            "type": "FIELD",
            "name": "condition",
            "content": {
              "type": "SYMBOL",
              "name": "_preproc_expression"
            }
          },
          {
            "type": "PATTERN",
            "value": "\\n"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SYMBOL",
              "name": "declaration"
            }
          },
          {
            "type": "FIELD",
            "name": "alternative",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "preproc_else"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "preproc_elif"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          },
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "#[ \t]*endif"
            },
            "named": false,
            "value": "#endif"
          }
        ]
      }
    },
    "preproc_else": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "#[ \t]*else"
            },
            "named": false,
            "value": "#else"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SYMBOL",
              "name": "declaration"
            }
          }
        ]
      }
    },
    "preproc_elif": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "#[ \t]*elif"
            },
            "named": false,
            "value": "#elif"
          },
          {
            "type": "FIELD",
            "name": "condition",
            "content": {
              "type": "SYMBOL",
              "name": "_preproc_expression"
            }
          },
          {
            "type": "PATTERN",
            "value": "\\n"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SYMBOL",
              "name": "declaration"
            }
          },
          {
            "type": "FIELD",
            "name": "alternative",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "preproc_else"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "preproc_elif"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          }
        ]
      }
    },
    "preproc_if_in_top_level": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "#[ \t]*if"
            },
            "named": false,
            "value": "#if"
          },
          {
            "type": "FIELD",
            "name": "condition",
            "content": {
              "type": "SYMBOL",
              "name": "_preproc_expression"
            }
          },
          {
            "type": "PATTERN",
            "value": "\\n"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_top_level_item_no_statement"
                },
                {
                  "type": "SYMBOL",
                  "name": "statement"
                }
              ]
            }
          },
          {
            "type": "FIELD",
            "name": "alternative",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_else_in_top_level"
                      },
                      "named": true,
                      "value": "preproc_else"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_elif_in_top_level"
                      },
                      "named": true,
                      "value": "preproc_elif"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          },
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "#[ \t]*endif"
            },
            "named": false,
            "value": "#endif"
          }
        ]
      }
    },
    "preproc_else_in_top_level": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "#[ \t]*else"
            },
            "named": false,
            "value": "#else"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_top_level_item_no_statement"
                },
                {
                  "type": "SYMBOL",
                  "name": "statement"
                }
              ]
            }
          }
        ]
      }
    },
    "preproc_elif_in_top_level": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "#[ \t]*elif"
            },
            "named": false,
            "value": "#elif"
          },
          {
            "type": "FIELD",
            "name": "condition",
            "content": {
              "type": "SYMBOL",
              "name": "_preproc_expression"
            }
          },
          {
            "type": "PATTERN",
            "value": "\\n"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_top_level_item_no_statement"
                },
                {
                  "type": "SYMBOL",
                  "name": "statement"
                }
              ]
            }
          },
          {
            "type": "FIELD",
            "name": "alternative",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_else_in_top_level"
                      },
                      "named": true,
                      "value": "preproc_else"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_elif_in_top_level"
                      },
                      "named": true,
                      "value": "preproc_elif"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          }
        ]
      }
    },
    "preproc_if_in_expression": {
      "type": "PREC",
      "value": -2,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "#[ \t]*if"
            },
            "named": false,
            "value": "#if"
          },
          {
            "type": "FIELD",
            "name": "condition",
            "content": {
              "type": "SYMBOL",
              "name": "_preproc_expression"
            }
          },
          {
            "type": "PATTERN",
            "value": "\\n"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "expression"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "FIELD",
            "name": "alternative",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_else_in_expression"
                      },
                      "named": true,
                      "value": "preproc_else"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_elif_in_expression"
                      },
                      "named": true,
                      "value": "preproc_elif"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          },
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "#[ \t]*endif"
            },
            "named": false,
            "value": "#endif"
          }
        ]
      }
    },
    "preproc_else_in_expression": {
      "type": "PREC",
      "value": -2,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "#[ \t]*else"
            },
            "named": false,
            "value": "#else"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "expression"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "preproc_elif_in_expression": {
      "type": "PREC",
      "value": -2,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "#[ \t]*elif"
            },
            "named": false,
            "value": "#elif"
          },
          {
            "type": "FIELD",
            "name": "condition",
            "content": {
              "type": "SYMBOL",
              "name": "_preproc_expression"
            }
          },
          {
            "type": "PATTERN",
            "value": "\\n"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "expression"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "FIELD",
            "name": "alternative",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_else_in_expression"
                      },
                      "named": true,
                      "value": "preproc_else"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_elif_in_expression"
                      },
                      "named": true,
                      "value": "preproc_elif"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          }
        ]
      }
    },
    "preproc_if_in_enum_member_declaration": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "#[ \t]*if"
            },
            "named": false,
            "value": "#if"
          },
          {
            "type": "FIELD",
            "name": "condition",
            "content": {
              "type": "SYMBOL",
              "name": "_preproc_expression"
            }
          },
          {
            "type": "PATTERN",
            "value": "\\n"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "enum_member_declaration"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "FIELD",
            "name": "alternative",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_else_in_enum_member_declaration"
                      },
                      "named": true,
                      "value": "preproc_else"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_elif_in_enum_member_declaration"
                      },
                      "named": true,
                      "value": "preproc_elif"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          },
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "#[ \t]*endif"
            },
            "named": false,
            "value": "#endif"
          }
        ]
      }
    },
    "preproc_else_in_enum_member_declaration": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "#[ \t]*else"
            },
            "named": false,
            "value": "#else"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "enum_member_declaration"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "preproc_elif_in_enum_member_declaration": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "#[ \t]*elif"
            },
            "named": false,
            "value": "#elif"
          },
          {
            "type": "FIELD",
            "name": "condition",
            "content": {
              "type": "SYMBOL",
              "name": "_preproc_expression"
            }
          },
          {
            "type": "PATTERN",
            "value": "\\n"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "enum_member_declaration"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "FIELD",
            "name": "alternative",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_else_in_enum_member_declaration"
                      },
                      "named": true,
                      "value": "preproc_else"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_elif_in_enum_member_declaration"
                      },
                      "named": true,
                      "value": "preproc_elif"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          }
        ]
      }
    },
    "preproc_arg": {
      "type": "TOKEN",
      "content": {
        "type": "PREC",
        "value": -1,
        "content": {
          "type": "PATTERN",
          "value": "\\S([^/\\n]|\\/[^*]|\\\\\\r?\\n)*"
        }
      }
    },
    "preproc_directive": {
      "type": "PATTERN",
      "value": "#[ \\t]*[a-zA-Z0-9]\\w*"
    },
    "_preproc_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "SYMBOL",
          "name": "boolean_literal"
        },
        {
          "type": "SYMBOL",
          "name": "integer_literal"
        },
        {
          "type": "SYMBOL",
          "name": "character_literal"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "preproc_unary_expression"
          },
          "named": true,
          "value": "unary_expression"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "preproc_binary_expression"
          },
          "named": true,
          "value": "binary_expression"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "preproc_parenthesized_expression"
          },
          "named": true,
          "value": "parenthesized_expression"
        }
      ]
    },
    "preproc_parenthesized_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "_preproc_expression"
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "preproc_unary_expression": {
      "type": "PREC_LEFT",
      "value": 17,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "operator",
            "content": {
              "type": "STRING",
              "value": "!"
            }
          },
          {
            "type": "FIELD",
            "name": "argument",
            "content": {
              "type": "SYMBOL",
              "name": "_preproc_expression"
            }
          }
        ]
      }
    },
    "preproc_binary_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PREC_LEFT",
          "value": 4,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_preproc_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "||"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_preproc_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 5,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_preproc_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "&&"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_preproc_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 9,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_preproc_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "=="
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_preproc_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 9,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_preproc_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "!="
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_preproc_expression"
                }
              }
            ]
          }
        }
      ]
    },
    "preproc_region": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "#[ \t]*region"
          },
          "named": false,
          "value": "#region"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "content",
              "content": {
                "type": "SYMBOL",
                "name": "preproc_arg"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "PATTERN",
          "value": "\\n"
        }
      ]
    },
    "preproc_endregion": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "#[ \t]*endregion"
          },
          "named": false,
          "value": "#endregion"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "content",
              "content": {
                "type": "SYMBOL",
                "name": "preproc_arg"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "PATTERN",
          "value": "\\n"
        }
      ]
    },
    "preproc_line": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "#[ \t]*line"
          },
          "named": false,
          "value": "#line"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "default"
            },
            {
              "type": "STRING",
              "value": "hidden"
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "integer_literal"
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "string_literal"
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "("
                },
                {
                  "type": "SYMBOL",
                  "name": "integer_literal"
                },
                {
                  "type": "STRING",
                  "value": ","
                },
                {
                  "type": "SYMBOL",
                  "name": "integer_literal"
                },
                {
                  "type": "STRING",
                  "value": ")"
                },
                {
                  "type": "STRING",
                  "value": "-"
                },
                {
                  "type": "STRING",
                  "value": "("
                },
                {
                  "type": "SYMBOL",
                  "name": "integer_literal"
                },
                {
                  "type": "STRING",
                  "value": ","
                },
                {
                  "type": "SYMBOL",
                  "name": "integer_literal"
                },
                {
                  "type": "STRING",
                  "value": ")"
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "integer_literal"
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "SYMBOL",
                  "name": "string_literal"
                }
              ]
            }
          ]
        },
        {
          "type": "PATTERN",
          "value": "\\n"
        }
      ]
    },
    "preproc_pragma": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "#[ \t]*pragma"
          },
          "named": false,
          "value": "#pragma"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "warning"
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "disable"
                    },
                    {
                      "type": "STRING",
                      "value": "restore"
                    }
                  ]
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "CHOICE",
                          "members": [
                            {
                              "type": "SYMBOL",
                              "name": "identifier"
                            },
                            {
                              "type": "SYMBOL",
                              "name": "integer_literal"
                            }
                          ]
                        },
                        {
                          "type": "REPEAT",
                          "content": {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "STRING",
                                "value": ","
                              },
                              {
                                "type": "CHOICE",
                                "members": [
                                  {
                                    "type": "SYMBOL",
                                    "name": "identifier"
                                  },
                                  {
                                    "type": "SYMBOL",
                                    "name": "integer_literal"
                                  }
                                ]
                              }
                            ]
                          }
                        }
                      ]
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "checksum"
                },
                {
                  "type": "SYMBOL",
                  "name": "string_literal"
                },
                {
                  "type": "SYMBOL",
                  "name": "string_literal"
                },
                {
                  "type": "SYMBOL",
                  "name": "string_literal"
                }
              ]
            }
          ]
        },
        {
          "type": "PATTERN",
          "value": "\\n"
        }
      ]
    },
    "preproc_nullable": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "#[ \t]*nullable"
          },
          "named": false,
          "value": "#nullable"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "enable"
            },
            {
              "type": "STRING",
              "value": "disable"
            },
            {
              "type": "STRING",
              "value": "restore"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": "annotations"
                },
                {
                  "type": "STRING",
                  "value": "warnings"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "PATTERN",
          "value": "\\n"
        }
      ]
    },
    "preproc_error": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "#[ \t]*error"
          },
          "named": false,
          "value": "#error"
        },
        {
          "type": "SYMBOL",
          "name": "preproc_arg"
        },
        {
          "type": "PATTERN",
          "value": "\\n"
        }
      ]
    },
    "preproc_warning": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "#[ \t]*warning"
          },
          "named": false,
          "value": "#warning"
        },
        {
          "type": "SYMBOL",
          "name": "preproc_arg"
        },
        {
          "type": "PATTERN",
          "value": "\\n"
        }
      ]
    },
    "preproc_define": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "#[ \t]*define"
          },
          "named": false,
          "value": "#define"
        },
        {
          "type": "SYMBOL",
          "name": "preproc_arg"
        },
        {
          "type": "PATTERN",
          "value": "\\n"
        }
      ]
    },
    "preproc_undef": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "#[ \t]*undef"
          },
          "named": false,
          "value": "#undef"
        },
        {
          "type": "SYMBOL",
          "name": "preproc_arg"
        },
        {
          "type": "PATTERN",
          "value": "\\n"
        }
      ]
    },
    "shebang_directive": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "#!"
          },
          {
            "type": "PATTERN",
            "value": ".*"
          }
        ]
      }
    },
    "comment": {
      "type": "TOKEN",
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "//"
              },
              {
                "type": "PATTERN",
                "value": "[^\\n\\r]*"
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "/*"
              },
              {
                "type": "PATTERN",
                "value": "[^*]*\\*+([^/*][^*]*\\*+)*"
              },
              {
                "type": "STRING",
                "value": "/"
              }
            ]
          }
        ]
      }
    }
  },
  "extras": [
    {
      "type": "PATTERN",
      "value": "[\\s\\u00A0\\uFEFF\\u3000]+"
    },
    {
      "type": "SYMBOL",
      "name": "comment"
    },
    {
      "type": "SYMBOL",
      "name": "preproc_region"
    },
    {
      "type": "SYMBOL",
      "name": "preproc_endregion"
    },
    {
      "type": "SYMBOL",
      "name": "preproc_line"
    },
    {
      "type": "SYMBOL",
      "name": "preproc_pragma"
    },
    {
      "type": "SYMBOL",
      "name": "preproc_nullable"
    },
    {
      "type": "SYMBOL",
      "name": "preproc_error"
    },
    {
      "type": "SYMBOL",
      "name": "preproc_warning"
    },
    {
      "type": "SYMBOL",
      "name": "preproc_define"
    },
    {
      "type": "SYMBOL",
      "name": "preproc_undef"
    }
  ],
  "conflicts": [
    [
      "_simple_name",
      "generic_name"
    ],
    [
      "_simple_name",
      "constructor_declaration"
    ],
    [
      "_simple_name",
      "type_parameter"
    ],
    [
      "tuple_element",
      "type_pattern"
    ],
    [
      "tuple_element",
      "using_variable_declarator"
    ],
    [
      "tuple_element",
      "declaration_expression"
    ],
    [
      "tuple_pattern",
      "parameter"
    ],
    [
      "tuple_pattern",
      "_simple_name"
    ],
    [
      "lvalue_expression",
      "_name"
    ],
    [
      "parameter",
      "lvalue_expression"
    ],
    [
      "type",
      "attribute"
    ],
    [
      "type",
      "nullable_type"
    ],
    [
      "type",
      "nullable_type",
      "array_creation_expression"
    ],
    [
      "type",
      "_array_base_type"
    ],
    [
      "type",
      "_array_base_type",
      "array_creation_expression"
    ],
    [
      "type",
      "array_creation_expression"
    ],
    [
      "type",
      "_pointer_base_type"
    ],
    [
      "qualified_name",
      "member_access_expression"
    ],
    [
      "qualified_name",
      "explicit_interface_specifier"
    ],
    [
      "_array_base_type",
      "stackalloc_expression"
    ],
    [
      "constant_pattern",
      "non_lvalue_expression"
    ],
    [
      "constant_pattern",
      "_expression_statement_expression"
    ],
    [
      "constant_pattern",
      "lvalue_expression"
    ],
    [
      "constant_pattern",
      "_name"
    ],
    [
      "constant_pattern",
      "lvalue_expression",
      "_name"
    ],
    [
      "_reserved_identifier",
      "modifier"
    ],
    [
      "_reserved_identifier",
      "scoped_type"
    ],
    [
      "_reserved_identifier",
      "implicit_type"
    ],
    [
      "_reserved_identifier",
      "from_clause"
    ],
    [
      "_reserved_identifier",
      "implicit_type",
      "var_pattern"
    ],
    [
      "_reserved_identifier",
      "type_parameter_constraint"
    ],
    [
      "_reserved_identifier",
      "parameter",
      "scoped_type"
    ],
    [
      "_reserved_identifier",
      "parameter"
    ],
    [
      "_simple_name",
      "parameter"
    ],
    [
      "tuple_element",
      "parameter",
      "declaration_expression"
    ],
    [
      "parameter",
      "tuple_element"
    ],
    [
      "event_declaration",
      "variable_declarator"
    ]
  ],
  "precedences": [
    [
      {
        "type": "SYMBOL",
        "name": "_anonymous_object_member_declarator"
      },
      {
        "type": "SYMBOL",
        "name": "_simple_name"
      }
    ],
    [
      {
        "type": "SYMBOL",
        "name": "block"
      },
      {
        "type": "SYMBOL",
        "name": "initializer_expression"
      }
    ]
  ],
  "externals": [
    {
      "type": "SYMBOL",
      "name": "_optional_semi"
    },
    {
      "type": "SYMBOL",
      "name": "interpolation_regular_start"
    },
    {
      "type": "SYMBOL",
      "name": "interpolation_verbatim_start"
    },
    {
      "type": "SYMBOL",
      "name": "interpolation_raw_start"
    },
    {
      "type": "SYMBOL",
      "name": "interpolation_start_quote"
    },
    {
      "type": "SYMBOL",
      "name": "interpolation_end_quote"
    },
    {
      "type": "SYMBOL",
      "name": "interpolation_open_brace"
    },
    {
      "type": "SYMBOL",
      "name": "interpolation_close_brace"
    },
    {
      "type": "SYMBOL",
      "name": "interpolation_string_content"
    },
    {
      "type": "SYMBOL",
      "name": "raw_string_start"
    },
    {
      "type": "SYMBOL",
      "name": "raw_string_end"
    },
    {
      "type": "SYMBOL",
      "name": "raw_string_content"
    }
  ],
  "inline": [
    "_namespace_member_declaration",
    "_object_creation_type",
    "_nullable_base_type",
    "_parameter_type_with_modifiers",
    "_top_level_item_no_statement"
  ],
  "supertypes": [
    "declaration",
    "expression",
    "non_lvalue_expression",
    "lvalue_expression",
    "literal",
    "statement",
    "type",
    "type_declaration",
    "pattern"
  ]
}
