{
  "$schema": "https://tree-sitter.github.io/tree-sitter/assets/schemas/grammar.schema.json",
  "name": "dart",
  "word": "identifier",
  "rules": {
    "program": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "script_tag"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "library_name"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "import_or_export"
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "part_directive"
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "part_of_directive"
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_top_level_definition"
          }
        }
      ]
    },
    "_top_level_definition": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "class_definition"
        },
        {
          "type": "SYMBOL",
          "name": "mixin_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "extension_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "extension_type_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "enum_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "type_alias"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_metadata"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_external_builtin"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "function_signature"
            },
            {
              "type": "SYMBOL",
              "name": "_semicolon"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_metadata"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_external_builtin"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "getter_signature"
            },
            {
              "type": "SYMBOL",
              "name": "_semicolon"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_metadata"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_external_builtin"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "setter_signature"
            },
            {
              "type": "SYMBOL",
              "name": "_semicolon"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_metadata"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "getter_signature"
            },
            {
              "type": "SYMBOL",
              "name": "function_body"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_metadata"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "setter_signature"
            },
            {
              "type": "SYMBOL",
              "name": "function_body"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_metadata"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "function_signature"
            },
            {
              "type": "SYMBOL",
              "name": "function_body"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_metadata"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "final_builtin"
                },
                {
                  "type": "SYMBOL",
                  "name": "const_builtin"
                }
              ]
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_type"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "static_final_declaration_list"
            },
            {
              "type": "SYMBOL",
              "name": "_semicolon"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_metadata"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "_late_builtin"
            },
            {
              "type": "SYMBOL",
              "name": "final_builtin"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_type"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "initialized_identifier_list"
            },
            {
              "type": "SYMBOL",
              "name": "_semicolon"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_metadata"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_late_builtin"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_type"
                },
                {
                  "type": "SYMBOL",
                  "name": "inferred_type"
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "initialized_identifier_list"
            },
            {
              "type": "SYMBOL",
              "name": "_semicolon"
            }
          ]
        }
      ]
    },
    "_bool_literal": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "true"
        },
        {
          "type": "SYMBOL",
          "name": "false"
        }
      ]
    },
    "_numeric_literal": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "decimal_integer_literal"
        },
        {
          "type": "SYMBOL",
          "name": "decimal_floating_point_literal"
        },
        {
          "type": "SYMBOL",
          "name": "hex_integer_literal"
        }
      ]
    },
    "_literal": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "null_literal"
        },
        {
          "type": "SYMBOL",
          "name": "_bool_literal"
        },
        {
          "type": "SYMBOL",
          "name": "_numeric_literal"
        },
        {
          "type": "SYMBOL",
          "name": "string_literal"
        },
        {
          "type": "SYMBOL",
          "name": "symbol_literal"
        },
        {
          "type": "SYMBOL",
          "name": "set_or_map_literal"
        },
        {
          "type": "SYMBOL",
          "name": "list_literal"
        },
        {
          "type": "SYMBOL",
          "name": "record_literal"
        }
      ]
    },
    "symbol_literal": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "#"
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        }
      ]
    },
    "decimal_integer_literal": {
      "type": "TOKEN",
      "content": {
        "type": "TOKEN",
        "content": {
          "type": "SEQ",
          "members": [
            {
              "type": "PATTERN",
              "value": "[0-9]+"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "PATTERN",
                    "value": "_+"
                  },
                  {
                    "type": "PATTERN",
                    "value": "[0-9]+"
                  }
                ]
              }
            }
          ]
        }
      }
    },
    "hex_integer_literal": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "0x"
              },
              {
                "type": "STRING",
                "value": "0X"
              }
            ]
          },
          {
            "type": "TOKEN",
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "PATTERN",
                  "value": "[A-Fa-f0-9]+"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "_"
                      },
                      {
                        "type": "PATTERN",
                        "value": "[A-Fa-f0-9]+"
                      }
                    ]
                  }
                }
              ]
            }
          }
        ]
      }
    },
    "decimal_floating_point_literal": {
      "type": "TOKEN",
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "TOKEN",
                "content": {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "PATTERN",
                      "value": "[0-9]+"
                    },
                    {
                      "type": "REPEAT",
                      "content": {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "PATTERN",
                            "value": "_+"
                          },
                          {
                            "type": "PATTERN",
                            "value": "[0-9]+"
                          }
                        ]
                      }
                    }
                  ]
                }
              },
              {
                "type": "STRING",
                "value": "."
              },
              {
                "type": "TOKEN",
                "content": {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "PATTERN",
                      "value": "[0-9]+"
                    },
                    {
                      "type": "REPEAT",
                      "content": {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "PATTERN",
                            "value": "_+"
                          },
                          {
                            "type": "PATTERN",
                            "value": "[0-9]+"
                          }
                        ]
                      }
                    }
                  ]
                }
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "PATTERN",
                        "value": "[eE]"
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "CHOICE",
                            "members": [
                              {
                                "type": "STRING",
                                "value": "-"
                              },
                              {
                                "type": "STRING",
                                "value": "+"
                              }
                            ]
                          },
                          {
                            "type": "BLANK"
                          }
                        ]
                      },
                      {
                        "type": "TOKEN",
                        "content": {
                          "type": "SEQ",
                          "members": [
                            {
                              "type": "PATTERN",
                              "value": "[0-9]+"
                            },
                            {
                              "type": "REPEAT",
                              "content": {
                                "type": "SEQ",
                                "members": [
                                  {
                                    "type": "PATTERN",
                                    "value": "_+"
                                  },
                                  {
                                    "type": "PATTERN",
                                    "value": "[0-9]+"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "."
              },
              {
                "type": "TOKEN",
                "content": {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "PATTERN",
                      "value": "[0-9]+"
                    },
                    {
                      "type": "REPEAT",
                      "content": {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "PATTERN",
                            "value": "_+"
                          },
                          {
                            "type": "PATTERN",
                            "value": "[0-9]+"
                          }
                        ]
                      }
                    }
                  ]
                }
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "PATTERN",
                        "value": "[eE]"
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "CHOICE",
                            "members": [
                              {
                                "type": "STRING",
                                "value": "-"
                              },
                              {
                                "type": "STRING",
                                "value": "+"
                              }
                            ]
                          },
                          {
                            "type": "BLANK"
                          }
                        ]
                      },
                      {
                        "type": "TOKEN",
                        "content": {
                          "type": "SEQ",
                          "members": [
                            {
                              "type": "PATTERN",
                              "value": "[0-9]+"
                            },
                            {
                              "type": "REPEAT",
                              "content": {
                                "type": "SEQ",
                                "members": [
                                  {
                                    "type": "PATTERN",
                                    "value": "_+"
                                  },
                                  {
                                    "type": "PATTERN",
                                    "value": "[0-9]+"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "TOKEN",
                "content": {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "PATTERN",
                      "value": "[0-9]+"
                    },
                    {
                      "type": "REPEAT",
                      "content": {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "PATTERN",
                            "value": "_+"
                          },
                          {
                            "type": "PATTERN",
                            "value": "[0-9]+"
                          }
                        ]
                      }
                    }
                  ]
                }
              },
              {
                "type": "PATTERN",
                "value": "[eE]"
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "-"
                      },
                      {
                        "type": "STRING",
                        "value": "+"
                      }
                    ]
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              },
              {
                "type": "TOKEN",
                "content": {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "PATTERN",
                      "value": "[0-9]+"
                    },
                    {
                      "type": "REPEAT",
                      "content": {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "PATTERN",
                            "value": "_+"
                          },
                          {
                            "type": "PATTERN",
                            "value": "[0-9]+"
                          }
                        ]
                      }
                    }
                  ]
                }
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "TOKEN",
                "content": {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "PATTERN",
                      "value": "[0-9]+"
                    },
                    {
                      "type": "REPEAT",
                      "content": {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "PATTERN",
                            "value": "_+"
                          },
                          {
                            "type": "PATTERN",
                            "value": "[0-9]+"
                          }
                        ]
                      }
                    }
                  ]
                }
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "PATTERN",
                        "value": "[eE]"
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "CHOICE",
                            "members": [
                              {
                                "type": "STRING",
                                "value": "-"
                              },
                              {
                                "type": "STRING",
                                "value": "+"
                              }
                            ]
                          },
                          {
                            "type": "BLANK"
                          }
                        ]
                      },
                      {
                        "type": "TOKEN",
                        "content": {
                          "type": "SEQ",
                          "members": [
                            {
                              "type": "PATTERN",
                              "value": "[0-9]+"
                            },
                            {
                              "type": "REPEAT",
                              "content": {
                                "type": "SEQ",
                                "members": [
                                  {
                                    "type": "PATTERN",
                                    "value": "_+"
                                  },
                                  {
                                    "type": "PATTERN",
                                    "value": "[0-9]+"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          }
        ]
      }
    },
    "true": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "STRING",
        "value": "true"
      }
    },
    "false": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "STRING",
        "value": "false"
      }
    },
    "string_literal": {
      "type": "REPEAT1",
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_string_literal_double_quotes"
          },
          {
            "type": "SYMBOL",
            "name": "_string_literal_single_quotes"
          },
          {
            "type": "SYMBOL",
            "name": "_string_literal_double_quotes_multiple"
          },
          {
            "type": "SYMBOL",
            "name": "_string_literal_single_quotes_multiple"
          },
          {
            "type": "SYMBOL",
            "name": "_raw_string_literal_double_quotes"
          },
          {
            "type": "SYMBOL",
            "name": "_raw_string_literal_single_quotes"
          },
          {
            "type": "SYMBOL",
            "name": "_raw_string_literal_double_quotes_multiple"
          },
          {
            "type": "SYMBOL",
            "name": "_raw_string_literal_single_quotes_multiple"
          }
        ]
      }
    },
    "_string_literal_double_quotes": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "\""
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_template_chars_double_single"
              },
              {
                "type": "STRING",
                "value": "'"
              },
              {
                "type": "SYMBOL",
                "name": "escape_sequence"
              },
              {
                "type": "SYMBOL",
                "name": "_sub_string_test"
              },
              {
                "type": "SYMBOL",
                "name": "template_substitution"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "\""
        }
      ]
    },
    "_string_literal_single_quotes": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "'"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_template_chars_single_single"
              },
              {
                "type": "STRING",
                "value": "\""
              },
              {
                "type": "SYMBOL",
                "name": "escape_sequence"
              },
              {
                "type": "SYMBOL",
                "name": "_sub_string_test"
              },
              {
                "type": "SYMBOL",
                "name": "template_substitution"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "'"
        }
      ]
    },
    "_string_literal_double_quotes_multiple": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "\"\"\""
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_template_chars_double"
                },
                {
                  "type": "STRING",
                  "value": "'"
                },
                {
                  "type": "STRING",
                  "value": "\""
                },
                {
                  "type": "SYMBOL",
                  "name": "escape_sequence"
                },
                {
                  "type": "SYMBOL",
                  "name": "_sub_string_test"
                },
                {
                  "type": "SYMBOL",
                  "name": "template_substitution"
                }
              ]
            }
          },
          {
            "type": "STRING",
            "value": "\"\"\""
          }
        ]
      }
    },
    "_string_literal_single_quotes_multiple": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "'''"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_template_chars_single"
                },
                {
                  "type": "STRING",
                  "value": "\""
                },
                {
                  "type": "STRING",
                  "value": "'"
                },
                {
                  "type": "SYMBOL",
                  "name": "escape_sequence"
                },
                {
                  "type": "SYMBOL",
                  "name": "_sub_string_test"
                },
                {
                  "type": "SYMBOL",
                  "name": "template_substitution"
                }
              ]
            }
          },
          {
            "type": "STRING",
            "value": "'''"
          }
        ]
      }
    },
    "_raw_string_literal_double_quotes": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "r\""
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_template_chars_double_single"
              },
              {
                "type": "STRING",
                "value": "'"
              },
              {
                "type": "SYMBOL",
                "name": "_template_chars_raw_slash"
              },
              {
                "type": "SYMBOL",
                "name": "_unused_escape_sequence"
              },
              {
                "type": "SYMBOL",
                "name": "_sub_string_test"
              },
              {
                "type": "STRING",
                "value": "$"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "\""
        }
      ]
    },
    "_raw_string_literal_single_quotes": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "r'"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_template_chars_single_single"
              },
              {
                "type": "STRING",
                "value": "\""
              },
              {
                "type": "SYMBOL",
                "name": "_template_chars_raw_slash"
              },
              {
                "type": "SYMBOL",
                "name": "_unused_escape_sequence"
              },
              {
                "type": "SYMBOL",
                "name": "_sub_string_test"
              },
              {
                "type": "STRING",
                "value": "$"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "'"
        }
      ]
    },
    "_raw_string_literal_double_quotes_multiple": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "r\"\"\""
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_template_chars_double"
                },
                {
                  "type": "STRING",
                  "value": "'"
                },
                {
                  "type": "SYMBOL",
                  "name": "_template_chars_raw_slash"
                },
                {
                  "type": "STRING",
                  "value": "\""
                },
                {
                  "type": "SYMBOL",
                  "name": "_unused_escape_sequence"
                },
                {
                  "type": "SYMBOL",
                  "name": "_sub_string_test"
                },
                {
                  "type": "STRING",
                  "value": "$"
                }
              ]
            }
          },
          {
            "type": "STRING",
            "value": "\"\"\""
          }
        ]
      }
    },
    "_raw_string_literal_single_quotes_multiple": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "r'''"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_template_chars_single"
                },
                {
                  "type": "STRING",
                  "value": "\""
                },
                {
                  "type": "STRING",
                  "value": "'"
                },
                {
                  "type": "SYMBOL",
                  "name": "_template_chars_raw_slash"
                },
                {
                  "type": "SYMBOL",
                  "name": "_unused_escape_sequence"
                },
                {
                  "type": "SYMBOL",
                  "name": "_sub_string_test"
                },
                {
                  "type": "STRING",
                  "value": "$"
                }
              ]
            }
          },
          {
            "type": "STRING",
            "value": "'''"
          }
        ]
      }
    },
    "_triple_quote_end": {
      "type": "TOKEN",
      "content": {
        "type": "STRING",
        "value": "'''"
      }
    },
    "_triple_double_quote_end": {
      "type": "TOKEN",
      "content": {
        "type": "STRING",
        "value": "\"\"\""
      }
    },
    "template_substitution": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "$"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "{"
                },
                {
                  "type": "SYMBOL",
                  "name": "_expression"
                },
                {
                  "type": "STRING",
                  "value": "}"
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "identifier_dollar_escaped"
            }
          ]
        }
      ]
    },
    "_sub_string_test": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "$"
        },
        {
          "type": "PATTERN",
          "value": "[^a-zA-Z_{]"
        }
      ]
    },
    "_string_interp": {
      "type": "PATTERN",
      "value": "\\$((\\w+)|\\{([^{}]+)\\})"
    },
    "_unused_escape_sequence": {
      "type": "IMMEDIATE_TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "\\"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "PATTERN",
                "value": "[^xu0-7]"
              },
              {
                "type": "PATTERN",
                "value": "[0-7]{1,3}"
              },
              {
                "type": "PATTERN",
                "value": "x[0-9a-fA-F]{2}"
              },
              {
                "type": "PATTERN",
                "value": "u[0-9a-fA-F]{4}"
              },
              {
                "type": "PATTERN",
                "value": "u\\{[0-9a-fA-F]+\\}"
              }
            ]
          }
        ]
      }
    },
    "escape_sequence": {
      "type": "SYMBOL",
      "name": "_unused_escape_sequence"
    },
    "list_literal": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "const_builtin"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "type_arguments"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_element"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_element"
                      }
                    ]
                  }
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "]"
        }
      ]
    },
    "set_or_map_literal": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "const_builtin"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "type_arguments"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_element"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_element"
                      }
                    ]
                  }
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "pair": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "key",
          "content": {
            "type": "SYMBOL",
            "name": "_expression"
          }
        },
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "SYMBOL",
            "name": "_expression"
          }
        }
      ]
    },
    "_element": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_expression"
        },
        {
          "type": "SYMBOL",
          "name": "pair"
        },
        {
          "type": "SYMBOL",
          "name": "spread_element"
        },
        {
          "type": "SYMBOL",
          "name": "if_element"
        },
        {
          "type": "SYMBOL",
          "name": "for_element"
        }
      ]
    },
    "null_literal": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "STRING",
        "value": "null"
      }
    },
    "record_literal": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "const_builtin"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_record_literal_no_const"
        }
      ]
    },
    "_record_literal_no_const": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "label"
                },
                {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              ]
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_expression"
                },
                {
                  "type": "STRING",
                  "value": ","
                }
              ]
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "record_field"
                },
                {
                  "type": "REPEAT1",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "record_field"
                      }
                    ]
                  }
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "record_field": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "label"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_expression"
        }
      ]
    },
    "_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "pattern_assignment"
        },
        {
          "type": "SYMBOL",
          "name": "assignment_expression"
        },
        {
          "type": "SYMBOL",
          "name": "throw_expression"
        },
        {
          "type": "SYMBOL",
          "name": "rethrow_expression"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_real_expression"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "cascade_section"
              }
            }
          ]
        }
      ]
    },
    "_expression_without_cascade": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "assignment_expression_without_cascade"
        },
        {
          "type": "SYMBOL",
          "name": "_real_expression"
        },
        {
          "type": "SYMBOL",
          "name": "throw_expression_without_cascade"
        }
      ]
    },
    "_real_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "conditional_expression"
        },
        {
          "type": "SYMBOL",
          "name": "logical_or_expression"
        },
        {
          "type": "SYMBOL",
          "name": "if_null_expression"
        },
        {
          "type": "SYMBOL",
          "name": "additive_expression"
        },
        {
          "type": "SYMBOL",
          "name": "multiplicative_expression"
        },
        {
          "type": "SYMBOL",
          "name": "relational_expression"
        },
        {
          "type": "SYMBOL",
          "name": "equality_expression"
        },
        {
          "type": "SYMBOL",
          "name": "logical_and_expression"
        },
        {
          "type": "SYMBOL",
          "name": "bitwise_and_expression"
        },
        {
          "type": "SYMBOL",
          "name": "bitwise_or_expression"
        },
        {
          "type": "SYMBOL",
          "name": "bitwise_xor_expression"
        },
        {
          "type": "SYMBOL",
          "name": "shift_expression"
        },
        {
          "type": "SYMBOL",
          "name": "type_cast_expression"
        },
        {
          "type": "SYMBOL",
          "name": "type_test_expression"
        },
        {
          "type": "SYMBOL",
          "name": "_unary_expression"
        }
      ]
    },
    "throw_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "throw"
        },
        {
          "type": "SYMBOL",
          "name": "_expression"
        }
      ]
    },
    "throw_expression_without_cascade": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "throw"
        },
        {
          "type": "SYMBOL",
          "name": "_expression_without_cascade"
        }
      ]
    },
    "rethrow_expression": {
      "type": "SYMBOL",
      "name": "rethrow_builtin"
    },
    "assignment_expression": {
      "type": "PREC_RIGHT",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "left",
            "content": {
              "type": "SYMBOL",
              "name": "assignable_expression"
            }
          },
          {
            "type": "FIELD",
            "name": "operator",
            "content": {
              "type": "SYMBOL",
              "name": "_assignment_operator"
            }
          },
          {
            "type": "FIELD",
            "name": "right",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          }
        ]
      }
    },
    "assignment_expression_without_cascade": {
      "type": "PREC_RIGHT",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "left",
            "content": {
              "type": "SYMBOL",
              "name": "assignable_expression"
            }
          },
          {
            "type": "FIELD",
            "name": "operator",
            "content": {
              "type": "SYMBOL",
              "name": "_assignment_operator"
            }
          },
          {
            "type": "FIELD",
            "name": "right",
            "content": {
              "type": "SYMBOL",
              "name": "_expression_without_cascade"
            }
          }
        ]
      }
    },
    "assignable_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_primary"
            },
            {
              "type": "SYMBOL",
              "name": "_assignable_selector_part"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "super"
            },
            {
              "type": "SYMBOL",
              "name": "unconditional_assignable_selector"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "constructor_invocation"
            },
            {
              "type": "SYMBOL",
              "name": "_assignable_selector_part"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        }
      ]
    },
    "_assignable_selector_part": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "selector"
          }
        },
        {
          "type": "SYMBOL",
          "name": "_assignable_selector"
        }
      ]
    },
    "_assignment_operator": {
      "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": "STRING",
          "value": "??="
        }
      ]
    },
    "lambda_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "parameters",
          "content": {
            "type": "SYMBOL",
            "name": "function_signature"
          }
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "function_body"
          }
        }
      ]
    },
    "function_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "parameters",
          "content": {
            "type": "SYMBOL",
            "name": "_formal_parameter_part"
          }
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "function_expression_body"
          }
        }
      ]
    },
    "inferred_parameters": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "identifier"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "identifier"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "if_null_expression": {
      "type": "PREC_LEFT",
      "value": 4,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "first",
            "content": {
              "type": "SYMBOL",
              "name": "_real_expression"
            }
          },
          {
            "type": "SYMBOL",
            "name": "_if_null_expression"
          }
        ]
      }
    },
    "_if_null_expression": {
      "type": "REPEAT1",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "??"
          },
          {
            "type": "FIELD",
            "name": "second",
            "content": {
              "type": "SYMBOL",
              "name": "_real_expression"
            }
          }
        ]
      }
    },
    "conditional_expression": {
      "type": "PREC_LEFT",
      "value": 3,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_real_expression"
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "?"
              },
              {
                "type": "FIELD",
                "name": "consequence",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression_without_cascade"
                }
              },
              {
                "type": "STRING",
                "value": ":"
              },
              {
                "type": "FIELD",
                "name": "alternative",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression_without_cascade"
                }
              }
            ]
          }
        ]
      }
    },
    "logical_or_expression": {
      "type": "PREC_LEFT",
      "value": 5,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_real_expression"
          },
          {
            "type": "REPEAT1",
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "logical_or_operator"
                },
                {
                  "type": "SYMBOL",
                  "name": "_real_expression"
                }
              ]
            }
          }
        ]
      }
    },
    "logical_and_expression": {
      "type": "PREC_LEFT",
      "value": 6,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_real_expression"
          },
          {
            "type": "REPEAT1",
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "logical_and_operator"
                },
                {
                  "type": "SYMBOL",
                  "name": "_real_expression"
                }
              ]
            }
          }
        ]
      }
    },
    "equality_expression": {
      "type": "PREC",
      "value": 7,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_real_expression"
              },
              {
                "type": "SYMBOL",
                "name": "equality_operator"
              },
              {
                "type": "SYMBOL",
                "name": "_real_expression"
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "super"
              },
              {
                "type": "SYMBOL",
                "name": "equality_operator"
              },
              {
                "type": "SYMBOL",
                "name": "_real_expression"
              }
            ]
          }
        ]
      }
    },
    "equality_operator": {
      "type": "TOKEN",
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "STRING",
            "value": "=="
          },
          {
            "type": "STRING",
            "value": "!="
          }
        ]
      }
    },
    "type_cast_expression": {
      "type": "PREC_LEFT",
      "value": 9,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_real_expression"
          },
          {
            "type": "SYMBOL",
            "name": "type_cast"
          }
        ]
      }
    },
    "type_test_expression": {
      "type": "PREC",
      "value": 9,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_real_expression"
          },
          {
            "type": "SYMBOL",
            "name": "type_test"
          }
        ]
      }
    },
    "relational_expression": {
      "type": "PREC",
      "value": 8,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_real_expression"
              },
              {
                "type": "SYMBOL",
                "name": "relational_operator"
              },
              {
                "type": "SYMBOL",
                "name": "_real_expression"
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "super"
              },
              {
                "type": "SYMBOL",
                "name": "relational_operator"
              },
              {
                "type": "SYMBOL",
                "name": "_real_expression"
              }
            ]
          }
        ]
      }
    },
    "relational_operator": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "<"
        },
        {
          "type": "STRING",
          "value": ">"
        },
        {
          "type": "STRING",
          "value": "<="
        },
        {
          "type": "STRING",
          "value": ">="
        }
      ]
    },
    "bitwise_or_expression": {
      "type": "PREC_LEFT",
      "value": 10,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_real_expression"
              },
              {
                "type": "REPEAT1",
                "content": {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "|"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_real_expression"
                    }
                  ]
                }
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "super"
              },
              {
                "type": "REPEAT1",
                "content": {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "|"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_real_expression"
                    }
                  ]
                }
              }
            ]
          }
        ]
      }
    },
    "bitwise_xor_expression": {
      "type": "PREC_LEFT",
      "value": 11,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_real_expression"
              },
              {
                "type": "REPEAT1",
                "content": {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "^"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_real_expression"
                    }
                  ]
                }
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "super"
              },
              {
                "type": "REPEAT1",
                "content": {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "^"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_real_expression"
                    }
                  ]
                }
              }
            ]
          }
        ]
      }
    },
    "bitwise_and_expression": {
      "type": "PREC_LEFT",
      "value": 12,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_real_expression"
              },
              {
                "type": "REPEAT1",
                "content": {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "&"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_real_expression"
                    }
                  ]
                }
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "super"
              },
              {
                "type": "REPEAT1",
                "content": {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "&"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_real_expression"
                    }
                  ]
                }
              }
            ]
          }
        ]
      }
    },
    "shift_expression": {
      "type": "PREC_LEFT",
      "value": 13,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_real_expression"
              },
              {
                "type": "REPEAT1",
                "content": {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "shift_operator"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_real_expression"
                    }
                  ]
                }
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "super"
              },
              {
                "type": "REPEAT1",
                "content": {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "shift_operator"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_real_expression"
                    }
                  ]
                }
              }
            ]
          }
        ]
      }
    },
    "additive_expression": {
      "type": "PREC_LEFT",
      "value": 14,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_real_expression"
              },
              {
                "type": "REPEAT1",
                "content": {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "additive_operator"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_real_expression"
                    }
                  ]
                }
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "super"
              },
              {
                "type": "REPEAT1",
                "content": {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "additive_operator"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_real_expression"
                    }
                  ]
                }
              }
            ]
          }
        ]
      }
    },
    "multiplicative_expression": {
      "type": "PREC_LEFT",
      "value": 15,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_unary_expression"
              },
              {
                "type": "REPEAT1",
                "content": {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "multiplicative_operator"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_unary_expression"
                    }
                  ]
                }
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "super"
              },
              {
                "type": "REPEAT1",
                "content": {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "multiplicative_operator"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_unary_expression"
                    }
                  ]
                }
              }
            ]
          }
        ]
      }
    },
    "bitwise_operator": {
      "type": "SYMBOL",
      "name": "_bitwise_operator"
    },
    "_bitwise_operator": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "&"
        },
        {
          "type": "STRING",
          "value": "^"
        },
        {
          "type": "STRING",
          "value": "|"
        }
      ]
    },
    "shift_operator": {
      "type": "SYMBOL",
      "name": "_shift_operator"
    },
    "_shift_operator": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "<<"
        },
        {
          "type": "STRING",
          "value": ">>"
        },
        {
          "type": "STRING",
          "value": ">>>"
        }
      ]
    },
    "additive_operator": {
      "type": "SYMBOL",
      "name": "_additive_operator"
    },
    "_additive_operator": {
      "type": "TOKEN",
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "STRING",
            "value": "+"
          },
          {
            "type": "STRING",
            "value": "-"
          }
        ]
      }
    },
    "multiplicative_operator": {
      "type": "SYMBOL",
      "name": "_multiplicative_operator"
    },
    "_multiplicative_operator": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "*"
        },
        {
          "type": "STRING",
          "value": "/"
        },
        {
          "type": "STRING",
          "value": "%"
        },
        {
          "type": "STRING",
          "value": "~/"
        }
      ]
    },
    "_unary_expression": {
      "type": "PREC",
      "value": 16,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_postfix_expression"
          },
          {
            "type": "SYMBOL",
            "name": "unary_expression"
          }
        ]
      }
    },
    "unary_expression": {
      "type": "PREC",
      "value": 16,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "prefix_operator"
              },
              {
                "type": "SYMBOL",
                "name": "_unary_expression"
              }
            ]
          },
          {
            "type": "SYMBOL",
            "name": "await_expression"
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "minus_operator"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "tilde_operator"
                  }
                ]
              },
              {
                "type": "SYMBOL",
                "name": "super"
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "increment_operator"
              },
              {
                "type": "SYMBOL",
                "name": "assignable_expression"
              }
            ]
          }
        ]
      }
    },
    "_postfix_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_primary"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "selector"
              }
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "postfix_expression"
        }
      ]
    },
    "postfix_expression": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "assignable_expression"
              },
              {
                "type": "SYMBOL",
                "name": "postfix_operator"
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "constructor_invocation"
              },
              {
                "type": "REPEAT",
                "content": {
                  "type": "SYMBOL",
                  "name": "selector"
                }
              }
            ]
          }
        ]
      }
    },
    "postfix_operator": {
      "type": "SYMBOL",
      "name": "increment_operator"
    },
    "increment_operator": {
      "type": "TOKEN",
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "STRING",
            "value": "++"
          },
          {
            "type": "STRING",
            "value": "--"
          }
        ]
      }
    },
    "spread_element": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "..."
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "?"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_expression"
        }
      ]
    },
    "selector": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_exclamation_operator"
          },
          {
            "type": "SYMBOL",
            "name": "_assignable_selector"
          },
          {
            "type": "SYMBOL",
            "name": "argument_part"
          },
          {
            "type": "SYMBOL",
            "name": "type_arguments"
          }
        ]
      }
    },
    "prefix_operator": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "minus_operator"
        },
        {
          "type": "SYMBOL",
          "name": "negation_operator"
        },
        {
          "type": "SYMBOL",
          "name": "tilde_operator"
        }
      ]
    },
    "minus_operator": {
      "type": "STRING",
      "value": "-"
    },
    "negation_operator": {
      "type": "SYMBOL",
      "name": "_exclamation_operator"
    },
    "_exclamation_operator": {
      "type": "STRING",
      "value": "!"
    },
    "tilde_operator": {
      "type": "STRING",
      "value": "~"
    },
    "await_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "await"
        },
        {
          "type": "SYMBOL",
          "name": "_unary_expression"
        }
      ]
    },
    "type_test": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "is_operator"
        },
        {
          "type": "SYMBOL",
          "name": "_type_not_void"
        }
      ]
    },
    "is_operator": {
      "type": "SEQ",
      "members": [
        {
          "type": "TOKEN",
          "content": {
            "type": "STRING",
            "value": "is"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_exclamation_operator"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "type_cast": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "as_operator"
        },
        {
          "type": "SYMBOL",
          "name": "_type_not_void"
        }
      ]
    },
    "as_operator": {
      "type": "TOKEN",
      "content": {
        "type": "STRING",
        "value": "as"
      }
    },
    "new_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_new_builtin"
        },
        {
          "type": "SYMBOL",
          "name": "_type_not_void"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_dot_identifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "arguments"
        }
      ]
    },
    "_dot_identifier": {
      "type": "PREC_DYNAMIC",
      "value": 19,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "."
          },
          {
            "type": "SYMBOL",
            "name": "identifier"
          }
        ]
      }
    },
    "const_object_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "const_builtin"
        },
        {
          "type": "SYMBOL",
          "name": "_type_not_void"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_dot_identifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "arguments"
        }
      ]
    },
    "_primary": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_literal"
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "_get"
          },
          "named": true,
          "value": "identifier"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "_set"
          },
          "named": true,
          "value": "identifier"
        },
        {
          "type": "SYMBOL",
          "name": "function_expression"
        },
        {
          "type": "SYMBOL",
          "name": "new_expression"
        },
        {
          "type": "SYMBOL",
          "name": "const_object_expression"
        },
        {
          "type": "SYMBOL",
          "name": "parenthesized_expression"
        },
        {
          "type": "SYMBOL",
          "name": "this"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "super"
            },
            {
              "type": "SYMBOL",
              "name": "unconditional_assignable_selector"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "constructor_tearoff"
        },
        {
          "type": "SYMBOL",
          "name": "switch_expression"
        }
      ]
    },
    "parenthesized_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "_expression"
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "_compound_access": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "."
        },
        {
          "type": "STRING",
          "value": "?."
        }
      ]
    },
    "constructor_invocation": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_type_name"
              },
              {
                "type": "SYMBOL",
                "name": "type_arguments"
              },
              {
                "type": "STRING",
                "value": "."
              },
              {
                "type": "SYMBOL",
                "name": "identifier"
              },
              {
                "type": "SYMBOL",
                "name": "arguments"
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_type_name"
              },
              {
                "type": "STRING",
                "value": "."
              },
              {
                "type": "SYMBOL",
                "name": "_new_builtin"
              },
              {
                "type": "SYMBOL",
                "name": "arguments"
              }
            ]
          }
        ]
      }
    },
    "constructor_tearoff": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_type_name"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "type_arguments"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "STRING",
            "value": "."
          },
          {
            "type": "SYMBOL",
            "name": "_new_builtin"
          }
        ]
      }
    },
    "arguments": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_argument_list"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "_argument_list": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_any_argument"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": ","
                },
                {
                  "type": "SYMBOL",
                  "name": "_any_argument"
                }
              ]
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": ","
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "_any_argument": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "argument"
        },
        {
          "type": "SYMBOL",
          "name": "named_argument"
        }
      ]
    },
    "argument": {
      "type": "SYMBOL",
      "name": "_expression"
    },
    "named_argument": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "label"
        },
        {
          "type": "SYMBOL",
          "name": "_expression"
        }
      ]
    },
    "cascade_section": {
      "type": "PREC_LEFT",
      "value": 2,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": ".."
              },
              {
                "type": "STRING",
                "value": "?.."
              }
            ]
          },
          {
            "type": "SYMBOL",
            "name": "cascade_selector"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SYMBOL",
              "name": "argument_part"
            }
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SYMBOL",
              "name": "_cascade_subsection"
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_cascade_assignment_section"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "_cascade_subsection": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_assignable_selector"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "argument_part"
          }
        }
      ]
    },
    "_cascade_assignment_section": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_assignment_operator"
        },
        {
          "type": "SYMBOL",
          "name": "_expression_without_cascade"
        }
      ]
    },
    "index_selector": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "SYMBOL",
          "name": "_expression"
        },
        {
          "type": "STRING",
          "value": "]"
        }
      ]
    },
    "cascade_selector": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "nullable_selector"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "index_selector"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        }
      ]
    },
    "argument_part": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "type_arguments"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "arguments"
        }
      ]
    },
    "unconditional_assignable_selector": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "index_selector"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "."
            },
            {
              "type": "SYMBOL",
              "name": "identifier"
            }
          ]
        }
      ]
    },
    "conditional_assignable_selector": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "?."
            },
            {
              "type": "SYMBOL",
              "name": "identifier"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "?"
            },
            {
              "type": "SYMBOL",
              "name": "index_selector"
            }
          ]
        }
      ]
    },
    "_assignable_selector": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "unconditional_assignable_selector"
        },
        {
          "type": "SYMBOL",
          "name": "conditional_assignable_selector"
        }
      ]
    },
    "type_arguments": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "<"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "_type"
                    },
                    {
                      "type": "REPEAT",
                      "content": {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "STRING",
                            "value": ","
                          },
                          {
                            "type": "SYMBOL",
                            "name": "_type"
                          }
                        ]
                      }
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "STRING",
              "value": ">"
            }
          ]
        }
      ]
    },
    "wildcard": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_metadata"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "?"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_wildcard_bounds"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_wildcard_bounds": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "extends"
            },
            {
              "type": "SYMBOL",
              "name": "_type"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "super"
            },
            {
              "type": "SYMBOL",
              "name": "_type"
            }
          ]
        }
      ]
    },
    "dimensions": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "REPEAT1",
        "content": {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_metadata"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "STRING",
              "value": "["
            },
            {
              "type": "STRING",
              "value": "]"
            }
          ]
        }
      }
    },
    "_statement": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "block"
        },
        {
          "type": "PREC_DYNAMIC",
          "value": 1,
          "content": {
            "type": "SYMBOL",
            "name": "local_function_declaration"
          }
        },
        {
          "type": "PREC_DYNAMIC",
          "value": 2,
          "content": {
            "type": "SYMBOL",
            "name": "local_variable_declaration"
          }
        },
        {
          "type": "SYMBOL",
          "name": "for_statement"
        },
        {
          "type": "SYMBOL",
          "name": "while_statement"
        },
        {
          "type": "SYMBOL",
          "name": "do_statement"
        },
        {
          "type": "SYMBOL",
          "name": "switch_statement"
        },
        {
          "type": "SYMBOL",
          "name": "if_statement"
        },
        {
          "type": "SYMBOL",
          "name": "try_statement"
        },
        {
          "type": "SYMBOL",
          "name": "break_statement"
        },
        {
          "type": "SYMBOL",
          "name": "continue_statement"
        },
        {
          "type": "SYMBOL",
          "name": "return_statement"
        },
        {
          "type": "SYMBOL",
          "name": "yield_statement"
        },
        {
          "type": "SYMBOL",
          "name": "yield_each_statement"
        },
        {
          "type": "SYMBOL",
          "name": "expression_statement"
        },
        {
          "type": "SYMBOL",
          "name": "assert_statement"
        }
      ]
    },
    "local_function_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_metadata"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "lambda_expression"
        }
      ]
    },
    "block": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_statement"
          }
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "expression_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_expression"
        },
        {
          "type": "SYMBOL",
          "name": "_semicolon"
        }
      ]
    },
    "labeled_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "SYMBOL",
          "name": "_statement"
        }
      ]
    },
    "assert_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "assertion"
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "assertion": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "assert_builtin"
        },
        {
          "type": "SYMBOL",
          "name": "assertion_arguments"
        }
      ]
    },
    "assertion_arguments": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "_expression"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": ","
                },
                {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ","
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "switch_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "switch"
        },
        {
          "type": "FIELD",
          "name": "condition",
          "content": {
            "type": "SYMBOL",
            "name": "parenthesized_expression"
          }
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "switch_block"
          }
        }
      ]
    },
    "switch_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "switch"
        },
        {
          "type": "FIELD",
          "name": "condition",
          "content": {
            "type": "SYMBOL",
            "name": "parenthesized_expression"
          }
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "{"
              },
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "switch_expression_case"
                  },
                  {
                    "type": "REPEAT",
                    "content": {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "STRING",
                          "value": ","
                        },
                        {
                          "type": "SYMBOL",
                          "name": "switch_expression_case"
                        }
                      ]
                    }
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  }
                ]
              },
              {
                "type": "STRING",
                "value": "}"
              }
            ]
          }
        }
      ]
    },
    "switch_expression_case": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_guarded_pattern"
        },
        {
          "type": "STRING",
          "value": "=>"
        },
        {
          "type": "SYMBOL",
          "name": "_expression"
        }
      ]
    },
    "_guarded_pattern": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_pattern"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "when"
                },
                {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_pattern": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_logical_or_pattern"
        }
      ]
    },
    "_logical_or_pattern": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_logical_and_pattern"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "logical_or_operator"
              },
              {
                "type": "SYMBOL",
                "name": "_logical_and_pattern"
              }
            ]
          }
        }
      ]
    },
    "_logical_and_pattern": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_relational_pattern"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "logical_and_operator"
              },
              {
                "type": "SYMBOL",
                "name": "_relational_pattern"
              }
            ]
          }
        }
      ]
    },
    "_relational_pattern": {
      "type": "PREC",
      "value": 8,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "relational_operator"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "equality_operator"
                  }
                ]
              },
              {
                "type": "SYMBOL",
                "name": "_real_expression"
              }
            ]
          },
          {
            "type": "SYMBOL",
            "name": "_unary_pattern"
          }
        ]
      }
    },
    "_unary_pattern": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "cast_pattern"
        },
        {
          "type": "SYMBOL",
          "name": "null_check_pattern"
        },
        {
          "type": "SYMBOL",
          "name": "null_assert_pattern"
        },
        {
          "type": "SYMBOL",
          "name": "_primary_pattern"
        }
      ]
    },
    "_primary_pattern": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "constant_pattern"
        },
        {
          "type": "SYMBOL",
          "name": "variable_pattern"
        },
        {
          "type": "SYMBOL",
          "name": "_parenthesized_pattern"
        },
        {
          "type": "SYMBOL",
          "name": "list_pattern"
        },
        {
          "type": "SYMBOL",
          "name": "map_pattern"
        },
        {
          "type": "SYMBOL",
          "name": "record_pattern"
        },
        {
          "type": "SYMBOL",
          "name": "object_pattern"
        }
      ]
    },
    "cast_pattern": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_primary_pattern"
        },
        {
          "type": "STRING",
          "value": "as"
        },
        {
          "type": "SYMBOL",
          "name": "_type"
        }
      ]
    },
    "null_check_pattern": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_primary_pattern"
        },
        {
          "type": "STRING",
          "value": "?"
        }
      ]
    },
    "null_assert_pattern": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_primary_pattern"
        },
        {
          "type": "STRING",
          "value": "!"
        }
      ]
    },
    "constant_pattern": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_bool_literal"
        },
        {
          "type": "SYMBOL",
          "name": "null_literal"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "minus_operator"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "_numeric_literal"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "string_literal"
        },
        {
          "type": "SYMBOL",
          "name": "symbol_literal"
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "SYMBOL",
          "name": "qualified"
        },
        {
          "type": "SYMBOL",
          "name": "const_object_expression"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "const_builtin"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "type_arguments"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "STRING",
              "value": "["
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_element"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_element"
                      }
                    ]
                  }
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "STRING",
              "value": "]"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "const_builtin"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "type_arguments"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "STRING",
              "value": "{"
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_element"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_element"
                      }
                    ]
                  }
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "STRING",
              "value": "}"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "const_builtin"
            },
            {
              "type": "STRING",
              "value": "("
            },
            {
              "type": "SYMBOL",
              "name": "_expression"
            },
            {
              "type": "STRING",
              "value": ")"
            }
          ]
        }
      ]
    },
    "variable_pattern": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_final_var_or_type"
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        }
      ]
    },
    "_parenthesized_pattern": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "_pattern"
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "list_pattern": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "type_arguments"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_list_pattern_element"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_list_pattern_element"
                      }
                    ]
                  }
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "]"
        }
      ]
    },
    "_list_pattern_element": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_pattern"
        },
        {
          "type": "SYMBOL",
          "name": "rest_pattern"
        }
      ]
    },
    "rest_pattern": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "..."
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_pattern"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "map_pattern": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "type_arguments"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_map_pattern_entry"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_map_pattern_entry"
                      }
                    ]
                  }
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "_map_pattern_entry": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_expression"
            },
            {
              "type": "STRING",
              "value": ":"
            },
            {
              "type": "SYMBOL",
              "name": "_pattern"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "..."
        }
      ]
    },
    "record_pattern": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_pattern_field"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "_pattern_field"
                  }
                ]
              }
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": ","
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "_pattern_field": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "identifier"
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "STRING",
                  "value": ":"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_pattern"
        }
      ]
    },
    "object_pattern": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_type_name"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "type_arguments"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_pattern_field"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "_pattern_field"
                  }
                ]
              }
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": ","
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "pattern_variable_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "final_builtin"
            },
            {
              "type": "SYMBOL",
              "name": "inferred_type"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_outer_pattern"
        },
        {
          "type": "STRING",
          "value": "="
        },
        {
          "type": "SYMBOL",
          "name": "_expression"
        }
      ]
    },
    "_outer_pattern": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_parenthesized_pattern"
        },
        {
          "type": "SYMBOL",
          "name": "list_pattern"
        },
        {
          "type": "SYMBOL",
          "name": "map_pattern"
        },
        {
          "type": "SYMBOL",
          "name": "record_pattern"
        },
        {
          "type": "SYMBOL",
          "name": "object_pattern"
        }
      ]
    },
    "pattern_assignment": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_outer_pattern"
        },
        {
          "type": "STRING",
          "value": "="
        },
        {
          "type": "SYMBOL",
          "name": "_expression"
        }
      ]
    },
    "switch_block": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "switch_statement_case"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "switch_statement_default"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "switch_statement_case": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "label"
          }
        },
        {
          "type": "SYMBOL",
          "name": "case_builtin"
        },
        {
          "type": "SYMBOL",
          "name": "_guarded_pattern"
        },
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_statement"
          }
        }
      ]
    },
    "switch_statement_default": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "label"
          }
        },
        {
          "type": "STRING",
          "value": "default"
        },
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_statement"
          }
        }
      ]
    },
    "switch_case": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "label"
              }
            },
            {
              "type": "SYMBOL",
              "name": "case_builtin"
            },
            {
              "type": "SYMBOL",
              "name": "_guarded_pattern"
            },
            {
              "type": "STRING",
              "value": ":"
            },
            {
              "type": "REPEAT1",
              "content": {
                "type": "SYMBOL",
                "name": "_statement"
              }
            }
          ]
        }
      ]
    },
    "default_case": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "label"
              }
            },
            {
              "type": "STRING",
              "value": "default"
            },
            {
              "type": "STRING",
              "value": ":"
            },
            {
              "type": "REPEAT1",
              "content": {
                "type": "SYMBOL",
                "name": "_statement"
              }
            }
          ]
        }
      ]
    },
    "switch_label": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "label"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "case_builtin"
                },
                {
                  "type": "SYMBOL",
                  "name": "_expression"
                },
                {
                  "type": "STRING",
                  "value": ":"
                }
              ]
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "default"
                },
                {
                  "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": "FIELD",
          "name": "condition",
          "content": {
            "type": "SYMBOL",
            "name": "parenthesized_expression"
          }
        },
        {
          "type": "SYMBOL",
          "name": "_semicolon"
        }
      ]
    },
    "break_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "break_builtin"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "identifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_semicolon"
        }
      ]
    },
    "continue_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "continue"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "identifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_semicolon"
        }
      ]
    },
    "yield_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "yield"
        },
        {
          "type": "SYMBOL",
          "name": "_expression"
        },
        {
          "type": "SYMBOL",
          "name": "_semicolon"
        }
      ]
    },
    "yield_each_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "yield"
        },
        {
          "type": "STRING",
          "value": "*"
        },
        {
          "type": "SYMBOL",
          "name": "_expression"
        },
        {
          "type": "SYMBOL",
          "name": "_semicolon"
        }
      ]
    },
    "return_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "return"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_expression"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_semicolon"
        }
      ]
    },
    "throw_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "throw"
        },
        {
          "type": "SYMBOL",
          "name": "_expression"
        },
        {
          "type": "SYMBOL",
          "name": "_semicolon"
        }
      ]
    },
    "try_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_try_head"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "finally_clause"
                },
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "REPEAT1",
                      "content": {
                        "type": "SYMBOL",
                        "name": "_on_part"
                      }
                    },
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "finally_clause"
                        },
                        {
                          "type": "BLANK"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_on_part": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "catch_clause"
            },
            {
              "type": "SYMBOL",
              "name": "block"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "on"
            },
            {
              "type": "SYMBOL",
              "name": "_type_not_void"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "catch_clause"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "block"
            }
          ]
        }
      ]
    },
    "_try_head": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "try"
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "block"
          }
        }
      ]
    },
    "catch_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "catch"
        },
        {
          "type": "SYMBOL",
          "name": "catch_parameters"
        }
      ]
    },
    "catch_parameters": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": ","
                },
                {
                  "type": "SYMBOL",
                  "name": "identifier"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "catch_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_type"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "|"
              },
              {
                "type": "SYMBOL",
                "name": "_type"
              }
            ]
          }
        }
      ]
    },
    "finally_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "finally"
        },
        {
          "type": "SYMBOL",
          "name": "block"
        }
      ]
    },
    "if_element": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "if"
          },
          {
            "type": "STRING",
            "value": "("
          },
          {
            "type": "SYMBOL",
            "name": "_expression"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": "case"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "_guarded_pattern"
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "STRING",
            "value": ")"
          },
          {
            "type": "FIELD",
            "name": "consequence",
            "content": {
              "type": "SYMBOL",
              "name": "_element"
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": "else"
                  },
                  {
                    "type": "FIELD",
                    "name": "alternative",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_element"
                    }
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "if_statement": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "if"
          },
          {
            "type": "STRING",
            "value": "("
          },
          {
            "type": "SYMBOL",
            "name": "_expression"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": "case"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "_guarded_pattern"
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "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": "FIELD",
          "name": "condition",
          "content": {
            "type": "SYMBOL",
            "name": "parenthesized_expression"
          }
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "_statement"
          }
        }
      ]
    },
    "for_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "await"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "for"
        },
        {
          "type": "SYMBOL",
          "name": "for_loop_parts"
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "_statement"
          }
        }
      ]
    },
    "for_loop_parts": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "_for_loop_parts"
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "_for_loop_parts": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_declared_identifier"
                },
                {
                  "type": "SYMBOL",
                  "name": "identifier"
                }
              ]
            },
            {
              "type": "STRING",
              "value": "in"
            },
            {
              "type": "FIELD",
              "name": "value",
              "content": {
                "type": "SYMBOL",
                "name": "_expression"
              }
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "FIELD",
                      "name": "init",
                      "content": {
                        "type": "SYMBOL",
                        "name": "local_variable_declaration"
                      }
                    },
                    {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "CHOICE",
                          "members": [
                            {
                              "type": "SEQ",
                              "members": [
                                {
                                  "type": "FIELD",
                                  "name": "init",
                                  "content": {
                                    "type": "SYMBOL",
                                    "name": "_expression"
                                  }
                                },
                                {
                                  "type": "REPEAT",
                                  "content": {
                                    "type": "SEQ",
                                    "members": [
                                      {
                                        "type": "STRING",
                                        "value": ","
                                      },
                                      {
                                        "type": "FIELD",
                                        "name": "init",
                                        "content": {
                                          "type": "SYMBOL",
                                          "name": "_expression"
                                        }
                                      }
                                    ]
                                  }
                                }
                              ]
                            },
                            {
                              "type": "BLANK"
                            }
                          ]
                        },
                        {
                          "type": "SYMBOL",
                          "name": "_semicolon"
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "FIELD",
              "name": "condition",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "_expression"
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            },
            {
              "type": "SYMBOL",
              "name": "_semicolon"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "FIELD",
                      "name": "update",
                      "content": {
                        "type": "SYMBOL",
                        "name": "_expression"
                      }
                    },
                    {
                      "type": "REPEAT",
                      "content": {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "STRING",
                            "value": ","
                          },
                          {
                            "type": "FIELD",
                            "name": "update",
                            "content": {
                              "type": "SYMBOL",
                              "name": "_expression"
                            }
                          }
                        ]
                      }
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "final_builtin"
                },
                {
                  "type": "SYMBOL",
                  "name": "inferred_type"
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "_outer_pattern"
            },
            {
              "type": "STRING",
              "value": "in"
            },
            {
              "type": "FIELD",
              "name": "value",
              "content": {
                "type": "SYMBOL",
                "name": "_expression"
              }
            }
          ]
        }
      ]
    },
    "for_element": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "await"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "for"
        },
        {
          "type": "SYMBOL",
          "name": "for_loop_parts"
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "_element"
          }
        }
      ]
    },
    "annotation": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "@"
          },
          {
            "type": "FIELD",
            "name": "name",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "identifier"
                },
                {
                  "type": "SYMBOL",
                  "name": "scoped_identifier"
                }
              ]
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "type_arguments"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "arguments"
                      }
                    ]
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "arguments"
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          }
        ]
      }
    },
    "_declaration": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "import_specification"
          },
          {
            "type": "SYMBOL",
            "name": "class_definition"
          },
          {
            "type": "SYMBOL",
            "name": "enum_declaration"
          }
        ]
      }
    },
    "import_or_export": {
      "type": "PREC",
      "value": 19,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "library_import"
          },
          {
            "type": "SYMBOL",
            "name": "library_export"
          }
        ]
      }
    },
    "library_import": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_metadata"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "import_specification"
        }
      ]
    },
    "library_export": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_metadata"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_export"
        },
        {
          "type": "SYMBOL",
          "name": "configurable_uri"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "combinator"
          }
        },
        {
          "type": "SYMBOL",
          "name": "_semicolon"
        }
      ]
    },
    "import_specification": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_import"
            },
            {
              "type": "SYMBOL",
              "name": "configurable_uri"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "_as"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "identifier"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "combinator"
              }
            },
            {
              "type": "SYMBOL",
              "name": "_semicolon"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_import"
            },
            {
              "type": "SYMBOL",
              "name": "uri"
            },
            {
              "type": "SYMBOL",
              "name": "_deferred"
            },
            {
              "type": "SYMBOL",
              "name": "_as"
            },
            {
              "type": "SYMBOL",
              "name": "identifier"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "combinator"
              }
            },
            {
              "type": "SYMBOL",
              "name": "_semicolon"
            }
          ]
        }
      ]
    },
    "part_directive": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_metadata"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "part"
        },
        {
          "type": "SYMBOL",
          "name": "uri"
        },
        {
          "type": "SYMBOL",
          "name": "_semicolon"
        }
      ]
    },
    "part_of_directive": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_metadata"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "part_of_builtin"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "dotted_identifier_list"
            },
            {
              "type": "SYMBOL",
              "name": "uri"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_semicolon"
        }
      ]
    },
    "uri": {
      "type": "SYMBOL",
      "name": "string_literal"
    },
    "configurable_uri": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "uri"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "configuration_uri"
          }
        }
      ]
    },
    "configuration_uri": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "if"
        },
        {
          "type": "SYMBOL",
          "name": "configuration_uri_condition"
        },
        {
          "type": "SYMBOL",
          "name": "uri"
        }
      ]
    },
    "configuration_uri_condition": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "uri_test"
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "uri_test": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "dotted_identifier_list"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "=="
                },
                {
                  "type": "SYMBOL",
                  "name": "string_literal"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "combinator": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "show"
            },
            {
              "type": "SYMBOL",
              "name": "_identifier_list"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "hide"
            },
            {
              "type": "SYMBOL",
              "name": "_identifier_list"
            }
          ]
        }
      ]
    },
    "_identifier_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": ","
              },
              {
                "type": "SYMBOL",
                "name": "identifier"
              }
            ]
          }
        }
      ]
    },
    "asterisk": {
      "type": "STRING",
      "value": "*"
    },
    "enum_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_metadata"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "enum"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "type_parameters"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "mixins"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "interfaces"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "enum_body"
          }
        }
      ]
    },
    "enum_body": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "enum_constant"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "enum_constant"
                  }
                ]
              }
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": ","
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": ";"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "_metadata"
                          },
                          {
                            "type": "BLANK"
                          }
                        ]
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_class_member_definition"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "enum_constant": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_metadata"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "FIELD",
              "name": "name",
              "content": {
                "type": "SYMBOL",
                "name": "identifier"
              }
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "argument_part"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_metadata"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "FIELD",
              "name": "name",
              "content": {
                "type": "SYMBOL",
                "name": "identifier"
              }
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "type_arguments"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "STRING",
              "value": "."
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "identifier"
                },
                {
                  "type": "SYMBOL",
                  "name": "_new_builtin"
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "arguments"
            }
          ]
        }
      ]
    },
    "type_alias": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_metadata"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "_typedef"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_type"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "_type_name"
            },
            {
              "type": "SYMBOL",
              "name": "_formal_parameter_part"
            },
            {
              "type": "STRING",
              "value": ";"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_metadata"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "_typedef"
            },
            {
              "type": "SYMBOL",
              "name": "_type_name"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "type_parameters"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "STRING",
              "value": "="
            },
            {
              "type": "SYMBOL",
              "name": "_type"
            },
            {
              "type": "STRING",
              "value": ";"
            }
          ]
        }
      ]
    },
    "_class_modifiers": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "sealed"
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "abstract"
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "base"
                        },
                        {
                          "type": "SYMBOL",
                          "name": "interface"
                        },
                        {
                          "type": "STRING",
                          "value": "final"
                        },
                        {
                          "type": "STRING",
                          "value": "inline"
                        }
                      ]
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "type": "STRING",
          "value": "class"
        }
      ]
    },
    "_mixin_class_modifiers": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "abstract"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "base"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "mixin"
        },
        {
          "type": "STRING",
          "value": "class"
        }
      ]
    },
    "class_definition": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_metadata"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_class_modifiers"
                },
                {
                  "type": "SYMBOL",
                  "name": "_mixin_class_modifiers"
                }
              ]
            },
            {
              "type": "FIELD",
              "name": "name",
              "content": {
                "type": "SYMBOL",
                "name": "identifier"
              }
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "FIELD",
                  "name": "type_parameters",
                  "content": {
                    "type": "SYMBOL",
                    "name": "type_parameters"
                  }
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "FIELD",
                  "name": "superclass",
                  "content": {
                    "type": "SYMBOL",
                    "name": "superclass"
                  }
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "FIELD",
                  "name": "interfaces",
                  "content": {
                    "type": "SYMBOL",
                    "name": "interfaces"
                  }
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "FIELD",
              "name": "body",
              "content": {
                "type": "SYMBOL",
                "name": "class_body"
              }
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_metadata"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "_class_modifiers"
            },
            {
              "type": "SYMBOL",
              "name": "mixin_application_class"
            }
          ]
        }
      ]
    },
    "extension_declaration": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_metadata"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "STRING",
              "value": "extension"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "FIELD",
                  "name": "name",
                  "content": {
                    "type": "SYMBOL",
                    "name": "identifier"
                  }
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "FIELD",
                  "name": "type_parameters",
                  "content": {
                    "type": "SYMBOL",
                    "name": "type_parameters"
                  }
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "STRING",
              "value": "on"
            },
            {
              "type": "FIELD",
              "name": "class",
              "content": {
                "type": "SYMBOL",
                "name": "_type"
              }
            },
            {
              "type": "FIELD",
              "name": "body",
              "content": {
                "type": "SYMBOL",
                "name": "extension_body"
              }
            }
          ]
        }
      ]
    },
    "extension_type_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_metadata"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "extension"
        },
        {
          "type": "STRING",
          "value": "type"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "const_builtin"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "type_parameters",
              "content": {
                "type": "SYMBOL",
                "name": "type_parameters"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "representation",
          "content": {
            "type": "SYMBOL",
            "name": "representation_declaration"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "interfaces",
              "content": {
                "type": "SYMBOL",
                "name": "interfaces"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "class_body"
          }
        }
      ]
    },
    "representation_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "."
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "identifier"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_new_builtin"
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_metadata"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "_type"
          }
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "_metadata": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "REPEAT1",
        "content": {
          "type": "SYMBOL",
          "name": "annotation"
        }
      }
    },
    "type_parameters": {
      "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": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_metadata"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "identifier"
              },
              "named": true,
              "value": "type_identifier"
            },
            {
              "type": "SYMBOL",
              "name": "nullable_type"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "nullable_type"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "type_bound"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "type_bound": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "extends"
        },
        {
          "type": "SYMBOL",
          "name": "_type_not_void"
        }
      ]
    },
    "superclass": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "extends"
            },
            {
              "type": "SYMBOL",
              "name": "_type_not_void"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "mixins"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "mixins"
        }
      ]
    },
    "mixins": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "with"
        },
        {
          "type": "SYMBOL",
          "name": "_type_not_void_list"
        }
      ]
    },
    "mixin_application_class": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "type_parameters"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "="
        },
        {
          "type": "SYMBOL",
          "name": "mixin_application"
        },
        {
          "type": "SYMBOL",
          "name": "_semicolon"
        }
      ]
    },
    "mixin_application": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_type_not_void"
        },
        {
          "type": "SYMBOL",
          "name": "mixins"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "interfaces"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "mixin_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_metadata"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "base"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "mixin"
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "type_parameters"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "on"
                },
                {
                  "type": "SYMBOL",
                  "name": "_type_not_void_list"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "interfaces"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "class_body"
        }
      ]
    },
    "interfaces": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_implements"
        },
        {
          "type": "SYMBOL",
          "name": "_type_not_void_list"
        }
      ]
    },
    "interface_type_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_type"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": ","
              },
              {
                "type": "SYMBOL",
                "name": "_type"
              }
            ]
          }
        }
      ]
    },
    "class_body": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "_metadata"
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              },
              {
                "type": "SYMBOL",
                "name": "_class_member_definition"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "extension_body": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "_metadata"
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  },
                  {
                    "type": "SYMBOL",
                    "name": "declaration"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "_semicolon"
                  }
                ]
              },
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "_metadata"
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  },
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "method_signature"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "function_body"
                      }
                    ]
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "_class_member_definition": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "declaration"
            },
            {
              "type": "SYMBOL",
              "name": "_semicolon"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "method_signature"
            },
            {
              "type": "SYMBOL",
              "name": "function_body"
            }
          ]
        }
      ]
    },
    "getter_signature": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_type"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_get"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_native"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "setter_signature": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_type"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_set"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "SYMBOL",
          "name": "_formal_parameter_part"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_native"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "method_signature": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "constructor_signature"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "initializers"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "factory_constructor_signature"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_static"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "function_signature"
                },
                {
                  "type": "SYMBOL",
                  "name": "getter_signature"
                },
                {
                  "type": "SYMBOL",
                  "name": "setter_signature"
                }
              ]
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "operator_signature"
        }
      ]
    },
    "declaration": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "constant_constructor_signature"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "redirection"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "initializers"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "constructor_signature"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "redirection"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "initializers"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_external"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "const_builtin"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "factory_constructor_signature"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "const_builtin"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "factory_constructor_signature"
            },
            {
              "type": "SYMBOL",
              "name": "_native"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_external"
            },
            {
              "type": "SYMBOL",
              "name": "constant_constructor_signature"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "redirecting_factory_constructor_signature"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_external"
            },
            {
              "type": "SYMBOL",
              "name": "constructor_signature"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_external_builtin"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_static"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "getter_signature"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_external_and_static"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "setter_signature"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_external"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "operator_signature"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_external_and_static"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "function_signature"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_static"
            },
            {
              "type": "SYMBOL",
              "name": "function_signature"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_static"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "_final_or_const"
                    },
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "_type"
                        },
                        {
                          "type": "BLANK"
                        }
                      ]
                    },
                    {
                      "type": "SYMBOL",
                      "name": "static_final_declaration_list"
                    }
                  ]
                },
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "_late_builtin"
                    },
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "SEQ",
                          "members": [
                            {
                              "type": "SYMBOL",
                              "name": "final_builtin"
                            },
                            {
                              "type": "CHOICE",
                              "members": [
                                {
                                  "type": "SYMBOL",
                                  "name": "_type"
                                },
                                {
                                  "type": "BLANK"
                                }
                              ]
                            },
                            {
                              "type": "SYMBOL",
                              "name": "initialized_identifier_list"
                            }
                          ]
                        },
                        {
                          "type": "SEQ",
                          "members": [
                            {
                              "type": "CHOICE",
                              "members": [
                                {
                                  "type": "SYMBOL",
                                  "name": "_type"
                                },
                                {
                                  "type": "SYMBOL",
                                  "name": "inferred_type"
                                }
                              ]
                            },
                            {
                              "type": "SYMBOL",
                              "name": "initialized_identifier_list"
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "_type"
                        },
                        {
                          "type": "SYMBOL",
                          "name": "inferred_type"
                        }
                      ]
                    },
                    {
                      "type": "SYMBOL",
                      "name": "initialized_identifier_list"
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_covariant"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "_late_builtin"
                    },
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "SEQ",
                          "members": [
                            {
                              "type": "SYMBOL",
                              "name": "final_builtin"
                            },
                            {
                              "type": "CHOICE",
                              "members": [
                                {
                                  "type": "SYMBOL",
                                  "name": "_type"
                                },
                                {
                                  "type": "BLANK"
                                }
                              ]
                            },
                            {
                              "type": "SYMBOL",
                              "name": "identifier_list"
                            }
                          ]
                        },
                        {
                          "type": "SEQ",
                          "members": [
                            {
                              "type": "CHOICE",
                              "members": [
                                {
                                  "type": "SYMBOL",
                                  "name": "_type"
                                },
                                {
                                  "type": "SYMBOL",
                                  "name": "inferred_type"
                                }
                              ]
                            },
                            {
                              "type": "SYMBOL",
                              "name": "initialized_identifier_list"
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "_type"
                        },
                        {
                          "type": "SYMBOL",
                          "name": "inferred_type"
                        }
                      ]
                    },
                    {
                      "type": "SYMBOL",
                      "name": "initialized_identifier_list"
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_late_builtin"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "final_builtin"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_type"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "initialized_identifier_list"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_late_builtin"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "_var_or_type"
            },
            {
              "type": "SYMBOL",
              "name": "initialized_identifier_list"
            }
          ]
        }
      ]
    },
    "identifier_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": ","
              },
              {
                "type": "SYMBOL",
                "name": "identifier"
              }
            ]
          }
        }
      ]
    },
    "initialized_identifier_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "initialized_identifier"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": ","
              },
              {
                "type": "SYMBOL",
                "name": "initialized_identifier"
              }
            ]
          }
        }
      ]
    },
    "initialized_identifier": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "="
                },
                {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "static_final_declaration_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "static_final_declaration"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": ","
              },
              {
                "type": "SYMBOL",
                "name": "static_final_declaration"
              }
            ]
          }
        }
      ]
    },
    "binary_operator": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "multiplicative_operator"
        },
        {
          "type": "SYMBOL",
          "name": "additive_operator"
        },
        {
          "type": "SYMBOL",
          "name": "shift_operator"
        },
        {
          "type": "SYMBOL",
          "name": "relational_operator"
        },
        {
          "type": "STRING",
          "value": "=="
        },
        {
          "type": "SYMBOL",
          "name": "bitwise_operator"
        }
      ]
    },
    "operator_signature": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_type"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_operator"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "~"
            },
            {
              "type": "SYMBOL",
              "name": "binary_operator"
            },
            {
              "type": "STRING",
              "value": "[]"
            },
            {
              "type": "STRING",
              "value": "[]="
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "formal_parameter_list"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_native"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "static_final_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "STRING",
          "value": "="
        },
        {
          "type": "SYMBOL",
          "name": "_expression"
        }
      ]
    },
    "_external_and_static": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_external"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_static"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_static_or_covariant": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_covariant"
        },
        {
          "type": "SYMBOL",
          "name": "_static"
        }
      ]
    },
    "_final_or_const": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "final_builtin"
        },
        {
          "type": "SYMBOL",
          "name": "const_builtin"
        }
      ]
    },
    "static_initializer": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_static"
        },
        {
          "type": "SYMBOL",
          "name": "block"
        }
      ]
    },
    "initializers": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "initializer_list_entry"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "initializer_list_entry"
                  }
                ]
              }
            }
          ]
        }
      ]
    },
    "initializer_list_entry": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "super"
            },
            {
              "type": "SYMBOL",
              "name": "arguments"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "super"
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "."
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "identifier"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_new_builtin"
                    }
                  ]
                },
                {
                  "type": "SYMBOL",
                  "name": "arguments"
                }
              ]
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "field_initializer"
        },
        {
          "type": "SYMBOL",
          "name": "assertion"
        }
      ]
    },
    "field_initializer": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "this"
                },
                {
                  "type": "STRING",
                  "value": "."
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "STRING",
          "value": "="
        },
        {
          "type": "SYMBOL",
          "name": "_real_expression"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "cascade_section"
          }
        }
      ]
    },
    "factory_constructor_signature": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_factory"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "identifier"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": "."
                  },
                  {
                    "type": "SYMBOL",
                    "name": "identifier"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "formal_parameter_list"
        }
      ]
    },
    "redirecting_factory_constructor_signature": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "const_builtin"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_factory"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "identifier"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": "."
                  },
                  {
                    "type": "SYMBOL",
                    "name": "identifier"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "formal_parameter_list"
        },
        {
          "type": "STRING",
          "value": "="
        },
        {
          "type": "SYMBOL",
          "name": "_type_not_void"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "."
                },
                {
                  "type": "SYMBOL",
                  "name": "identifier"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "redirection": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "SYMBOL",
          "name": "this"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "."
                },
                {
                  "type": "SYMBOL",
                  "name": "_identifier_or_new"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "arguments"
        }
      ]
    },
    "constructor_signature": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "identifier"
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "."
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_identifier_or_new"
                      }
                    ]
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "parameters",
          "content": {
            "type": "SYMBOL",
            "name": "formal_parameter_list"
          }
        }
      ]
    },
    "constant_constructor_signature": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "const_builtin"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "identifier"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "."
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_identifier_or_new"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "formal_parameter_list"
        }
      ]
    },
    "constructor_body": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "explicit_constructor_invocation"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_statement"
          }
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "explicit_constructor_invocation": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "FIELD",
                  "name": "type_arguments",
                  "content": {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "type_arguments"
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  }
                },
                {
                  "type": "FIELD",
                  "name": "constructor",
                  "content": {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "this"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "super"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "FIELD",
                  "name": "object",
                  "content": {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "_ambiguous_name"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_primary"
                      }
                    ]
                  }
                },
                {
                  "type": "STRING",
                  "value": "."
                },
                {
                  "type": "FIELD",
                  "name": "type_arguments",
                  "content": {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "type_arguments"
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  }
                },
                {
                  "type": "FIELD",
                  "name": "constructor",
                  "content": {
                    "type": "SYMBOL",
                    "name": "super"
                  }
                }
              ]
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "arguments",
          "content": {
            "type": "SYMBOL",
            "name": "arguments"
          }
        },
        {
          "type": "SYMBOL",
          "name": "_semicolon"
        }
      ]
    },
    "_ambiguous_name": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "SYMBOL",
          "name": "scoped_identifier"
        }
      ]
    },
    "scoped_identifier": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "scope",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "identifier"
              },
              {
                "type": "SYMBOL",
                "name": "scoped_identifier"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "."
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        }
      ]
    },
    "variable_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_declared_identifier"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": ","
                },
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "identifier"
                    },
                    {
                      "type": "REPEAT",
                      "content": {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "STRING",
                            "value": ","
                          },
                          {
                            "type": "SYMBOL",
                            "name": "identifier"
                          }
                        ]
                      }
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "initialized_variable_definition": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_declared_identifier"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "PREC",
                  "value": 0,
                  "content": {
                    "type": "STRING",
                    "value": "="
                  }
                },
                {
                  "type": "FIELD",
                  "name": "value",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_expression"
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": ","
              },
              {
                "type": "SYMBOL",
                "name": "initialized_identifier"
              }
            ]
          }
        }
      ]
    },
    "_declared_identifier": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_metadata"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_covariant"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_final_const_var_or_type"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        }
      ]
    },
    "_final_const_var_or_type": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_late_builtin"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "final_builtin"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_type"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "const_builtin"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_type"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_late_builtin"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "_var_or_type"
            }
          ]
        }
      ]
    },
    "_type": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "function_type"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "nullable_type"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_type_not_function"
        }
      ]
    },
    "_type_not_function": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_type_not_void_not_function"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "record_type"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "nullable_type"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "void_type"
        }
      ]
    },
    "_type_not_void_not_function": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_type_name"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "type_arguments"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "nullable_type"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_function_builtin_identifier"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "nullable_type"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        }
      ]
    },
    "function_type": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_function_type_tails"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_type_not_function"
            },
            {
              "type": "SYMBOL",
              "name": "_function_type_tails"
            }
          ]
        }
      ]
    },
    "_function_type_tails": {
      "type": "REPEAT1",
      "content": {
        "type": "SYMBOL",
        "name": "_function_type_tail"
      }
    },
    "_function_type_tail": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_function_builtin_identifier"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "type_parameters"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "nullable_type"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "parameter_type_list"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "nullable_type"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "parameter_type_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "normal_parameter_type"
                    },
                    {
                      "type": "REPEAT",
                      "content": {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "STRING",
                            "value": ","
                          },
                          {
                            "type": "SYMBOL",
                            "name": "normal_parameter_type"
                          }
                        ]
                      }
                    },
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "STRING",
                          "value": ","
                        },
                        {
                          "type": "BLANK"
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "normal_parameter_type"
                        },
                        {
                          "type": "REPEAT",
                          "content": {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "STRING",
                                "value": ","
                              },
                              {
                                "type": "SYMBOL",
                                "name": "normal_parameter_type"
                              }
                            ]
                          }
                        }
                      ]
                    },
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "SYMBOL",
                      "name": "optional_parameter_types"
                    }
                  ]
                },
                {
                  "type": "SYMBOL",
                  "name": "optional_parameter_types"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "normal_parameter_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_metadata"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "typed_identifier"
            },
            {
              "type": "SYMBOL",
              "name": "_type"
            }
          ]
        }
      ]
    },
    "optional_parameter_types": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "optional_positional_parameter_types"
        },
        {
          "type": "SYMBOL",
          "name": "named_parameter_types"
        }
      ]
    },
    "optional_positional_parameter_types": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "normal_parameter_type"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "normal_parameter_type"
                  }
                ]
              }
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": ","
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        },
        {
          "type": "STRING",
          "value": "]"
        }
      ]
    },
    "named_parameter_types": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_named_parameter_type"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "_named_parameter_type"
                  }
                ]
              }
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": ","
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "_named_parameter_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_metadata"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_required"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "typed_identifier"
        }
      ]
    },
    "_type_not_void": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "function_type"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "nullable_type"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "record_type"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "nullable_type"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_type_not_void_not_function"
        }
      ]
    },
    "record_type": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "("
            },
            {
              "type": "STRING",
              "value": ")"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "("
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "record_type_field"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "record_type_field"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "STRING",
              "value": ","
            },
            {
              "type": "STRING",
              "value": "{"
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "record_type_named_field"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "record_type_named_field"
                      }
                    ]
                  }
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "STRING",
              "value": "}"
            },
            {
              "type": "STRING",
              "value": ")"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "("
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "record_type_field"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "record_type_field"
                      }
                    ]
                  }
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "STRING",
              "value": ")"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "("
            },
            {
              "type": "STRING",
              "value": "{"
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "record_type_named_field"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "record_type_named_field"
                      }
                    ]
                  }
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "STRING",
              "value": "}"
            },
            {
              "type": "STRING",
              "value": ")"
            }
          ]
        }
      ]
    },
    "record_type_field": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_metadata"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_type"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "identifier"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "record_type_named_field": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_metadata"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "typed_identifier"
        }
      ]
    },
    "_type_not_void_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_type_not_void"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": ","
              },
              {
                "type": "SYMBOL",
                "name": "_type_not_void"
              }
            ]
          }
        }
      ]
    },
    "_type_name": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          },
          "named": true,
          "value": "type_identifier"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_type_dot_identifier"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_type_dot_identifier": {
      "type": "PREC_RIGHT",
      "value": 19,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "."
          },
          {
            "type": "ALIAS",
            "content": {
              "type": "SYMBOL",
              "name": "identifier"
            },
            "named": true,
            "value": "type_identifier"
          }
        ]
      }
    },
    "typed_identifier": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_type"
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        }
      ]
    },
    "nullable_type": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "STRING",
        "value": "?"
      }
    },
    "nullable_selector": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "STRING",
        "value": "?"
      }
    },
    "floating_point_type": {
      "type": "TOKEN",
      "content": {
        "type": "STRING",
        "value": "double"
      }
    },
    "boolean_type": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "STRING",
        "value": "bool"
      }
    },
    "void_type": {
      "type": "TOKEN",
      "content": {
        "type": "STRING",
        "value": "void"
      }
    },
    "_var_or_type": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_type"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "inferred_type"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_type"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        }
      ]
    },
    "_final_var_or_type": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "inferred_type"
        },
        {
          "type": "SYMBOL",
          "name": "final_builtin"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "final_builtin"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "_type"
            }
          ]
        }
      ]
    },
    "inferred_type": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "STRING",
        "value": "var"
      }
    },
    "function_body": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": "async"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "STRING",
              "value": "=>"
            },
            {
              "type": "SYMBOL",
              "name": "_expression"
            },
            {
              "type": "SYMBOL",
              "name": "_semicolon"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "async"
                    },
                    {
                      "type": "STRING",
                      "value": "async*"
                    },
                    {
                      "type": "STRING",
                      "value": "sync*"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "block"
            }
          ]
        }
      ]
    },
    "function_expression_body": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": "async"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "STRING",
              "value": "=>"
            },
            {
              "type": "SYMBOL",
              "name": "_expression"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "async"
                    },
                    {
                      "type": "STRING",
                      "value": "async*"
                    },
                    {
                      "type": "STRING",
                      "value": "sync*"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "block"
            }
          ]
        }
      ]
    },
    "function_signature": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_type"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "ALIAS",
                "content": {
                  "type": "SYMBOL",
                  "name": "_get"
                },
                "named": true,
                "value": "identifier"
              },
              {
                "type": "ALIAS",
                "content": {
                  "type": "SYMBOL",
                  "name": "_set"
                },
                "named": true,
                "value": "identifier"
              },
              {
                "type": "SYMBOL",
                "name": "identifier"
              }
            ]
          }
        },
        {
          "type": "SYMBOL",
          "name": "_formal_parameter_part"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_native"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_formal_parameter_part": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "type_parameters"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "formal_parameter_list"
        }
      ]
    },
    "formal_parameter_list": {
      "type": "SYMBOL",
      "name": "_strict_formal_parameter_list"
    },
    "_strict_formal_parameter_list": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "("
            },
            {
              "type": "STRING",
              "value": ")"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "("
            },
            {
              "type": "SYMBOL",
              "name": "_normal_formal_parameters"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": ","
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "STRING",
              "value": ")"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "("
            },
            {
              "type": "SYMBOL",
              "name": "_normal_formal_parameters"
            },
            {
              "type": "STRING",
              "value": ","
            },
            {
              "type": "SYMBOL",
              "name": "optional_formal_parameters"
            },
            {
              "type": "STRING",
              "value": ")"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "("
            },
            {
              "type": "SYMBOL",
              "name": "optional_formal_parameters"
            },
            {
              "type": "STRING",
              "value": ")"
            }
          ]
        }
      ]
    },
    "_normal_formal_parameters": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "formal_parameter"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": ","
              },
              {
                "type": "SYMBOL",
                "name": "formal_parameter"
              }
            ]
          }
        }
      ]
    },
    "optional_formal_parameters": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_optional_postional_formal_parameters"
        },
        {
          "type": "SYMBOL",
          "name": "_named_formal_parameters"
        }
      ]
    },
    "positional_parameters": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_default_formal_parameter"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "_default_formal_parameter"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "STRING",
          "value": "]"
        }
      ]
    },
    "_optional_postional_formal_parameters": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_default_formal_parameter"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "_default_formal_parameter"
                  }
                ]
              }
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": ","
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        },
        {
          "type": "STRING",
          "value": "]"
        }
      ]
    },
    "_named_formal_parameters": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_default_named_parameter"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "_default_named_parameter"
                  }
                ]
              }
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": ","
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "formal_parameter": {
      "type": "SYMBOL",
      "name": "_normal_formal_parameter"
    },
    "_default_formal_parameter": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "formal_parameter"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "="
                },
                {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_default_named_parameter": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_metadata"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_required"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "formal_parameter"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "="
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_metadata"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_required"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "formal_parameter"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ":"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        }
      ]
    },
    "_normal_formal_parameter": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_metadata"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_function_formal_parameter"
            },
            {
              "type": "SYMBOL",
              "name": "_simple_formal_parameter"
            },
            {
              "type": "SYMBOL",
              "name": "constructor_param"
            },
            {
              "type": "SYMBOL",
              "name": "super_formal_parameter"
            }
          ]
        }
      ]
    },
    "_function_formal_parameter": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_covariant"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_type"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "SYMBOL",
          "name": "_formal_parameter_part"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "nullable_type"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_simple_formal_parameter": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_declared_identifier"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_covariant"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "identifier"
            }
          ]
        }
      ]
    },
    "super_formal_parameter": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_final_const_var_or_type"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "super"
        },
        {
          "type": "STRING",
          "value": "."
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_formal_parameter_part"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "constructor_param": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_final_const_var_or_type"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "this"
        },
        {
          "type": "STRING",
          "value": "."
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_formal_parameter_part"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "local_variable_declaration": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_metadata"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "initialized_variable_definition"
            },
            {
              "type": "SYMBOL",
              "name": "_semicolon"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_metadata"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "pattern_variable_declaration"
            },
            {
              "type": "SYMBOL",
              "name": "_semicolon"
            }
          ]
        }
      ]
    },
    "script_tag": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "#!"
        },
        {
          "type": "PATTERN",
          "value": ".+"
        },
        {
          "type": "STRING",
          "value": "\n"
        }
      ]
    },
    "library_name": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_metadata"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "library"
        },
        {
          "type": "SYMBOL",
          "name": "dotted_identifier_list"
        },
        {
          "type": "SYMBOL",
          "name": "_semicolon"
        }
      ]
    },
    "dotted_identifier_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "."
              },
              {
                "type": "SYMBOL",
                "name": "identifier"
              }
            ]
          }
        }
      ]
    },
    "_identifier_or_new": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "SYMBOL",
          "name": "_new_builtin"
        }
      ]
    },
    "qualified": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_type_name"
            },
            {
              "type": "STRING",
              "value": "."
            },
            {
              "type": "SYMBOL",
              "name": "_identifier_or_new"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_type_name"
            },
            {
              "type": "STRING",
              "value": "."
            },
            {
              "type": "SYMBOL",
              "name": "_type_name"
            },
            {
              "type": "STRING",
              "value": "."
            },
            {
              "type": "SYMBOL",
              "name": "_identifier_or_new"
            }
          ]
        }
      ]
    },
    "_as": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "STRING",
        "value": "as"
      }
    },
    "break_builtin": {
      "type": "TOKEN",
      "content": {
        "type": "STRING",
        "value": "break"
      }
    },
    "assert_builtin": {
      "type": "TOKEN",
      "content": {
        "type": "STRING",
        "value": "assert"
      }
    },
    "case_builtin": {
      "type": "TOKEN",
      "content": {
        "type": "STRING",
        "value": "case"
      }
    },
    "rethrow_builtin": {
      "type": "TOKEN",
      "content": {
        "type": "STRING",
        "value": "rethrow"
      }
    },
    "part_of_builtin": {
      "type": "TOKEN",
      "content": {
        "type": "STRING",
        "value": "part of"
      }
    },
    "_covariant": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "STRING",
        "value": "covariant"
      }
    },
    "_deferred": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "STRING",
        "value": "deferred"
      }
    },
    "_dynamic": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "STRING",
        "value": "dynamic"
      }
    },
    "_export": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "STRING",
        "value": "export"
      }
    },
    "_external": {
      "type": "SYMBOL",
      "name": "_external_builtin"
    },
    "_factory": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "STRING",
        "value": "factory"
      }
    },
    "_function_builtin_identifier": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "STRING",
        "value": "Function"
      }
    },
    "_get": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "STRING",
        "value": "get"
      }
    },
    "_native": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "native"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "string_literal"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_implements": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "STRING",
        "value": "implements"
      }
    },
    "_import": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "STRING",
        "value": "import"
      }
    },
    "interface": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "STRING",
        "value": "interface"
      }
    },
    "base": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "STRING",
        "value": "base"
      }
    },
    "abstract": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "STRING",
        "value": "abstract"
      }
    },
    "sealed": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "STRING",
        "value": "sealed"
      }
    },
    "_library": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "STRING",
        "value": "library"
      }
    },
    "_operator": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "STRING",
        "value": "operator"
      }
    },
    "mixin": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "STRING",
        "value": "mixin"
      }
    },
    "_part": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "STRING",
        "value": "part"
      }
    },
    "_required": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "STRING",
        "value": "required"
      }
    },
    "_set": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "STRING",
        "value": "set"
      }
    },
    "_static": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "STRING",
        "value": "static"
      }
    },
    "_typedef": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "STRING",
        "value": "typedef"
      }
    },
    "_new_builtin": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "STRING",
        "value": "new"
      }
    },
    "logical_and_operator": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "STRING",
        "value": "&&"
      }
    },
    "logical_or_operator": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "STRING",
        "value": "||"
      }
    },
    "const_builtin": {
      "type": "TOKEN",
      "content": {
        "type": "STRING",
        "value": "const"
      }
    },
    "final_builtin": {
      "type": "TOKEN",
      "content": {
        "type": "STRING",
        "value": "final"
      }
    },
    "_late_builtin": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "STRING",
        "value": "late"
      }
    },
    "_external_builtin": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "STRING",
        "value": "external"
      }
    },
    "this": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "STRING",
        "value": "this"
      }
    },
    "super": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "STRING",
        "value": "super"
      }
    },
    "label": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "STRING",
          "value": ":"
        }
      ]
    },
    "_semicolon": {
      "type": "TOKEN",
      "content": {
        "type": "STRING",
        "value": ";"
      }
    },
    "identifier": {
      "type": "PATTERN",
      "value": "[a-zA-Z_$][\\w$]*"
    },
    "identifier_dollar_escaped": {
      "type": "PATTERN",
      "value": "([a-zA-Z_]|(\\\\\\$))([\\w]|(\\\\\\$))*"
    },
    "comment": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_block_comment"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "//"
            },
            {
              "type": "PATTERN",
              "value": "([^/\\n].*)?"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "/*"
            },
            {
              "type": "PATTERN",
              "value": "[^*]*\\*+([^/*][^*]*\\*+)*"
            },
            {
              "type": "STRING",
              "value": "/"
            }
          ]
        }
      ]
    },
    "documentation_comment": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_documentation_block_comment"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "///"
            },
            {
              "type": "PATTERN",
              "value": ".*"
            }
          ]
        }
      ]
    }
  },
  "extras": [
    {
      "type": "SYMBOL",
      "name": "comment"
    },
    {
      "type": "SYMBOL",
      "name": "documentation_comment"
    },
    {
      "type": "PATTERN",
      "value": "\\s"
    }
  ],
  "conflicts": [
    [
      "_record_literal_no_const",
      "record_field"
    ],
    [
      "block",
      "set_or_map_literal"
    ],
    [
      "_type_name",
      "_primary",
      "function_signature"
    ],
    [
      "_primary",
      "function_signature"
    ],
    [
      "_primary",
      "_type_name"
    ],
    [
      "_primary",
      "_simple_formal_parameter"
    ],
    [
      "_primary",
      "_type_name",
      "_function_formal_parameter"
    ],
    [
      "_primary",
      "constructor_param"
    ],
    [
      "_normal_formal_parameters"
    ],
    [
      "_declared_identifier"
    ],
    [
      "equality_expression"
    ],
    [
      "record_type_field",
      "_function_formal_parameter",
      "_var_or_type"
    ],
    [
      "typed_identifier",
      "_var_or_type",
      "_function_formal_parameter"
    ],
    [
      "_type_name",
      "_simple_formal_parameter"
    ],
    [
      "_type_not_function",
      "_type_not_void"
    ],
    [
      "switch_statement_case"
    ],
    [
      "declaration",
      "_external_and_static"
    ],
    [
      "constructor_signature",
      "_formal_parameter_part"
    ],
    [
      "_cascade_subsection"
    ],
    [
      "_expression"
    ],
    [
      "_postfix_expression"
    ],
    [
      "pattern_variable_declaration",
      "_var_or_type"
    ],
    [
      "_final_const_var_or_type",
      "pattern_variable_declaration"
    ],
    [
      "type_arguments",
      "relational_operator"
    ],
    [
      "prefix_operator",
      "constant_pattern"
    ],
    [
      "_primary",
      "constant_pattern",
      "_type_name"
    ],
    [
      "_literal",
      "constant_pattern"
    ],
    [
      "_primary",
      "constant_pattern"
    ],
    [
      "_final_var_or_type"
    ],
    [
      "_primary",
      "constant_pattern",
      "_type_name",
      "_simple_formal_parameter"
    ],
    [
      "_parenthesized_pattern",
      "_pattern_field"
    ],
    [
      "record_type_field",
      "_var_or_type",
      "_final_var_or_type",
      "_function_formal_parameter"
    ],
    [
      "_var_or_type",
      "_final_var_or_type"
    ],
    [
      "_final_const_var_or_type",
      "_final_var_or_type"
    ],
    [
      "_var_or_type",
      "_for_loop_parts",
      "pattern_variable_declaration"
    ],
    [
      "pattern_variable_declaration",
      "_for_loop_parts",
      "_final_const_var_or_type"
    ],
    [
      "_var_or_type",
      "_final_var_or_type",
      "_function_formal_parameter"
    ],
    [
      "set_or_map_literal",
      "map_pattern"
    ],
    [
      "list_literal",
      "list_pattern"
    ],
    [
      "constant_pattern",
      "_type_name"
    ],
    [
      "_pattern_field",
      "label"
    ],
    [
      "constructor_tearoff",
      "_identifier_or_new"
    ],
    [
      "_primary",
      "constant_pattern",
      "_simple_formal_parameter"
    ],
    [
      "record_type_field",
      "_final_var_or_type"
    ],
    [
      "set_or_map_literal",
      "constant_pattern"
    ],
    [
      "list_literal",
      "constant_pattern"
    ],
    [
      "_var_or_type",
      "function_signature"
    ],
    [
      "_var_or_type",
      "_function_formal_parameter"
    ],
    [
      "relational_operator",
      "type_arguments",
      "type_parameters"
    ],
    [
      "_var_or_type"
    ],
    [
      "_final_const_var_or_type",
      "const_object_expression"
    ],
    [
      "_final_const_var_or_type"
    ],
    [
      "type_parameter",
      "_type_name"
    ],
    [
      "_normal_formal_parameter"
    ],
    [
      "_assignable_selector_part",
      "selector"
    ],
    [
      "_assignable_selector_part",
      "_postfix_expression"
    ],
    [
      "_primary",
      "assignable_expression"
    ],
    [
      "_simple_formal_parameter",
      "assignable_expression"
    ],
    [
      "assignable_expression",
      "_postfix_expression"
    ],
    [
      "_type_name",
      "_function_formal_parameter"
    ],
    [
      "_type_name"
    ],
    [
      "_primary",
      "_type_name",
      "assignable_expression"
    ],
    [
      "_type_name",
      "function_signature"
    ],
    [
      "declaration",
      "_external"
    ],
    [
      "relational_expression"
    ],
    [
      "_function_type_tail"
    ],
    [
      "_type_not_void_not_function",
      "_function_type_tail"
    ],
    [
      "_type_not_void"
    ],
    [
      "_type_not_void_not_function"
    ],
    [
      "super_formal_parameter",
      "unconditional_assignable_selector"
    ]
  ],
  "precedences": [],
  "externals": [
    {
      "type": "SYMBOL",
      "name": "_template_chars_double"
    },
    {
      "type": "SYMBOL",
      "name": "_template_chars_single"
    },
    {
      "type": "SYMBOL",
      "name": "_template_chars_double_single"
    },
    {
      "type": "SYMBOL",
      "name": "_template_chars_single_single"
    },
    {
      "type": "SYMBOL",
      "name": "_template_chars_raw_slash"
    },
    {
      "type": "SYMBOL",
      "name": "_block_comment"
    },
    {
      "type": "SYMBOL",
      "name": "_documentation_block_comment"
    }
  ],
  "inline": [
    "_ambiguous_name",
    "_class_member_definition",
    "_if_null_expression"
  ],
  "supertypes": [
    "_declaration",
    "_statement",
    "_literal"
  ],
  "reserved": {}
}