{
  "name": "kotlin",
  "word": "_alpha_identifier",
  "rules": {
    "source_file": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "shebang_line"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "file_annotation"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "package_header"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "import_list"
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_statement"
              },
              {
                "type": "SYMBOL",
                "name": "_semi"
              }
            ]
          }
        }
      ]
    },
    "shebang_line": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "#!"
        },
        {
          "type": "PATTERN",
          "value": "[^\\r\\n]*"
        }
      ]
    },
    "file_annotation": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "@"
        },
        {
          "type": "STRING",
          "value": "file"
        },
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "["
                },
                {
                  "type": "REPEAT1",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_unescaped_annotation"
                  }
                },
                {
                  "type": "STRING",
                  "value": "]"
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "_unescaped_annotation"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_semi"
        }
      ]
    },
    "package_header": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "package"
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "SYMBOL",
          "name": "_semi"
        }
      ]
    },
    "import_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT1",
          "content": {
            "type": "SYMBOL",
            "name": "import_header"
          }
        },
        {
          "type": "SYMBOL",
          "name": "_import_list_delimiter"
        }
      ]
    },
    "import_header": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "import"
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ".*"
                    }
                  ]
                },
                {
                  "type": "SYMBOL",
                  "name": "import_alias"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_semi"
        }
      ]
    },
    "import_alias": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "as"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "simple_identifier"
          },
          "named": true,
          "value": "type_identifier"
        }
      ]
    },
    "top_level_object": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_declaration"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_semi"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "type_alias": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "modifiers",
              "content": {
                "type": "SYMBOL",
                "name": "modifiers"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "typealias"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "ALIAS",
            "content": {
              "type": "SYMBOL",
              "name": "simple_identifier"
            },
            "named": true,
            "value": "type_identifier"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "type_parameters",
              "content": {
                "type": "SYMBOL",
                "name": "type_parameters"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "="
        },
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "_type"
          }
        }
      ]
    },
    "_declaration": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "class_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "object_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "function_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "property_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "getter"
        },
        {
          "type": "SYMBOL",
          "name": "setter"
        },
        {
          "type": "SYMBOL",
          "name": "type_alias"
        }
      ]
    },
    "class_declaration": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "modifiers",
                    "content": {
                      "type": "SYMBOL",
                      "name": "modifiers"
                    }
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              },
              {
                "type": "FIELD",
                "name": "kind",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "class"
                    },
                    {
                      "type": "STRING",
                      "value": "interface"
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "name",
                "content": {
                  "type": "ALIAS",
                  "content": {
                    "type": "SYMBOL",
                    "name": "simple_identifier"
                  },
                  "named": true,
                  "value": "type_identifier"
                }
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "type_parameters",
                    "content": {
                      "type": "SYMBOL",
                      "name": "type_parameters"
                    }
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "primary_constructor",
                    "content": {
                      "type": "SYMBOL",
                      "name": "primary_constructor"
                    }
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ":"
                      },
                      {
                        "type": "FIELD",
                        "name": "delegation_specifiers",
                        "content": {
                          "type": "SYMBOL",
                          "name": "_delegation_specifiers"
                        }
                      }
                    ]
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "constraints",
                    "content": {
                      "type": "SYMBOL",
                      "name": "type_constraints"
                    }
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "body",
                    "content": {
                      "type": "SYMBOL",
                      "name": "class_body"
                    }
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "modifiers",
                    "content": {
                      "type": "SYMBOL",
                      "name": "modifiers"
                    }
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              },
              {
                "type": "FIELD",
                "name": "kind",
                "content": {
                  "type": "STRING",
                  "value": "enum"
                }
              },
              {
                "type": "STRING",
                "value": "class"
              },
              {
                "type": "FIELD",
                "name": "name",
                "content": {
                  "type": "ALIAS",
                  "content": {
                    "type": "SYMBOL",
                    "name": "simple_identifier"
                  },
                  "named": true,
                  "value": "type_identifier"
                }
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "type_parameters",
                    "content": {
                      "type": "SYMBOL",
                      "name": "type_parameters"
                    }
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "primary_constructor",
                    "content": {
                      "type": "SYMBOL",
                      "name": "primary_constructor"
                    }
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ":"
                      },
                      {
                        "type": "FIELD",
                        "name": "delegation_specifiers",
                        "content": {
                          "type": "SYMBOL",
                          "name": "_delegation_specifiers"
                        }
                      }
                    ]
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "constraints",
                    "content": {
                      "type": "SYMBOL",
                      "name": "type_constraints"
                    }
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "body",
                    "content": {
                      "type": "SYMBOL",
                      "name": "enum_class_body"
                    }
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          }
        ]
      }
    },
    "primary_constructor": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "FIELD",
                      "name": "modifiers",
                      "content": {
                        "type": "SYMBOL",
                        "name": "modifiers"
                      }
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "STRING",
                  "value": "constructor"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "parameters",
          "content": {
            "type": "SYMBOL",
            "name": "_class_parameters"
          }
        }
      ]
    },
    "class_body": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_class_member_declarations"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "_class_parameters": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "class_parameter"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "class_parameter"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ","
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "class_parameter": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "modifiers"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": "val"
                },
                {
                  "type": "STRING",
                  "value": "var"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "simple_identifier"
        },
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "SYMBOL",
          "name": "_type"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "="
                },
                {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_delegation_specifiers": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "delegation_specifier"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": ","
                },
                {
                  "type": "SYMBOL",
                  "name": "delegation_specifier"
                }
              ]
            }
          }
        ]
      }
    },
    "delegation_specifier": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "constructor_invocation"
          },
          {
            "type": "SYMBOL",
            "name": "explicit_delegation"
          },
          {
            "type": "SYMBOL",
            "name": "user_type"
          },
          {
            "type": "SYMBOL",
            "name": "function_type"
          }
        ]
      }
    },
    "constructor_invocation": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "user_type"
        },
        {
          "type": "SYMBOL",
          "name": "value_arguments"
        }
      ]
    },
    "_annotated_delegation_specifier": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "annotation"
          }
        },
        {
          "type": "SYMBOL",
          "name": "delegation_specifier"
        }
      ]
    },
    "explicit_delegation": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "user_type"
            },
            {
              "type": "SYMBOL",
              "name": "function_type"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "by"
        },
        {
          "type": "SYMBOL",
          "name": "_expression"
        }
      ]
    },
    "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": "type_parameter_modifiers"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "simple_identifier"
          },
          "named": true,
          "value": "type_identifier"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": ":"
                },
                {
                  "type": "SYMBOL",
                  "name": "_type"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "type_constraints": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "where"
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "type_constraint"
              },
              {
                "type": "REPEAT",
                "content": {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "SYMBOL",
                      "name": "type_constraint"
                    }
                  ]
                }
              }
            ]
          }
        ]
      }
    },
    "type_constraint": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "annotation"
          }
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "simple_identifier"
          },
          "named": true,
          "value": "type_identifier"
        },
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "SYMBOL",
          "name": "_type"
        }
      ]
    },
    "_class_member_declarations": {
      "type": "REPEAT1",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_class_member_declaration"
          },
          {
            "type": "SYMBOL",
            "name": "_semi"
          }
        ]
      }
    },
    "_class_member_declaration": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "companion_object"
        },
        {
          "type": "SYMBOL",
          "name": "anonymous_initializer"
        },
        {
          "type": "SYMBOL",
          "name": "secondary_constructor"
        }
      ]
    },
    "anonymous_initializer": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "init"
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "_block"
          }
        }
      ]
    },
    "companion_object": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "modifiers",
              "content": {
                "type": "SYMBOL",
                "name": "modifiers"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "companion"
        },
        {
          "type": "STRING",
          "value": "object"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "name",
              "content": {
                "type": "ALIAS",
                "content": {
                  "type": "SYMBOL",
                  "name": "simple_identifier"
                },
                "named": true,
                "value": "type_identifier"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": ":"
                },
                {
                  "type": "FIELD",
                  "name": "delegation_specifiers",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_delegation_specifiers"
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "body",
              "content": {
                "type": "SYMBOL",
                "name": "class_body"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "function_value_parameters": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_function_value_parameter"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_function_value_parameter"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ","
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "_function_value_parameter": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "parameter_modifiers"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "parameter"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "="
                },
                {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_receiver_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "type_modifiers"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_type_reference"
            },
            {
              "type": "SYMBOL",
              "name": "parenthesized_type"
            },
            {
              "type": "SYMBOL",
              "name": "nullable_type"
            }
          ]
        }
      ]
    },
    "function_declaration": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "FIELD",
                "name": "modifiers",
                "content": {
                  "type": "SYMBOL",
                  "name": "modifiers"
                }
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "STRING",
            "value": "fun"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "FIELD",
                "name": "type_parameters",
                "content": {
                  "type": "SYMBOL",
                  "name": "type_parameters"
                }
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "receiver",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_receiver_type"
                    }
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "."
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "FIELD",
            "name": "name",
            "content": {
              "type": "SYMBOL",
              "name": "simple_identifier"
            }
          },
          {
            "type": "FIELD",
            "name": "parameters",
            "content": {
              "type": "SYMBOL",
              "name": "function_value_parameters"
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ":"
                  },
                  {
                    "type": "FIELD",
                    "name": "return_type",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_type"
                    }
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "FIELD",
                "name": "constraints",
                "content": {
                  "type": "SYMBOL",
                  "name": "type_constraints"
                }
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "FIELD",
                "name": "body",
                "content": {
                  "type": "SYMBOL",
                  "name": "function_body"
                }
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "function_body": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_block"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "="
            },
            {
              "type": "SYMBOL",
              "name": "_expression"
            }
          ]
        }
      ]
    },
    "variable_declaration": {
      "type": "PREC_LEFT",
      "value": 3,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "simple_identifier"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ":"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "_type"
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "property_declaration": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "FIELD",
                "name": "modifiers",
                "content": {
                  "type": "SYMBOL",
                  "name": "modifiers"
                }
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "FIELD",
            "name": "kind",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": "val"
                },
                {
                  "type": "STRING",
                  "value": "var"
                }
              ]
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "FIELD",
                "name": "type_parameters",
                "content": {
                  "type": "SYMBOL",
                  "name": "type_parameters"
                }
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "receiver",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_receiver_type"
                    }
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "."
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "FIELD",
                "name": "variable",
                "content": {
                  "type": "SYMBOL",
                  "name": "variable_declaration"
                }
              },
              {
                "type": "FIELD",
                "name": "variables",
                "content": {
                  "type": "SYMBOL",
                  "name": "multi_variable_declaration"
                }
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "FIELD",
                "name": "constraints",
                "content": {
                  "type": "SYMBOL",
                  "name": "type_constraints"
                }
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "="
                      },
                      {
                        "type": "FIELD",
                        "name": "expression",
                        "content": {
                          "type": "SYMBOL",
                          "name": "_expression"
                        }
                      }
                    ]
                  },
                  {
                    "type": "FIELD",
                    "name": "delegate",
                    "content": {
                      "type": "SYMBOL",
                      "name": "property_delegate"
                    }
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": ";"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "getter",
                    "content": {
                      "type": "SYMBOL",
                      "name": "getter"
                    }
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "setter",
                    "content": {
                      "type": "SYMBOL",
                      "name": "setter"
                    }
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          }
        ]
      }
    },
    "property_delegate": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "by"
        },
        {
          "type": "SYMBOL",
          "name": "_expression"
        }
      ]
    },
    "getter": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "modifiers"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "STRING",
            "value": "get"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": "("
                  },
                  {
                    "type": "STRING",
                    "value": ")"
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "STRING",
                            "value": ":"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "_type"
                          }
                        ]
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  },
                  {
                    "type": "SYMBOL",
                    "name": "function_body"
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "setter": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "modifiers"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "STRING",
            "value": "set"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": "("
                  },
                  {
                    "type": "SYMBOL",
                    "name": "parameter_with_optional_type"
                  },
                  {
                    "type": "STRING",
                    "value": ")"
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "STRING",
                            "value": ":"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "_type"
                          }
                        ]
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  },
                  {
                    "type": "SYMBOL",
                    "name": "function_body"
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "parameters_with_optional_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "parameter_with_optional_type"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "parameter_with_optional_type"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "parameter_with_optional_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "parameter_modifiers"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "simple_identifier"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": ":"
                },
                {
                  "type": "SYMBOL",
                  "name": "_type"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "parameter": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "simple_identifier"
        },
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "SYMBOL",
          "name": "_type"
        }
      ]
    },
    "object_declaration": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "FIELD",
                "name": "modifiers",
                "content": {
                  "type": "SYMBOL",
                  "name": "modifiers"
                }
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "STRING",
            "value": "object"
          },
          {
            "type": "FIELD",
            "name": "name",
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "simple_identifier"
              },
              "named": true,
              "value": "type_identifier"
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ":"
                  },
                  {
                    "type": "FIELD",
                    "name": "delegation_specifiers",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_delegation_specifiers"
                    }
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "FIELD",
                "name": "body",
                "content": {
                  "type": "SYMBOL",
                  "name": "class_body"
                }
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "secondary_constructor": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "modifiers",
              "content": {
                "type": "SYMBOL",
                "name": "modifiers"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "constructor"
        },
        {
          "type": "FIELD",
          "name": "parameters",
          "content": {
            "type": "SYMBOL",
            "name": "function_value_parameters"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": ":"
                },
                {
                  "type": "FIELD",
                  "name": "delegation",
                  "content": {
                    "type": "SYMBOL",
                    "name": "constructor_delegation_call"
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "body",
              "content": {
                "type": "SYMBOL",
                "name": "_block"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "constructor_delegation_call": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "this"
            },
            {
              "type": "STRING",
              "value": "super"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "value_arguments"
        }
      ]
    },
    "enum_class_body": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_enum_entries"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": ";"
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "_class_member_declarations"
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "_enum_entries": {
      "type": "SEQ",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "enum_entry"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "enum_entry"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ","
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "enum_entry": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "modifiers"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "simple_identifier"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "value_arguments"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "class_body"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "type_modifiers"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "parenthesized_type"
            },
            {
              "type": "SYMBOL",
              "name": "nullable_type"
            },
            {
              "type": "SYMBOL",
              "name": "_type_reference"
            },
            {
              "type": "SYMBOL",
              "name": "function_type"
            },
            {
              "type": "SYMBOL",
              "name": "not_nullable_type"
            }
          ]
        }
      ]
    },
    "_type_reference": {
      "type": "PREC_LEFT",
      "value": 1,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "user_type"
          },
          {
            "type": "STRING",
            "value": "dynamic"
          }
        ]
      }
    },
    "not_nullable_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "type_modifiers"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "user_type"
            },
            {
              "type": "SYMBOL",
              "name": "parenthesized_user_type"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "&"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "type_modifiers"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "user_type"
            },
            {
              "type": "SYMBOL",
              "name": "parenthesized_user_type"
            }
          ]
        }
      ]
    },
    "nullable_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_type_reference"
            },
            {
              "type": "SYMBOL",
              "name": "parenthesized_type"
            }
          ]
        },
        {
          "type": "REPEAT1",
          "content": {
            "type": "SYMBOL",
            "name": "_quest"
          }
        }
      ]
    },
    "_quest": {
      "type": "STRING",
      "value": "?"
    },
    "user_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_simple_user_type"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "."
              },
              {
                "type": "SYMBOL",
                "name": "_simple_user_type"
              }
            ]
          }
        }
      ]
    },
    "_simple_user_type": {
      "type": "PREC_RIGHT",
      "value": 2,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "SYMBOL",
              "name": "simple_identifier"
            },
            "named": true,
            "value": "type_identifier"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "type_arguments"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "type_projection": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "type_projection_modifiers"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "_type"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "*"
        }
      ]
    },
    "type_projection_modifiers": {
      "type": "REPEAT1",
      "content": {
        "type": "SYMBOL",
        "name": "_type_projection_modifier"
      }
    },
    "_type_projection_modifier": {
      "type": "SYMBOL",
      "name": "variance_modifier"
    },
    "function_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_simple_user_type"
                },
                {
                  "type": "STRING",
                  "value": "."
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "function_type_parameters"
        },
        {
          "type": "STRING",
          "value": "->"
        },
        {
          "type": "SYMBOL",
          "name": "_type"
        }
      ]
    },
    "function_type_parameters": {
      "type": "PREC_LEFT",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "("
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "parameter"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_type"
                      }
                    ]
                  },
                  {
                    "type": "REPEAT",
                    "content": {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "STRING",
                          "value": ","
                        },
                        {
                          "type": "CHOICE",
                          "members": [
                            {
                              "type": "SYMBOL",
                              "name": "parameter"
                            },
                            {
                              "type": "SYMBOL",
                              "name": "_type"
                            }
                          ]
                        }
                      ]
                    }
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "STRING",
            "value": ")"
          }
        ]
      }
    },
    "parenthesized_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "_type"
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "parenthesized_user_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "user_type"
            },
            {
              "type": "SYMBOL",
              "name": "parenthesized_user_type"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "statements": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_statement"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_semi"
              },
              {
                "type": "SYMBOL",
                "name": "_statement"
              }
            ]
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_semi"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_statement": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_declaration"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "REPEAT",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "label"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "annotation"
                  }
                ]
              }
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "assignment"
                },
                {
                  "type": "SYMBOL",
                  "name": "_loop_statement"
                },
                {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              ]
            }
          ]
        }
      ]
    },
    "label": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "PATTERN",
            "value": "[a-zA-Z_][a-zA-Z_0-9]*"
          },
          {
            "type": "STRING",
            "value": "@"
          }
        ]
      }
    },
    "control_structure_body": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_block"
        },
        {
          "type": "SYMBOL",
          "name": "_statement"
        }
      ]
    },
    "_block": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "{"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "statements"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "STRING",
            "value": "}"
          }
        ]
      }
    },
    "_loop_statement": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "for_statement"
        },
        {
          "type": "SYMBOL",
          "name": "while_statement"
        },
        {
          "type": "SYMBOL",
          "name": "do_while_statement"
        }
      ]
    },
    "for_statement": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "for"
          },
          {
            "type": "STRING",
            "value": "("
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SYMBOL",
              "name": "annotation"
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "FIELD",
                "name": "variable",
                "content": {
                  "type": "SYMBOL",
                  "name": "variable_declaration"
                }
              },
              {
                "type": "FIELD",
                "name": "variables",
                "content": {
                  "type": "SYMBOL",
                  "name": "multi_variable_declaration"
                }
              }
            ]
          },
          {
            "type": "STRING",
            "value": "in"
          },
          {
            "type": "FIELD",
            "name": "value",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          },
          {
            "type": "STRING",
            "value": ")"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "FIELD",
                "name": "body",
                "content": {
                  "type": "SYMBOL",
                  "name": "control_structure_body"
                }
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "while_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "while"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "FIELD",
          "name": "condition",
          "content": {
            "type": "SYMBOL",
            "name": "_expression"
          }
        },
        {
          "type": "STRING",
          "value": ")"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ";"
            },
            {
              "type": "FIELD",
              "name": "body",
              "content": {
                "type": "SYMBOL",
                "name": "control_structure_body"
              }
            }
          ]
        }
      ]
    },
    "do_while_statement": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "do"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "FIELD",
                "name": "body",
                "content": {
                  "type": "SYMBOL",
                  "name": "control_structure_body"
                }
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "STRING",
            "value": "while"
          },
          {
            "type": "STRING",
            "value": "("
          },
          {
            "type": "FIELD",
            "name": "condition",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          },
          {
            "type": "STRING",
            "value": ")"
          }
        ]
      }
    },
    "_semi": {
      "type": "SYMBOL",
      "name": "_automatic_semicolon"
    },
    "assignment": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PREC_LEFT",
          "value": 1,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "directly_assignable_expression"
              },
              {
                "type": "SYMBOL",
                "name": "_assignment_and_operator"
              },
              {
                "type": "SYMBOL",
                "name": "_expression"
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 1,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "directly_assignable_expression"
              },
              {
                "type": "STRING",
                "value": "="
              },
              {
                "type": "SYMBOL",
                "name": "_expression"
              }
            ]
          }
        }
      ]
    },
    "_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_unary_expression"
        },
        {
          "type": "SYMBOL",
          "name": "_binary_expression"
        },
        {
          "type": "SYMBOL",
          "name": "_primary_expression"
        }
      ]
    },
    "_unary_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "postfix_expression"
        },
        {
          "type": "SYMBOL",
          "name": "call_expression"
        },
        {
          "type": "SYMBOL",
          "name": "indexing_expression"
        },
        {
          "type": "SYMBOL",
          "name": "navigation_expression"
        },
        {
          "type": "SYMBOL",
          "name": "prefix_expression"
        },
        {
          "type": "SYMBOL",
          "name": "as_expression"
        },
        {
          "type": "SYMBOL",
          "name": "spread_expression"
        }
      ]
    },
    "postfix_expression": {
      "type": "PREC_LEFT",
      "value": 16,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_expression"
          },
          {
            "type": "SYMBOL",
            "name": "_postfix_unary_operator"
          }
        ]
      }
    },
    "call_expression": {
      "type": "PREC_LEFT",
      "value": 16,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_expression"
          },
          {
            "type": "SYMBOL",
            "name": "call_suffix"
          }
        ]
      }
    },
    "indexing_expression": {
      "type": "PREC_LEFT",
      "value": 16,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_expression"
          },
          {
            "type": "SYMBOL",
            "name": "indexing_suffix"
          }
        ]
      }
    },
    "navigation_expression": {
      "type": "PREC_LEFT",
      "value": 16,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_expression"
          },
          {
            "type": "SYMBOL",
            "name": "navigation_suffix"
          }
        ]
      }
    },
    "prefix_expression": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "annotation"
              },
              {
                "type": "SYMBOL",
                "name": "label"
              },
              {
                "type": "SYMBOL",
                "name": "_prefix_unary_operator"
              }
            ]
          },
          {
            "type": "SYMBOL",
            "name": "_expression"
          }
        ]
      }
    },
    "as_expression": {
      "type": "PREC_LEFT",
      "value": 13,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_expression"
          },
          {
            "type": "SYMBOL",
            "name": "_as_operator"
          },
          {
            "type": "SYMBOL",
            "name": "_type"
          }
        ]
      }
    },
    "spread_expression": {
      "type": "PREC_LEFT",
      "value": 2,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "*"
          },
          {
            "type": "SYMBOL",
            "name": "_expression"
          }
        ]
      }
    },
    "_binary_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "multiplicative_expression"
        },
        {
          "type": "SYMBOL",
          "name": "additive_expression"
        },
        {
          "type": "SYMBOL",
          "name": "range_expression"
        },
        {
          "type": "SYMBOL",
          "name": "infix_expression"
        },
        {
          "type": "SYMBOL",
          "name": "elvis_expression"
        },
        {
          "type": "SYMBOL",
          "name": "check_expression"
        },
        {
          "type": "SYMBOL",
          "name": "comparison_expression"
        },
        {
          "type": "SYMBOL",
          "name": "equality_expression"
        },
        {
          "type": "SYMBOL",
          "name": "comparison_expression"
        },
        {
          "type": "SYMBOL",
          "name": "equality_expression"
        },
        {
          "type": "SYMBOL",
          "name": "conjunction_expression"
        },
        {
          "type": "SYMBOL",
          "name": "disjunction_expression"
        }
      ]
    },
    "multiplicative_expression": {
      "type": "PREC_LEFT",
      "value": 12,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_expression"
          },
          {
            "type": "SYMBOL",
            "name": "_multiplicative_operator"
          },
          {
            "type": "SYMBOL",
            "name": "_expression"
          }
        ]
      }
    },
    "additive_expression": {
      "type": "PREC_LEFT",
      "value": 11,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_expression"
          },
          {
            "type": "SYMBOL",
            "name": "_additive_operator"
          },
          {
            "type": "SYMBOL",
            "name": "_expression"
          }
        ]
      }
    },
    "range_expression": {
      "type": "PREC_LEFT",
      "value": 10,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_expression"
          },
          {
            "type": "STRING",
            "value": ".."
          },
          {
            "type": "SYMBOL",
            "name": "_expression"
          }
        ]
      }
    },
    "infix_expression": {
      "type": "PREC_LEFT",
      "value": 9,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_expression"
          },
          {
            "type": "SYMBOL",
            "name": "simple_identifier"
          },
          {
            "type": "SYMBOL",
            "name": "_expression"
          }
        ]
      }
    },
    "elvis_expression": {
      "type": "PREC_LEFT",
      "value": 8,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_expression"
          },
          {
            "type": "STRING",
            "value": "?:"
          },
          {
            "type": "SYMBOL",
            "name": "_expression"
          }
        ]
      }
    },
    "check_expression": {
      "type": "PREC_LEFT",
      "value": 7,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_expression"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "_in_operator"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "_expression"
                  }
                ]
              },
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "_is_operator"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "_type"
                  }
                ]
              }
            ]
          }
        ]
      }
    },
    "comparison_expression": {
      "type": "PREC_LEFT",
      "value": 6,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_expression"
          },
          {
            "type": "SYMBOL",
            "name": "_comparison_operator"
          },
          {
            "type": "SYMBOL",
            "name": "_expression"
          }
        ]
      }
    },
    "equality_expression": {
      "type": "PREC_LEFT",
      "value": 5,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_expression"
          },
          {
            "type": "SYMBOL",
            "name": "_equality_operator"
          },
          {
            "type": "SYMBOL",
            "name": "_expression"
          }
        ]
      }
    },
    "conjunction_expression": {
      "type": "PREC_LEFT",
      "value": 4,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_expression"
          },
          {
            "type": "STRING",
            "value": "&&"
          },
          {
            "type": "SYMBOL",
            "name": "_expression"
          }
        ]
      }
    },
    "disjunction_expression": {
      "type": "PREC_LEFT",
      "value": 3,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_expression"
          },
          {
            "type": "STRING",
            "value": "||"
          },
          {
            "type": "SYMBOL",
            "name": "_expression"
          }
        ]
      }
    },
    "indexing_suffix": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_expression"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "_expression"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "STRING",
          "value": "]"
        }
      ]
    },
    "navigation_suffix": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_member_access_operator"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "simple_identifier"
            },
            {
              "type": "SYMBOL",
              "name": "parenthesized_expression"
            },
            {
              "type": "STRING",
              "value": "class"
            }
          ]
        }
      ]
    },
    "call_suffix": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "type_arguments"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "value_arguments"
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  },
                  {
                    "type": "SYMBOL",
                    "name": "annotated_lambda"
                  }
                ]
              },
              {
                "type": "SYMBOL",
                "name": "value_arguments"
              }
            ]
          }
        ]
      }
    },
    "annotated_lambda": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "annotation"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "label"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "lambda_literal"
        }
      ]
    },
    "type_arguments": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "<"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "type_projection"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "type_projection"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "STRING",
          "value": ">"
        }
      ]
    },
    "value_arguments": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "value_argument"
                    },
                    {
                      "type": "REPEAT",
                      "content": {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "STRING",
                            "value": ","
                          },
                          {
                            "type": "SYMBOL",
                            "name": "value_argument"
                          }
                        ]
                      }
                    }
                  ]
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "value_argument": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "annotation"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "simple_identifier"
                },
                {
                  "type": "STRING",
                  "value": "="
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "*"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_expression"
        }
      ]
    },
    "_primary_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "parenthesized_expression"
        },
        {
          "type": "SYMBOL",
          "name": "simple_identifier"
        },
        {
          "type": "SYMBOL",
          "name": "_literal_constant"
        },
        {
          "type": "SYMBOL",
          "name": "string_literal"
        },
        {
          "type": "SYMBOL",
          "name": "callable_reference"
        },
        {
          "type": "SYMBOL",
          "name": "_function_literal"
        },
        {
          "type": "SYMBOL",
          "name": "object_literal"
        },
        {
          "type": "SYMBOL",
          "name": "collection_literal"
        },
        {
          "type": "SYMBOL",
          "name": "this_expression"
        },
        {
          "type": "SYMBOL",
          "name": "super_expression"
        },
        {
          "type": "SYMBOL",
          "name": "if_expression"
        },
        {
          "type": "SYMBOL",
          "name": "when_expression"
        },
        {
          "type": "SYMBOL",
          "name": "try_expression"
        },
        {
          "type": "SYMBOL",
          "name": "jump_expression"
        }
      ]
    },
    "parenthesized_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "_expression"
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "collection_literal": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "SYMBOL",
          "name": "_expression"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": ","
              },
              {
                "type": "SYMBOL",
                "name": "_expression"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "]"
        }
      ]
    },
    "_literal_constant": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "boolean_literal"
        },
        {
          "type": "SYMBOL",
          "name": "integer_literal"
        },
        {
          "type": "SYMBOL",
          "name": "hex_literal"
        },
        {
          "type": "SYMBOL",
          "name": "bin_literal"
        },
        {
          "type": "SYMBOL",
          "name": "character_literal"
        },
        {
          "type": "SYMBOL",
          "name": "real_literal"
        },
        {
          "type": "STRING",
          "value": "null"
        },
        {
          "type": "SYMBOL",
          "name": "long_literal"
        },
        {
          "type": "SYMBOL",
          "name": "unsigned_literal"
        }
      ]
    },
    "string_literal": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_string_start"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_string_content"
              },
              {
                "type": "SYMBOL",
                "name": "_interpolation"
              }
            ]
          }
        },
        {
          "type": "SYMBOL",
          "name": "_string_end"
        }
      ]
    },
    "line_string_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "${"
        },
        {
          "type": "SYMBOL",
          "name": "_expression"
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "_interpolation": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "${"
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "_expression"
              },
              "named": true,
              "value": "interpolated_expression"
            },
            {
              "type": "STRING",
              "value": "}"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "$"
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "simple_identifier"
              },
              "named": true,
              "value": "interpolated_identifier"
            }
          ]
        }
      ]
    },
    "lambda_literal": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "{"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "FIELD",
                        "name": "parameters",
                        "content": {
                          "type": "SYMBOL",
                          "name": "lambda_parameters"
                        }
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  },
                  {
                    "type": "STRING",
                    "value": "->"
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "FIELD",
                "name": "body",
                "content": {
                  "type": "SYMBOL",
                  "name": "statements"
                }
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "STRING",
            "value": "}"
          }
        ]
      }
    },
    "multi_variable_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "variable_declaration"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "variable_declaration"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "lambda_parameters": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_lambda_parameter"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": ","
              },
              {
                "type": "SYMBOL",
                "name": "_lambda_parameter"
              }
            ]
          }
        }
      ]
    },
    "_lambda_parameter": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "variable_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "multi_variable_declaration"
        }
      ]
    },
    "anonymous_function": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "fun"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "_simple_user_type"
                      },
                      {
                        "type": "REPEAT",
                        "content": {
                          "type": "SEQ",
                          "members": [
                            {
                              "type": "STRING",
                              "value": "."
                            },
                            {
                              "type": "SYMBOL",
                              "name": "_simple_user_type"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  {
                    "type": "STRING",
                    "value": "."
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "FIELD",
            "name": "parameters",
            "content": {
              "type": "SYMBOL",
              "name": "function_value_parameters"
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ":"
                  },
                  {
                    "type": "FIELD",
                    "name": "return_type",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_type"
                    }
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "FIELD",
                "name": "body",
                "content": {
                  "type": "SYMBOL",
                  "name": "function_body"
                }
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "_function_literal": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "lambda_literal"
        },
        {
          "type": "SYMBOL",
          "name": "anonymous_function"
        }
      ]
    },
    "object_literal": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "object"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": ":"
                },
                {
                  "type": "FIELD",
                  "name": "delegation_specifiers",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_delegation_specifiers"
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "class_body"
          }
        }
      ]
    },
    "this_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "this"
        },
        {
          "type": "SYMBOL",
          "name": "_this_at"
        }
      ]
    },
    "super_expression": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "STRING",
            "value": "super"
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "super"
              },
              {
                "type": "STRING",
                "value": "<"
              },
              {
                "type": "SYMBOL",
                "name": "_type"
              },
              {
                "type": "STRING",
                "value": ">"
              }
            ]
          },
          {
            "type": "SYMBOL",
            "name": "_super_at"
          }
        ]
      }
    },
    "if_expression": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "if"
          },
          {
            "type": "STRING",
            "value": "("
          },
          {
            "type": "FIELD",
            "name": "condition",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          },
          {
            "type": "STRING",
            "value": ")"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "FIELD",
                "name": "consequence",
                "content": {
                  "type": "SYMBOL",
                  "name": "control_structure_body"
                }
              },
              {
                "type": "STRING",
                "value": ";"
              },
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "FIELD",
                        "name": "consequence",
                        "content": {
                          "type": "SYMBOL",
                          "name": "control_structure_body"
                        }
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ";"
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  },
                  {
                    "type": "STRING",
                    "value": "else"
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "FIELD",
                        "name": "alternative",
                        "content": {
                          "type": "SYMBOL",
                          "name": "control_structure_body"
                        }
                      },
                      {
                        "type": "STRING",
                        "value": ";"
                      }
                    ]
                  }
                ]
              }
            ]
          }
        ]
      }
    },
    "when_subject": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SYMBOL",
                    "name": "annotation"
                  }
                },
                {
                  "type": "STRING",
                  "value": "val"
                },
                {
                  "type": "SYMBOL",
                  "name": "variable_declaration"
                },
                {
                  "type": "STRING",
                  "value": "="
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_expression"
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "when_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "when"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "subject",
              "content": {
                "type": "SYMBOL",
                "name": "when_subject"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "FIELD",
            "name": "entry",
            "content": {
              "type": "SYMBOL",
              "name": "when_entry"
            }
          }
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "when_entry": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "FIELD",
                  "name": "condition",
                  "content": {
                    "type": "SYMBOL",
                    "name": "when_condition"
                  }
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "FIELD",
                        "name": "condition",
                        "content": {
                          "type": "SYMBOL",
                          "name": "when_condition"
                        }
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "STRING",
              "value": "else"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "->"
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "control_structure_body"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_semi"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "when_condition": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_expression"
        },
        {
          "type": "SYMBOL",
          "name": "range_test"
        },
        {
          "type": "SYMBOL",
          "name": "type_test"
        }
      ]
    },
    "range_test": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_in_operator"
        },
        {
          "type": "SYMBOL",
          "name": "_expression"
        }
      ]
    },
    "type_test": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_is_operator"
        },
        {
          "type": "SYMBOL",
          "name": "_type"
        }
      ]
    },
    "try_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "try"
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "_block"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "REPEAT1",
                  "content": {
                    "type": "FIELD",
                    "name": "catch",
                    "content": {
                      "type": "SYMBOL",
                      "name": "catch_block"
                    }
                  }
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "FIELD",
                      "name": "finally",
                      "content": {
                        "type": "SYMBOL",
                        "name": "finally_block"
                      }
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "finally_block"
            }
          ]
        }
      ]
    },
    "catch_block": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "catch"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "annotation"
          }
        },
        {
          "type": "SYMBOL",
          "name": "simple_identifier"
        },
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "SYMBOL",
          "name": "_type"
        },
        {
          "type": "STRING",
          "value": ")"
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "_block"
          }
        }
      ]
    },
    "finally_block": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "finally"
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "_block"
          }
        }
      ]
    },
    "jump_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PREC_RIGHT",
          "value": 0,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "throw"
              },
              {
                "type": "SYMBOL",
                "name": "_expression"
              }
            ]
          }
        },
        {
          "type": "PREC_RIGHT",
          "value": 0,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "return"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "_return_at"
                  }
                ]
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "_expression"
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "continue"
        },
        {
          "type": "SYMBOL",
          "name": "_continue_at"
        },
        {
          "type": "STRING",
          "value": "break"
        },
        {
          "type": "SYMBOL",
          "name": "_break_at"
        }
      ]
    },
    "callable_reference": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "simple_identifier"
              },
              "named": true,
              "value": "type_identifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "::"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "simple_identifier"
            },
            {
              "type": "STRING",
              "value": "class"
            }
          ]
        }
      ]
    },
    "_assignment_and_operator": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "+="
        },
        {
          "type": "STRING",
          "value": "-="
        },
        {
          "type": "STRING",
          "value": "*="
        },
        {
          "type": "STRING",
          "value": "/="
        },
        {
          "type": "STRING",
          "value": "%="
        }
      ]
    },
    "_equality_operator": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "!="
        },
        {
          "type": "STRING",
          "value": "!=="
        },
        {
          "type": "STRING",
          "value": "=="
        },
        {
          "type": "STRING",
          "value": "==="
        }
      ]
    },
    "_comparison_operator": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "<"
        },
        {
          "type": "STRING",
          "value": ">"
        },
        {
          "type": "STRING",
          "value": "<="
        },
        {
          "type": "STRING",
          "value": ">="
        }
      ]
    },
    "_in_operator": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "in"
        },
        {
          "type": "STRING",
          "value": "!in"
        }
      ]
    },
    "_is_operator": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "is"
        },
        {
          "type": "STRING",
          "value": "!is"
        }
      ]
    },
    "_additive_operator": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "+"
        },
        {
          "type": "STRING",
          "value": "-"
        }
      ]
    },
    "_multiplicative_operator": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "*"
        },
        {
          "type": "STRING",
          "value": "/"
        },
        {
          "type": "STRING",
          "value": "%"
        }
      ]
    },
    "_as_operator": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "as"
        },
        {
          "type": "STRING",
          "value": "as?"
        }
      ]
    },
    "_prefix_unary_operator": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "++"
        },
        {
          "type": "STRING",
          "value": "--"
        },
        {
          "type": "STRING",
          "value": "-"
        },
        {
          "type": "STRING",
          "value": "+"
        },
        {
          "type": "STRING",
          "value": "!"
        }
      ]
    },
    "_postfix_unary_operator": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "++"
        },
        {
          "type": "STRING",
          "value": "--"
        },
        {
          "type": "STRING",
          "value": "!!"
        }
      ]
    },
    "_member_access_operator": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "."
        },
        {
          "type": "STRING",
          "value": "::"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "safe_nav"
          },
          "named": false,
          "value": "?."
        }
      ]
    },
    "_indexing_suffix": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "SYMBOL",
          "name": "_expression"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": ","
              },
              {
                "type": "SYMBOL",
                "name": "_expression"
              }
            ]
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ","
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "]"
        }
      ]
    },
    "_postfix_unary_suffix": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_postfix_unary_operator"
        },
        {
          "type": "SYMBOL",
          "name": "navigation_suffix"
        },
        {
          "type": "SYMBOL",
          "name": "indexing_suffix"
        }
      ]
    },
    "_postfix_unary_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_primary_expression"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_postfix_unary_suffix"
          }
        }
      ]
    },
    "directly_assignable_expression": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_postfix_unary_expression"
          },
          {
            "type": "SYMBOL",
            "name": "simple_identifier"
          }
        ]
      }
    },
    "modifiers": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "REPEAT1",
        "content": {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "annotation"
            },
            {
              "type": "SYMBOL",
              "name": "_modifier"
            }
          ]
        }
      }
    },
    "parameter_modifiers": {
      "type": "REPEAT1",
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "annotation"
          },
          {
            "type": "SYMBOL",
            "name": "parameter_modifier"
          }
        ]
      }
    },
    "_modifier": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "class_modifier"
        },
        {
          "type": "SYMBOL",
          "name": "member_modifier"
        },
        {
          "type": "SYMBOL",
          "name": "visibility_modifier"
        },
        {
          "type": "SYMBOL",
          "name": "function_modifier"
        },
        {
          "type": "SYMBOL",
          "name": "property_modifier"
        },
        {
          "type": "SYMBOL",
          "name": "inheritance_modifier"
        },
        {
          "type": "SYMBOL",
          "name": "parameter_modifier"
        },
        {
          "type": "SYMBOL",
          "name": "platform_modifier"
        }
      ]
    },
    "type_modifiers": {
      "type": "REPEAT1",
      "content": {
        "type": "SYMBOL",
        "name": "_type_modifier"
      }
    },
    "_type_modifier": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "annotation"
        },
        {
          "type": "STRING",
          "value": "suspend"
        }
      ]
    },
    "class_modifier": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "sealed"
        },
        {
          "type": "STRING",
          "value": "annotation"
        },
        {
          "type": "STRING",
          "value": "data"
        },
        {
          "type": "STRING",
          "value": "inner"
        },
        {
          "type": "STRING",
          "value": "value"
        }
      ]
    },
    "member_modifier": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "override"
        },
        {
          "type": "STRING",
          "value": "lateinit"
        }
      ]
    },
    "visibility_modifier": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "public"
        },
        {
          "type": "STRING",
          "value": "private"
        },
        {
          "type": "STRING",
          "value": "internal"
        },
        {
          "type": "STRING",
          "value": "protected"
        }
      ]
    },
    "variance_modifier": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "in"
        },
        {
          "type": "STRING",
          "value": "out"
        }
      ]
    },
    "type_parameter_modifiers": {
      "type": "REPEAT1",
      "content": {
        "type": "SYMBOL",
        "name": "_type_parameter_modifier"
      }
    },
    "_type_parameter_modifier": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "reification_modifier"
        },
        {
          "type": "SYMBOL",
          "name": "variance_modifier"
        },
        {
          "type": "SYMBOL",
          "name": "annotation"
        }
      ]
    },
    "function_modifier": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "tailrec"
        },
        {
          "type": "STRING",
          "value": "operator"
        },
        {
          "type": "STRING",
          "value": "infix"
        },
        {
          "type": "STRING",
          "value": "inline"
        },
        {
          "type": "STRING",
          "value": "external"
        },
        {
          "type": "STRING",
          "value": "suspend"
        }
      ]
    },
    "property_modifier": {
      "type": "STRING",
      "value": "const"
    },
    "inheritance_modifier": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "abstract"
        },
        {
          "type": "STRING",
          "value": "final"
        },
        {
          "type": "STRING",
          "value": "open"
        }
      ]
    },
    "parameter_modifier": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "vararg"
        },
        {
          "type": "STRING",
          "value": "noinline"
        },
        {
          "type": "STRING",
          "value": "crossinline"
        }
      ]
    },
    "reification_modifier": {
      "type": "STRING",
      "value": "reified"
    },
    "platform_modifier": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "expect"
        },
        {
          "type": "STRING",
          "value": "actual"
        }
      ]
    },
    "annotation": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_single_annotation"
        },
        {
          "type": "SYMBOL",
          "name": "_multi_annotation"
        }
      ]
    },
    "_single_annotation": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "@"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "use_site_target"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_unescaped_annotation"
        }
      ]
    },
    "_multi_annotation": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "@"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "use_site_target"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "REPEAT1",
          "content": {
            "type": "SYMBOL",
            "name": "_unescaped_annotation"
          }
        },
        {
          "type": "STRING",
          "value": "]"
        }
      ]
    },
    "use_site_target": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "field"
            },
            {
              "type": "STRING",
              "value": "property"
            },
            {
              "type": "STRING",
              "value": "get"
            },
            {
              "type": "STRING",
              "value": "set"
            },
            {
              "type": "STRING",
              "value": "receiver"
            },
            {
              "type": "STRING",
              "value": "param"
            },
            {
              "type": "STRING",
              "value": "setparam"
            },
            {
              "type": "STRING",
              "value": "delegate"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ":"
        }
      ]
    },
    "_unescaped_annotation": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "constructor_invocation"
        },
        {
          "type": "SYMBOL",
          "name": "user_type"
        }
      ]
    },
    "simple_identifier": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_lexical_identifier"
        },
        {
          "type": "STRING",
          "value": "expect"
        },
        {
          "type": "STRING",
          "value": "data"
        },
        {
          "type": "STRING",
          "value": "inner"
        },
        {
          "type": "STRING",
          "value": "value"
        },
        {
          "type": "STRING",
          "value": "actual"
        },
        {
          "type": "STRING",
          "value": "set"
        },
        {
          "type": "STRING",
          "value": "get"
        }
      ]
    },
    "identifier": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "simple_identifier"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "."
              },
              {
                "type": "SYMBOL",
                "name": "simple_identifier"
              }
            ]
          }
        }
      ]
    },
    "line_comment": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "//"
          },
          {
            "type": "PATTERN",
            "value": ".*"
          }
        ]
      }
    },
    "_return_at": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "return@"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "_lexical_identifier"
          },
          "named": true,
          "value": "label"
        }
      ]
    },
    "_continue_at": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "continue@"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "_lexical_identifier"
          },
          "named": true,
          "value": "label"
        }
      ]
    },
    "_break_at": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "break@"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "_lexical_identifier"
          },
          "named": true,
          "value": "label"
        }
      ]
    },
    "_this_at": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "this@"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "_lexical_identifier"
          },
          "named": true,
          "value": "type_identifier"
        }
      ]
    },
    "_super_at": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "super@"
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "_lexical_identifier"
              },
              "named": true,
              "value": "type_identifier"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "super"
            },
            {
              "type": "STRING",
              "value": "<"
            },
            {
              "type": "SYMBOL",
              "name": "_type"
            },
            {
              "type": "STRING",
              "value": ">"
            },
            {
              "type": "IMMEDIATE_TOKEN",
              "content": {
                "type": "STRING",
                "value": "@"
              }
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "_lexical_identifier"
              },
              "named": true,
              "value": "type_identifier"
            }
          ]
        }
      ]
    },
    "real_literal": {
      "type": "TOKEN",
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "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": "TOKEN",
                        "content": {
                          "type": "SEQ",
                          "members": [
                            {
                              "type": "PATTERN",
                              "value": "[eE]"
                            },
                            {
                              "type": "CHOICE",
                              "members": [
                                {
                                  "type": "PATTERN",
                                  "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": "CHOICE",
                        "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": "BLANK"
                          }
                        ]
                      },
                      {
                        "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": "TOKEN",
                            "content": {
                              "type": "SEQ",
                              "members": [
                                {
                                  "type": "PATTERN",
                                  "value": "[eE]"
                                },
                                {
                                  "type": "CHOICE",
                                  "members": [
                                    {
                                      "type": "PATTERN",
                                      "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": "CHOICE",
                "members": [
                  {
                    "type": "PATTERN",
                    "value": "[fF]"
                  },
                  {
                    "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": "[fF]"
              }
            ]
          }
        ]
      }
    },
    "integer_literal": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "PATTERN",
                "value": "[1-9]"
              },
              {
                "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]+"
                      }
                    ]
                  }
                }
              ]
            }
          }
        ]
      }
    },
    "hex_literal": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "0"
          },
          {
            "type": "PATTERN",
            "value": "[xX]"
          },
          {
            "type": "TOKEN",
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "PATTERN",
                  "value": "[0-9a-fA-F]+"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "PATTERN",
                        "value": "_+"
                      },
                      {
                        "type": "PATTERN",
                        "value": "[0-9a-fA-F]+"
                      }
                    ]
                  }
                }
              ]
            }
          }
        ]
      }
    },
    "bin_literal": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "0"
          },
          {
            "type": "PATTERN",
            "value": "[bB]"
          },
          {
            "type": "TOKEN",
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "PATTERN",
                  "value": "[01]"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "PATTERN",
                        "value": "_+"
                      },
                      {
                        "type": "PATTERN",
                        "value": "[01]"
                      }
                    ]
                  }
                }
              ]
            }
          }
        ]
      }
    },
    "unsigned_literal": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "integer_literal"
            },
            {
              "type": "SYMBOL",
              "name": "hex_literal"
            },
            {
              "type": "SYMBOL",
              "name": "bin_literal"
            }
          ]
        },
        {
          "type": "PATTERN",
          "value": "[uU]"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "L"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "long_literal": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "integer_literal"
            },
            {
              "type": "SYMBOL",
              "name": "hex_literal"
            },
            {
              "type": "SYMBOL",
              "name": "bin_literal"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "L"
        }
      ]
    },
    "boolean_literal": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "true"
        },
        {
          "type": "STRING",
          "value": "false"
        }
      ]
    },
    "character_literal": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "'"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "character_escape_seq"
            },
            {
              "type": "PATTERN",
              "value": "[^\\n\\r'\\\\]"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "'"
        }
      ]
    },
    "character_escape_seq": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_uni_character_literal"
        },
        {
          "type": "SYMBOL",
          "name": "_escaped_identifier"
        }
      ]
    },
    "_lexical_identifier": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_alpha_identifier"
        },
        {
          "type": "SYMBOL",
          "name": "_backtick_identifier"
        }
      ]
    },
    "_alpha_identifier": {
      "type": "PATTERN",
      "value": "[\\p{L}_][\\p{L}_\\p{Nd}]*"
    },
    "_backtick_identifier": {
      "type": "PATTERN",
      "value": "`[^\\r\\n`]+`"
    },
    "_uni_character_literal": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "\\u"
        },
        {
          "type": "PATTERN",
          "value": "[0-9a-fA-F]{4}"
        }
      ]
    },
    "_escaped_identifier": {
      "type": "PATTERN",
      "value": "\\\\[tbrn'\"\\\\$]"
    }
  },
  "extras": [
    {
      "type": "SYMBOL",
      "name": "line_comment"
    },
    {
      "type": "SYMBOL",
      "name": "multiline_comment"
    },
    {
      "type": "PATTERN",
      "value": "\\s+"
    }
  ],
  "conflicts": [
    [
      "_primary_expression",
      "callable_reference"
    ],
    [
      "constructor_invocation",
      "_unescaped_annotation"
    ],
    [
      "platform_modifier",
      "simple_identifier"
    ],
    [
      "class_modifier",
      "simple_identifier"
    ],
    [
      "_postfix_unary_expression",
      "_expression"
    ],
    [
      "call_expression",
      "range_expression",
      "comparison_expression"
    ],
    [
      "call_expression",
      "elvis_expression",
      "comparison_expression"
    ],
    [
      "call_expression",
      "check_expression",
      "comparison_expression"
    ],
    [
      "call_expression",
      "additive_expression",
      "comparison_expression"
    ],
    [
      "call_expression",
      "infix_expression",
      "comparison_expression"
    ],
    [
      "call_expression",
      "multiplicative_expression",
      "comparison_expression"
    ],
    [
      "type_arguments",
      "_comparison_operator"
    ],
    [
      "_statement",
      "prefix_expression"
    ],
    [
      "_statement",
      "prefix_expression",
      "modifiers"
    ],
    [
      "prefix_expression",
      "when_subject"
    ],
    [
      "prefix_expression",
      "value_argument"
    ],
    [
      "user_type"
    ],
    [
      "user_type",
      "anonymous_function"
    ],
    [
      "user_type",
      "function_type"
    ],
    [
      "annotated_lambda",
      "modifiers"
    ],
    [
      "setter",
      "simple_identifier"
    ],
    [
      "getter",
      "simple_identifier"
    ],
    [
      "parameter_modifiers",
      "_type_modifier"
    ],
    [
      "type_modifiers"
    ],
    [
      "not_nullable_type"
    ]
  ],
  "precedences": [],
  "externals": [
    {
      "type": "SYMBOL",
      "name": "_automatic_semicolon"
    },
    {
      "type": "SYMBOL",
      "name": "_import_list_delimiter"
    },
    {
      "type": "SYMBOL",
      "name": "safe_nav"
    },
    {
      "type": "SYMBOL",
      "name": "multiline_comment"
    },
    {
      "type": "SYMBOL",
      "name": "_string_start"
    },
    {
      "type": "SYMBOL",
      "name": "_string_end"
    },
    {
      "type": "SYMBOL",
      "name": "_string_content"
    }
  ],
  "inline": [],
  "supertypes": []
}

